Claudia...
I followed the instructions for the experiment, and formatted
my answer so that the sections which required a response are
followed by the requested information. You may wish to format
the report differently depending on its intended audience and
use.
_____________________________________________________________
Your report should mention which device and which PC was used.
-------------------------------------------------------------------
I used a Kurzweil K2500XS, in conjunction with a homebuilt computer
with an AMD MP2000 CPU, 1666MHZ.
Here's an image of the K2500X, for reference:
http://www.kurzweilmusicsystems.com/html/k2500.html
The XS just has an added sampling module, with more inputs on
the back of the unit, but the front panel is that same.
-------------------------------------------------------------------
3. You may also see regular Active Sensing messages. What byte do
these correspond to? How often are they produced? Note that these
messages aren?t produced when you create other data. If you still
don?t see them, then either your keyboard isn?t producing them or
the MIDI Filter in the program is activated. (The MIDI filter can
turn off the display of certain messages.)
-------------------------------------------------------------------
I don't see any of these, even with all the MIDI filters off, nor
did I learn anything from the MIDI-OX helpfile when searching for
Active Sensing. I did a search on Google and came up with this page,
from PlanetOfTunes.com which explains it quite well:
http://www.planetoftunes.com/sequence/activesense.html
Apparently the Kurzweil doesn't send these messages.
-------------------------------------------------------------------
4. Play some notes on the keyboard, paying attention to the STATUS,
DATA1 and DATA2 columns. You should see something like this:
TIMESTAMP PORT STATUS DATA1 DATA2 CHAN NOTE EVENT
123456 1 90 3D 77 1 C#4 Note On
The bold values are the status byte and two data bytes for a Note
On command. What are the lowest and highest note numbers produced
(using the octave shift buttons if there are any)?
-------------------------------------------------------------------
C -1 is the lowest note that actually produces a sound, though even
this occurs only in a few patches, and G 9 is the highest note,
again, for the patches that stretch that high. Beyond this range,
MIDI-OX reports '---' for the note, and 'Channel Aft' for the event.
-------------------------------------------------------------------
5. You can toggle the display between decimal and hexadecimal using
Options/Data Display. Play very strongly. What is the maximum
velocity? Play very softly. What is the minimum velocity?
-------------------------------------------------------------------
Though it's not marked as 'velocity', the number under DATA2 gets
larger with how hard the notes are struck, ranging from 1 to 119,
from softest to hardest, with the display reading in the decimal
mode.
-------------------------------------------------------------------
6. Determine whether your MIDI keyboard generates old-style or
new-style Note Offs.
-------------------------------------------------------------------
Where are 'old-style' and 'new-style' defined? A search on Google
was not helpful. Where would one look to determine this? The note
off messages simply say 'Note Off', whether in decimal or
hexadecimal display mode. This has me stumped.
-------------------------------------------------------------------
7. Change to decimal display. Move the pitch bend wheel. Two
seven-bit "bytes" are sent, and displayed:
TIMESTAMP PORT STATUS DATA1 DATA2 ?
123888 1 224 24 70 ?
Here 24 is the lowest 7 bits and 70 is the highest 7 bits,
so the value being sent is 70*128+24 = 8984. What are the
minimum, central and maximum values?
-------------------------------------------------------------------
Assuming 128 is a constant, and not a number derived from
missing data implied by the '...' symbols in the table cited
in the question,
the minimum value being sent is 0*128+0 = 0
the midrange value being sent is 64*128+0 = 8192
the maximum value being sent is 127*128+127 = 16383
-------------------------------------------------------------------
8. Work out the resolution of the pitch bend wheel by examining the
spacing between the output values when you move the wheel slowly.
If, as frequently, the pitch bend wheel is set to ± 2 semitones, how
big are the pitch steps?
-------------------------------------------------------------------
The DATA2 figure increases or decreases by one integer at a time,
from 64...65...66 etc, and it does increase by 2 semitones and also
decrease by 2 semitones. Since the maximum value of 127 minus
the midrange value of 64 = 63, the steps would seem to be 2/63rds
of a semitone. Then again, the range from 0 to 64 has 64 steps,
so it would be 2/64ths of a semitone, or 1/32nd of a note.
-------------------------------------------------------------------
9. Examine the outputs when the modulation wheel is moved. Note which
messages are generated by any other wheels, sliders, buttons and foot
pedals on the keyboard. Does it generate aftertouch? Which type(s)?
(The data entry slider on the Roland keyboard in 257 can be set to one
of several controls by pressing MIDI SELECT/note/MIDI SELECT.)
-------------------------------------------------------------------
The modulation wheel generates a 'CC: Modulation' Event, with DATA2
reflecting the degree of change, in this case, tremolo, from 0-127.
The main ribbon on the Kurzweil produces Event changes alternating
between 'Control Change' and 'CC: 21 (E-MU)'.
The smaller ribbon near the mod wheel produces an occasional
'Control Change' Event, with the more common 'Channel Aft'
Event. Perhaps 'Aft' is for Aftertouch?
The sustain pedal produces 'CC: Pedal (Sustain)' under Event.
A program change produces, first, a 'CC: Bank LSB' Event,
and then a 'PC: Program name (e.g., Piccolo)' Event.
Those are the only controllers I can find to change, other than
the ones we already tried.
-------------------------------------------------------------------
10. You should never flick any electrical gear on and off rapidly.
However, MIDI provides some protection (how?) from ill effects. If
any documents are open outside Midi-Ox, save them (just in case of
a crash). Hold a key down, slowly switch the keyboard off and note
any messages that appear. Does the note end? Release the key, wait
a moment, then switch the keyboard on and note any messages. What
messages are generated when you switch off or on? Can they be
explained? (Sometimes they can?t!).
-------------------------------------------------------------------
TIMESTAMP IN PORT STATUS DATA1 DATA2 CHAN NOTE EVENT
7619685 1 -- 144 60 61 1 C 4 Note On
The above was the only entry prior to turning off the unit.
All of the following occured upon turning the power back on.
7630180 1 -- 176 32 7 1 --- CC: Bank LSB
7630181 1 -- 192 74 --- 1 --- PC: Recorder
7630182 1 -- 176 99 1 1 --- CC: NRPN MSB
7630183 1 -- 176 98 1 1 --- CC: NRPN LSB
7630184 1 -- 176 6 12 1 --- CC: Data Entry MSB
7630184 1 -- 176 38 0 1 --- CC: Data Entry LSB
7630185 1 -- 176 99 127 1 --- CC: NRPN MSB
7630186 1 -- 176 99 1 1 --- CC: NRPN MSB
7630187 1 -- 176 98 2 1 --- CC: NRPN LSB
7630188 1 -- 176 6 12 1 --- CC: Data Entry MSB
7630189 1 -- 176 38 0 1 --- CC: Data Entry LSB
7630190 1 -- 176 99 127 1 --- CC: NRPN MSB
7630191 1 -- 176 99 1 1 --- CC: NRPN MSB
7630192 1 -- 176 98 4 1 --- CC: NRPN LSB
7630193 1 -- 176 6 2 1 --- CC: Data Entry MSB
7630194 1 -- 176 38 0 1 --- CC: Data Entry LSB
7630195 1 -- 176 99 127 1 --- CC: NRPN MSB
7630247 1 -- 208 0 --- 1 --- Channel Aft
7630248 1 -- 224 0 64 1 --- Pitch Bend
7630249 1 -- 176 1 0 1 --- CC: Modulation
7630255 1 -- 208 0 --- 1 --- Channel Aft
7630259 1 -- 176 21 64 1 --- CC: 21 (E-MU)
7630260 1 -- 176 53 0 1 --- Control Change
7630261 1 -- 176 15 64 1 --- Control Change
7630262 1 -- 176 21 64 1 --- CC: 21 (E-MU)
7630263 1 -- 176 53 0 1 --- Control Change
7630272 1 -- 176 1 0 1 --- CC: Modulation
7631739 1 -- 176 121 0 1 --- CC: Reset Cntrl
7631745 1 -- 177 121 0 2 --- CC: Reset Cntrl
7631746 1 -- 178 121 0 3 --- CC: Reset Cntrl
7631747 1 -- 179 121 0 4 --- CC: Reset Cntrl
7631750 1 -- 180 121 0 5 --- CC: Reset Cntrl
7631751 1 -- 181 121 0 6 --- CC: Reset Cntrl
7631752 1 -- 182 121 0 7 --- CC: Reset Cntrl
7631754 1 -- 183 121 0 8 --- CC: Reset Cntrl
7631755 1 -- 184 121 0 9 --- CC: Reset Cntrl
7631757 1 -- 185 121 0 10 --- CC: Reset Cntrl
7631763 1 -- 186 121 0 11 --- CC: Reset Cntrl
7631764 1 -- 187 121 0 12 --- CC: Reset Cntrl
7631765 1 -- 188 121 0 13 --- CC: Reset Cntrl
7631767 1 -- 189 121 0 14 --- CC: Reset Cntrl
7631768 1 -- 190 121 0 15 --- CC: Reset Cntrl
7631769 1 -- 191 121 0 16 --- CC: Reset Cntrl
7631773 1 -- 176 123 0 1 --- CC: All Notes Off
7631774 1 -- 177 123 0 2 --- CC: All Notes Off
7631775 1 -- 178 123 0 3 --- CC: All Notes Off
7631776 1 -- 179 123 0 4 --- CC: All Notes Off
7631777 1 -- 180 123 0 5 --- CC: All Notes Off
7631778 1 -- 181 123 0 6 --- CC: All Notes Off
7631778 1 -- 182 123 0 7 --- CC: All Notes Off
7631779 1 -- 183 123 0 8 --- CC: All Notes Off
7631780 1 -- 184 123 0 9 --- CC: All Notes Off
7631781 1 -- 185 123 0 10 --- CC: All Notes Off
7631782 1 -- 186 123 0 11 --- CC: All Notes Off
7631783 1 -- 187 123 0 12 --- CC: All Notes Off
7631784 1 -- 188 123 0 13 --- CC: All Notes Off
7631785 1 -- 189 123 0 14 --- CC: All Notes Off
7631786 1 -- 190 123 0 15 --- CC: All Notes Off
7631787 1 -- 191 123 0 16 --- CC: All Notes Off
7631820 1 -- 176 32 7 1 --- CC: Bank LSB
7631821 1 -- 192 74 --- 1 --- PC: Recorder
7631822 1 -- 176 99 1 1 --- CC: NRPN MSB
7631823 1 -- 176 98 1 1 --- CC: NRPN LSB
7631824 1 -- 176 6 12 1 --- CC: Data Entry MSB
7631825 1 -- 176 38 0 1 --- CC: Data Entry LSB
7631826 1 -- 176 99 127 1 --- CC: NRPN MSB
7631827 1 -- 176 99 1 1 --- CC: NRPN MSB
7631828 1 -- 176 98 2 1 --- CC: NRPN LSB
7631829 1 -- 176 6 12 1 --- CC: Data Entry MSB
7631830 1 -- 176 38 0 1 --- CC: Data Entry LSB
7631831 1 -- 176 99 127 1 --- CC: NRPN MSB
7631831 1 -- 176 99 1 1 --- CC: NRPN MSB
7631832 1 -- 176 98 4 1 --- CC: NRPN LSB
7631833 1 -- 176 6 2 1 --- CC: Data Entry MSB
7631834 1 -- 176 38 0 1 --- CC: Data Entry LSB
7631835 1 -- 176 99 127 1 --- CC: NRPN MSB
7631904 1 -- 176 21 64 1 --- CC: 21 (E-MU)
7631905 1 -- 176 53 0 1 --- Control Change
7631906 1 -- 176 15 64 1 --- Control Change
Protection seems to be provided by resetting the controllers
on channels 1-16, as well as doing an 'All Notes Off' command
on all channels. I don't know what MSB and LSB mean, in the
'CC: NRPN MSB', 'CC: NRPN LSB', 'CC: Data Entry MSB',
'CC: Data Entry LSB', 'CC: Bank LSB', Data Entry MSB, and
'Data Entry LSB' Events, but it was a given that all of them
are not necessarily explainable.
-------------------------------------------------------------------
I apologize for my apparent inadequacy in answering number 6,
but I really don't get where the requested information might
be found, unless the question is based on knowledge assumed
to have been priorly gained.
If there's anything which seems unclear or missing, let
me know, and I'll do my best to assist you.
Please do not rate this answer until you are satisfied that
the answer cannot be improved upon by means of a dialog
established through the "Request for Clarification" process.
A user's guide on this topic is on skermit-ga's site, here:
http://www.christopherwu.net/google_answers/answer_guide.html#how_clarify
sublime1-ga |
Request for Answer Clarification by
barnaclau-ga
on
16 Nov 2003 04:00 PST
Hello,
Thanks a lot for what you have done.
I found this bit of text about question 6 (Note Off).
I hope this can help you find what kind of Note Off is generated by your keyboard.
Note on ? 9n:
Let?s turn on our first note using a channel message. If we play
middle C (which by most definitions is note number sixty) on ?channel
six? with the maximum velocity (127), the message is:
Status byte
1 0 0 1 0 1 0 1
9 (note on) 5(channel 6)
First data byte
0 0 1 1 1 1 0 0
note 60 dec = 3C hex
Second data byte
0 1 1 1 1 1 1 1
127 dec = 7F hex
So the three-byte message in hex is 95 3C 7F, and the note is turned
on as soon as this message arrives. The velocities range from 1(01) to
127 (7F). This is the speed of the key, but represents the force with
which the key is hit. A higher velocity normally corresponds to a
louder note.
Why did we code ?channel six? as 0101? Channels are numbered 1 to 16,
but the four bits represent numbers from 0 to 15. So ?channel one?
means the second nibble (half a byte) is 0000, and ?channel 16? means
it is 1111.
Running status:
If we play a C major chord on this channel, we would send out ?95 3C
???, ?95 40 ???, ?95 43 ???, where the ???? are the velocities.
Clearly we?re wasting effort in sending all these ?95? bytes. In fact,
there?s an easier way to do it. Virtually all synthesisers implement
running status, whereby we can send ?95 3C ???, ?40 ???, ?43 ???. If
the synth doesn?t receive a status byte at the beginning of a message,
it assumes the data bytes use the same status byte as before. And it
knows whether the byte is a status byte because status bytes have the
top bit set.
Note off-8n
After sending a ?note on? command, the notes plays continuously ? we
thus need to end the notes when the keys are released. The original
way of doing this was to use the ?note off? message:
Status byte
1 0 0 0 0 1 0 1
8 (note off) 5(channel 6)
First data byte
0 0 1 1 1 1 0 0
note 60 dec = 3C hex
Second data byte
0 0 0 0 0 0 0 0
(usually zero)
So if we played middle C three times the data would be:
?95 3C ???, ?85 3C 00?, ?95 3C ???, ?85 3C 00?, ?95 3C ???, ?85 3C 00?
This is rather wasteful; as the status byte keeps changing, we can?t
benefit from running status. So a new way of switching off a note was
devised. ? Instead of sending a ?note off? command we send another
?note on? command, but with a velocity of zero. This means that the
status bytes are 95, so we simply send:
?95 3C ???, ?3C 00?, ?3C 00?, ?3C 00?, ?3C 00?, ?3C 00?, which is
shorter ? 13 bytes instead of 18. The new way is more efficient and
thus more common.
The old style note-off has as its second data byte the release
velocity. In principle, this allows you to control the end of the
note. However, few keyboards actually measure this parameter and few
synths can respond to it.
If this helps you, can you give me some sample output included with
the answer for number six?
Thank you
|
Clarification of Answer by
sublime1-ga
on
16 Nov 2003 09:06 PST
Claudia...
Yes, that was very helpful information, and it is now clear
that the Kurzweil produces the 'old style' note off:
"So if we played middle C three times the data would be:
'95 3C ??', '85 3C 00', '95 3C ??', '85 3C 00', '95 3C ??',
'85 3C 00'."
The hexadecimal output from the Kurzweil looks like:
TIMESTAMP IN PORT STATUS DATA1 DATA2 CHAN NOTE EVENT
000AF87E 1 1 95 3C 2B 6 C 4 Note On
000AF947 1 1 85 3C 42 6 C 4 Note Off
000AFA60 1 1 95 3C 28 6 C 4 Note On
000AFB2B 1 1 85 3C 45 6 C 4 Note Off
000AFC4F 1 1 95 3C 34 6 C 4 Note On
000AFD10 1 1 85 3C 50 6 C 4 Note Off
...and the same results in decimal output (I was able to
use the MIDI-OX 'Monitor Output' Window set to hexadecimal,
at the same time the 'Monitor Inp[ut Window was set to
decimal output, to record the same events):
TIMESTAMP IN PORT STATUS DATA1 DATA2 CHAN NOTE EVENT
718974 1 -- 149 60 43 6 C 4 Note On
719175 1 -- 133 60 66 6 C 4 Note Off
719456 1 -- 149 60 40 6 C 4 Note On
719659 1 -- 133 60 69 6 C 4 Note Off
719951 1 -- 149 60 52 6 C 4 Note On
720144 1 -- 133 60 80 6 C 4 Note Off
"So a new way of switching off a note was devised. ? Instead
of sending a 'note off' command we send another 'note on'
command, but with a velocity of zero. This means that the
status bytes are 95, so we simply send:
'95 3C ??', '3C 00', '3C 00', '3C 00', '3C 00', '3C 00',
which is shorter ? 13 bytes instead of 18. The new way
is more efficient and thus more common.
The old style note-off has as its second data byte the
release velocity. In principle, this allows you to control
the end of the note. However, few keyboards actually measure
this parameter and few synths can respond to it."
It is clear to me, from the decimal readout of the 'note off'
events recorded above, that the Kurzweil is, in fact, measuring
the release velocity of the key when the note is released.
In fact, it is one of the midi parameters which can be used
to program the Kurzweil patches. If I assign a pitch shift
of, say, 170 cents, controlled by the release velocity, it
produces a definite variation in the pitch when I release
the notes - producing an odd sound, to say the least. So:
6. Determine whether your MIDI keyboard generates old-style or
new-style Note Offs.
--------------------------------------------------------
Definitely old-style. Release velocities are in evidence
in the DATA2 parameter of the 'note off' events, in the
decimal display:
TIMESTAMP IN PORT STATUS DATA1 DATA2 CHAN NOTE EVENT
718974 1 -- 149 60 43 6 C 4 Note On
719175 1 -- 133 60 66 6 C 4 Note Off
719456 1 -- 149 60 40 6 C 4 Note On
719659 1 -- 133 60 69 6 C 4 Note Off
719951 1 -- 149 60 52 6 C 4 Note On
720144 1 -- 133 60 80 6 C 4 Note Off
...and, in the hexadecimal display, the '85' Status is
sent with every note off command:
TIMESTAMP IN PORT STATUS DATA1 DATA2 CHAN NOTE EVENT
000AF87E 1 1 95 3C 2B 6 C 4 Note On
000AF947 1 1 85 3C 42 6 C 4 Note Off
000AFA60 1 1 95 3C 28 6 C 4 Note On
000AFB2B 1 1 85 3C 45 6 C 4 Note Off
000AFC4F 1 1 95 3C 34 6 C 4 Note On
000AFD10 1 1 85 3C 50 6 C 4 Note Off
--------------------------------------------------------
I believe that resolves #6. Let me know if there's anything
else I can clarify.
Best regards...
sublime1-ga
|