Scripted musical notation available

Kurt Kaufman kkaufman at snet.net
Tue Mar 18 08:10:01 EST 2003


 >>>I was wondering if you could answer for me if =
it is possible to map a midi note to another midi note. For example, 
can =
a scale be represented as midi numbers, like 64 66 68 69 etc, 
signifying =
C D E F, and then to map that to 70 72 73 as the output, for example? 
So =
an input note (the key pressed on the piano keyboard for example) gets =
outputted as a different note. <<<

This would not be difficult, as a transposition mechanism would simply 
add to or subtract from a given note number.  This would be done "at 
the top", i.e. immediately upon input, or, if a series of note numbers 
is saved in a container such as a field or variable, before the series 
is translated into MIDI data.

 >>>I can see that perhaps code can be =
written into a standalone midi file processor and, when a midi file is =
imported into it, can change the output of the midi file, and these =
changes can be saved to another midi file. <<<


Here's the difficult part though: it's much more straightforward to 
create a MIDI file from piano-style keyboard entry or HyperCard-style 
representations than it is to import an external MIDI file (as I've 
mentioned before, many MIDI files contain proprietary and/or 
hardware-specific data which would have to be filtered out).  However, 
in the long run, MIDI file import would probably be the way to go, as 
opposed to a HyperCard-style shorthand, since the core of the "Standard 
MIDI File" (SMF) is a generally accepted way to share MIDI data.
If the goal is to enable transfer of data only between applications 
that "understand" the HyperCard-style shorthand, then the job is likely 
considerably easier.

In any case, since you mentioned that you are new to programming, I 
have to say that I don't think that working with MIDI is a reasonable 
first programming project (unless you already understand how MIDI 
works). Once you get familiar with Revolution, take a look at the MIDI 
Builder stack (included with Revolution 2), and you might get some 
ideas as to how to implement the first part of your question, above.

HTH,
Kurt




More information about the use-livecode mailing list