With my Axis-49 I need to:
- Translate (remap) an Axis-49 note “harmonic axis” value to a “folded-scale” (Wicki-Hayden) layout
- See what is coming in from the Axis
- Know how hard I had hit the key
- Double-check the note value – e.g. did I really hit a G#?
-
Max/MSP: a cute little graphical development system
Signals travel along the little wires (black lines) connecting boxes. The boxes do things to the signals, the top is input, the bottom output.
Here’s the flow sequence:
Notein a
Gets the next midi note coming in, splits it into to 3 outputs:
- the midi note value (an integer) e.g 61 = middle C, this is what we need to translate
- the midi note velocity (also an integer, 0 = off, 1-127 = ppp to fff)
- the midi channel number
You can double-click on the notein box to pop up list of the midi input devices and select one.
The signals then travel along the connections (wires) to be translated. The note velocity and the channel number go straight to the noteout box unchanged. The note pitch goes to the coll object to be translated.
coll axis49-wick
In this case the coll (collection) defined in table Axis49-wick.txt serves as a look-up table, the table is a series of paired numbers, with the input value matched to the left of the pair, the output value is the right pair value. Thus, with pair 84, 78; an input value of 84 (musically a C-5 gets mapped to a 78 (an F# ),
This table is easily edited in MS Notepad. When Max/MSP starts up, it will read this table. If like it, the Status box will show “coll; finished, 70 lines”. If not, it will show an error message.
Input “number box”
Display (shows “C-2” ) – shows the key hit by you in terms of what the Axis-49 sent out, as a note.
Subtraction
After I wrote the table, I wanted to shift the notes down an octave, so I added a little box that takes a number in the top, minuses it (see the little “-“ (minus) sign?) by 12 and puts it out the bottom
The 12 subtracted from the note value lowers it by an octave (12 semitones), I display the value in the little number box, but also pass it on two ways, one way goes to stripnote which strips out the note-off values – other wise the velocity would be zero when the note is lifted- and I pass the note on to the big yellow note display boxes.
The switch box
In the center is a little switch box, which allows me to turn on or off the translation
- click the mouse on it and the little switch changes to take direct input from “notein a”.
- Click on it again to switch it back to reading the translated values from the "coll" box.
The little “value box”
This shows the midi note value as a number, not a note, for debugging. Shows (0)
stripnote
Stripnote strips out the note-off values, so they persist on the display after the finger lets up.
2 big yellow “value boxes”
I made these big displays (shows “C-2” and 0) to show the last note had hit.
noteout a
Read the 3 midi input values: outputs:
- the midi note value (an integer)
- the midi note velocity
- the midi channel number
You can double click on the notein box to pop up list of the midi input devices and select one.
That’s all it does – pretty simple, once you understand it.
I have many things that would be very cool to do to elaborate on this basic template:
- a note display and translate note-combinations into chords.
This would really help when demonstrating the thing to people. - Take a midi input file and show which keys to play on the Axis, and/or also show a music score. with
- Create some musically simplified special notes that would train the novice musician’s ear much faster than normal. The normal piano sound is hugely complex – learning from it is like trying to first learn to drive on a 7-axle tanker-truck.
Is anyone game to have some "fun"?
I know what needs to be done, but don't have time to do it.
Ken
------------------------------
Axis49-wick.txt contains
84, 78; 80, 73; 77, 80; 73, 75; 70, 82; 66, 77; 63, 84; 59, 79;
56, 86; 52, 81; 49, 88; 45, 83; 42, 90; 38, 85; 83, 66; 79, 61;
76, 68; 72, 63; 69, 70; 65, 65; 62, 72; 58, 67; 55, 74; 51, 69;
48, 76; 44, 71; 41, 78; 37, 73; 82, 54; 78, 49; 75, 56; 71, 51;
68, 58; 64, 53; 61, 60; 57, 55; 54, 62; 50, 57; 47, 64; 43, 59;
40, 66; 36, 61; 81, 42; 77, 37; 74, 44; 70, 39; 67, 46; 63, 41;
60, 48; 56, 43; 53, 50; 49, 45; 46, 52; 42, 47; 39, 54; 35, 49;
80, 30; 76, 25; 73, 32; 69, 27; 66, 34;