source file: mills2.txt Date: Sun, 3 Nov 1996 12:08:05 -0800 Subject: non-realtime microtuned MIDI From: bf250@freenet.carleton.ca (John Sankey) I have a program that takes a plain single-block MIDI file, adds pitch bends at the beginning of 12 channels, then puts each note in a different channel (but leaves them in 1 block), to tune harpsichord music to historical tunings. It seems to work on all computer cards and synths (at least 10,000 people have downloaded my files to date, see http://www.ncf.carleton.ca/~bf250/harpsichord.html for links). Since there are 15 channels in GM (one being the reserved "drum" channel), that gives room for 3 enharmonics. When I record a mean-tone piece, I play it ignoring enharmonics, then go through by hand and decrement the velocity setting by one for the notes that go in the 3 extra channels (there aren't many, the arrow keys on my sequencer step through the notes, so it only takes a single click of the mouse button to decrement velocity by 1) so the program knows which ones they are. Of course, exactly the same technique can be used for close-to-full microtuning by approximation with 15 12-tet tunings - the only problem is, what is the most practical way to tell the program what note is which when there are too many notes to want to do it by hand as I do now? Probably it would be to play the piece through N times, with a different velocity setting each time, playing only the notes in a certain class each time, then merging to a single block. Then, would it be easier to play by note number (note# 0-127, then 128-255 ...), or interlaced (note# mod N = 0,N-1)? Or, has someone a better idea? If the list comes to any agreement on this, I am willing to extend my program and make it available (freeware). I write in ANSI BASIC with the sole extension required being binary file I/O, so it should run on just about any computer anywhere. (I use QuickBasic on a PC now.) Received: from ns.ezh.nl [137.174.112.59] by vbv40.ezh.nl with SMTP-OpenVMS via TCP/IP; Mon, 4 Nov 1996 21:16 +0100 Received: by ns.ezh.nl; (5.65v3.2/1.3/10May95) id AA07716; Sat, 2 Nov 1996 11:04:46 +0100 Received: from eartha.mills.edu by ns (smtpxd); id XA07641 Received: from by eartha.mills.edu via SMTP (940816.SGI.8.6.9/930416.SGI) for id CAA29643; Sat, 2 Nov 1996 02:04:43 -0800 Date: Sat, 2 Nov 1996 02:04:43 -0800 Message-Id: <961102100138_71670.2576_HHB42-3@CompuServe.COM> Errors-To: madole@ella.mills.edu Reply-To: tuning@eartha.mills.edu Originator: tuning@eartha.mills.edu Sender: tuning@eartha.mills.edu