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