control
"control" events are sent along midi just like note events.
They're a different type of event, though.
Terminoligy problem here. Controller <> Control.
There's a midi controller DEVICE and a midi control EVENT.
We're talking about the event here.
Sorry for the confusion, but it ain't MY fault :)
Let's say you pick an electronic piano sound and use the pitchbend wheel.
On the midi wire, you'll see events something like:
1 programChange 4
1 4c Down 100 (note event)
1 pitchBend 65
1 pitchbend 67
1 pitchbend 100
1 pitchbend 127
1 pitchbend 80
1 pitchbend 64
1 4c Up 64 (note event)
- channel:
1 means you used channel 1 and the sound for the one you picked with
the programchange buttons - 4=electronic piano.
- control id:
a number matching the midi standards is what's actually sent,
NOT a nice little string like "programChange" or "pitchBend".
But YOU need to think of control id as a
NAME for which control you're tweaking.
- control value:
usually a number from 0 to 127.
This value can be interpretted as a signed number (0..64..127 = -64..0..63)
Or a 2 value on/off (0 = off, 64 = on (or maybe 127 = on))
In the case of programChange, the 0..127 maps to one of the standard midi
instrument sounds. 0=piano, 4=epiano, etc.
Hit google for the full map.
Time too:
Again, the exact time is stored along with this info when put into a file
or otherwise stored.
What kind of control is it?
There a bunch of different controls.
And MIDI is actually only using a little teeny number to identify it.
And eventually, unfortunately, YOU may need to know THAT number is
if you're using a crappy sequencer (unlike PianoCheater:)
Suffice is to say that midi sequencer developers like me HATE the midi
control specification standard. With a passion.
Some common controls are:
ProgramChange assigns a new instrument (sound) to the channel
MasterTune tunes all channels of the sound module up or down
Transpose transposes the notes in a channel up or down
PitchBend bends the playing notes' frequency up or down
PitchBendRange sets how far "all the way up/down" is in halfsteps
MasterVolume overall volume for all channels of a device
Volume setting per channel usually at time=0
Expression offset to Volume - what a mixer would record
MasterBalance overall pan for all channels of the sound module
Pan setting per channel
Balance offset to Pan - what a mixer would record
HoldPedal sustain/damper pedal
HoldPedal2 sustain/damper pedal #2
SoftPedal soft pedal
SustenutoPedal sustenuto pedal
LegatoPedal legato pedal
ReverbAmount reverb fx amount - maybe per channel, probably per device
ChorusAmount same deal for chorus fx
Pressure Hmmm, what do these do EXACTLY...??
ModulationWheel, BreathControl, Pedal,
PortamentoOnOff Hmmm, not all sound modules respond to these...
PortamentoTime, PortamentoTimeL, PortamentoNote,
AllSoundsOff, AllControlReset, AllNotesOff, LocalControlOnOff,
OmniOff, OmniOn, MonoMode, PolyMode
...etc, etc, etc...
Control problems:
What number is it???
PEOPLE usually identify controls by NAME.
Midi has a very complex numbering method that breaks down controls into
groups (that you don't care about).
Skip reading this:
You've got the standard midi controls.
programchange, pitchbend and notepressure.
Then the general controls:
with an id between 0 and 127
Then the "registered parameter number" (RPN) controls.
control IDs with an id of 0..16383
Then the "non registered parameter number" (NRPN) controls.
another set of control IDs with an id of 0..16383
Then the system common controls.
controls jammed into a sysex event (you don't wanna know).
So did that make any sense to you? ME NEITHER - AND I'M A PROGRAMMER !!
Is it Input or Output?
PEOPLE need to know WHICH slider on the midi controller
does WHAT on the midi sound module.
When I listed off controls up there...
You'll note that SOME have a well defined thing they DO on
the sound module. (Ex: Expression)
and some don't. (Ex: Pedal)
You'll also note that SOME identify WHICH dodad on the keyboard
SENDS em. (Ex: Pedal)
And some don't. (Ex: Expression)
Notice a pattern here?
Some controls identify a physical slider or bender or doodad
on the keyboard.
Some identify what happens on the sound module. Like pan, volume, etc.
And it's up to YOU to make sure these wierd control numbers are
THE RIGHT ONES all the way through the midi input/sequencer/output
music recording process...
How do you do this?
the hard way is to learn
- the standard midi control groups and each ID in each group
- ALL system menus of every different synth you plan on using
You'll need to memorize how each hardware (and software) synth does
this. And they rarely agree. Trust me. It's painful.
That's one of my reasons for writing PianoCheater...
Skip this AD if you wish :)
PianoCheater will listen to your input device and make a list of
each control it "hears" over midi.
You label each one with what it says on the front panel.
Then you tell PianoCheater what "output control" (string) it'll
be mapping to when it's recorded into the song.
All mapping along the way is specified by YOU.
Not by wierd little numbers dictated by
the general midi standard and synth makers.
I call this "Specific MIDI" :)
What about the control VALUES?
The value a control sends along depends on the type of control...
There are several kinds of controls on most keyboards.
buttons:
one shot:
some just send values of 64 (maybe 127) when pressed and
0 when released.
toggle:
some send a 64 when pressed once, then send 0 when pressed again,
and then 64 when pressed again, etc...
note:
some send note ons and note offs (with or without velocities).
pedals:
Some (hold pedals) send only on/off like a one shot button.
Some (expression pedals) send a value from 0..127.
Some pedals spring back to 0. Some stay where you leave em.
sliders/wheels/knobs/ribbons:
These usually just send values from 0..127
Sometimes they spring back to 0. Sometime they stay put.
benders:
These are like sliders, except the value they send is signed.
It's actually only sending 0..64..127, but these values are
read by you, a human, as -64.. 0..+63
And they usually spring back to 64, err that's 0 to you.
keyboard pressure:
when you "lean" on the keyboard while playing notes,
some midi controls can send "keyboard pressure" aka
"channel pressure" aka "mono aftertouch".
A value of 0 (barely pressed down) to 127 (leaning HARD on it).
note pressure:
this is technically part of a note. But behaves as a control.
This is a per channel per NOTE control that does SOMEthing
to each individual note on the channel on the device.
What does it do? Whatever you configure the sound module to do.
And that's sound module specific, sorry to tell ya...
Who cares - it's VERY rare to actually find a midi keyboard
capable of sending this event.
I'd sure like to have one that does, though :)
Next up, sounds
|