On Wed, 11 Feb 2015 14:22:24 -0500
"Tom Breton (Tehom)" <te...@panix.com> wrote:
> > On Thu, 5 Feb 2015 20:22:34 +0000
> > Abrolag <abro...@users.sourceforge.net> wrote:
> >
> > [...]
> > I've tried attaching the MIDI version of my test file if anyone wants to
> > have a
> > look at it and see what happens.
> >
>
> Have looked at your test MIDI and let MidiEvent::print trace it out.
> Thank you, and also thank whoever created MidiEvent::print years ago.
>
> The one wrong-looking thing I see is that we never erase the msb and lsb
> variables. Once case MIDI_CTRL_CHANGE has set lsb or msb, case
> MIDI_PROG_CHANGE will consider it set to that value, forever, until case
> MIDI_CTRL_CHANGE sets another value. We don't aim lsb and msb at a
> specific channel, either, so other channels' MIDI_PROG_CHANGEs could be
> affected.
>
> My suspicion is that remembering lsb,msb after MIDI_PROG_CHANGE confuses
> later MIDI_PROG_CHANGEs that don't have bank controllers, and also we
> probably shouldn't share them between channels.
>
> Does this make sense to you?
>
> Tom Breton (Tehom)
>
> PS: Added a CC to the devel list. Does this still need to go to RG-user?
Hi Tom.
Here be dragons! :)
I've been wrestling with bank & program changes since my first hardware synth
in 1991 - and I'm still not sure I know what I'm talking about.
However, I still have 3 hardware synths (although seldom used now).
None use both MSB & LSB
One uses MSB, the others use LSB
The two that use LSB actually send both (zero for MSB). The other one only
sends MSB
All send a program change whenever they send a bank change.
None want a bank change when *getting* a program change they remember their last
bank setting (including over a power cycle).
One of them, QS300, can accept a program change 'silently' to a non-sounding
channel which will then pick up cleanly on the next note, but if you send a bank
change as well the entire sound cuts out.
They all only transmit on one channel, but will accept MIDI on all 16. Bank
is applied to all channels whichever channel it's sent on. Program is channel
specific. This makes sense as bank changes are swapping out ROM sets, program
changes just select a voice within the ROM.
My most recent one is mid 1990s so things have probably changed considerably
since then. I would expect them to be even more flexible. You can probably do
silent bank changes now. As far as I know there are still none that use both
MSB & LSB though! There is *no* sensible plan as to what bank numbers are used.
1,2,3,4,5... forget it!
With all of this I think the only safe thing for Rosegarden to do is to pass on
exactly what it gets without trying to make any interpretation. How it wants
to represent banks for display purposes is really up to you, but currently it
changes them (seemingly just LSB) and I think that is quite wrong.
Since working on Yoshimi, I've developed an even more keen interest in this and
in order to try and keep up, our bank changes can be set to receive either MSB
or LSB, and work across all channels but have no effect at all until there is a
(channel specific) program change. As there is no physical ROM the synth
engine only knows about voice patches currently in memory. We effectively have
an equivalent to an alternate MSB or LSB as we have a control that sets the
entire directory structure that banks are read from (also silently). The test
file checks that all these work including trapping invalid bank and program
changes. You'll notice there are changes on one channel while others have
continuous notes.
I would guess that most soft-synths would work in pretty much the same way if
they accept MID controls.
P.S.
I'm not on the developers list just the users one. If this is getting too
involved for users I guess I could subscribe, but I'd actually rather stay as I
am :)
P.P.S.
As a matter of interest, I've attached the most complete MIDI chart V2 I can
find. It's actually a merge of several!
--
Will J Godfrey
http://www.musically.me.uk
Say you have a poem and I have a tune.
Exchange them and we can both have a poem, a tune, and a song.
Title: MIDI Standard Controller Numbers
MIDI Controller Numbers |
Summary of the MIDI controller codes (V 2.0) in decimal and hexadecimal |
Decimal | Hex | Controller Name |
0 | 00h | Bank Select MSB - (rarely implemented) |
1 | 01h | Modulation Wheel MSB |
2 | 02h | Breath Controller MSB |
3 | 03h | - - |
4 | 04h | Foot Controller MSB |
5 | 05h | Portamento Time MSB |
6 | 06h | Data Entry MSB |
7 | 07h | Volume MSB - (formerly Main Volume) |
8 | 08h | Balance MSB |
9 | 09h | - - |
10 | 0Ah | Pan MSB |
11 | 0Bh | _expression_ MSB |
12 | 0Ch | Effect Control 1 MSB |
13 | 0Dh | Effect Control 2 MSB |
14 | 0Eh | - - |
15 | 0Fh | - - |
16 | 10h | General Purpose Controller 1 MSB |
17 | 11h | General Purpose Controller 2 MSB |
18 | 12h | General Purpose Controller 3 MSB |
19 | 13h | General Purpose Controller 4 MSB |
20 | 14h | - - |
21 | 15h | - - |
22 | 16h | - - |
23 | 17h | - - |
24 | 18h | - - |
25 | 19h | - - |
26 | 1Ah | - - |
27 | 1Bh | - - |
28 | 1Ch | - - |
29 | 1Dh | - - |
30 | 1Eh | - - |
31 | 1Fh | - - |
32 | 20h | Bank Select LSB |
33 | 21h | Modulation Wheel LSB - (rarely implemented) |
34 | 22h | Breath Controller LSB - (rarely implemented) |
35 | 23h | - - |
36 | 24h | Foot Controller LSB - (rarely implemented) |
37 | 25h | Portamento Time LSB - (rarely implemented) |
38 | 26h | Data Entry MSB |
39 | 27h | Volume LSB - (rarely implemented) |
40 | 28h | Balance LSB - (rarely implemented) |
41 | 29h | - - |
42 | 2Ah | Pan LSB - (rarely implemented) |
43 | 2Bh | _expression_ LSB - (rarely implemented) |
44 | 2Ch | Effect Control 1 LSB - (rarely implemented) |
45 | 2Dh | Effect Control 2 LSB - (rarely implemented) |
46 | 2Eh | - - |
47 | 2Fh | - - |
48 | 30h | General Purpose Controller 1 LSB - (rarely implemented) |
49 | 31h | General Purpose Controller 2 LSB - (rarely implemented) |
50 | 32h | General Purpose Controller 3 LSB - (rarely implemented) |
51 | 33h | General Purpose Controller 4 LSB - (rarely implemented) |
52 | 34h | - - |
53 | 35h | - - |
54 | 36h | - - |
55 | 37h | - - |
56 | 38h | - - |
57 | 39h | - - |
58 | 3Ah | - - |
59 | 3Bh | - - |
60 | 3Ch | - - |
61 | 3Dh | - - |
62 | 3Eh | - - |
63 | 3Fh | - - |
64 | 40h | Sustain Pedal |
65 | 41h | Portamento |
66 | 42h | Sostenuto |
67 | 43h | Soft Pedal |
68 | 44h | Legato Footswitch |
69 | 45h | Hold 2 |
70 | 46h | Sound Controller 1 - (default: Sound Variation) |
71 | 47h | Sound Controller 2 - (default: Timbre/Harmonic Content) |
72 | 48h | Sound Controller 3 - (default: Release Time) |
73 | 49h | Sound Controller 4 - (default: Attack Time) |
74 | 4Ah | Sound Controller 5 - (default: Brightness) |
75 | 4Bh | Sound Controller 6 - (GM2 default: Decay Time) |
76 | 4Ch | Sound Controller 7 - (GM2 default: Vibrato Rate) |
77 | 4Dh | Sound Controller 8 - (GM2 default: Vibrato Depth) |
78 | 4Eh | Sound Controller 9 - (GM2 default: Vibrato Delay) |
79 | 4Fh | Sound Controller 10 |
80 | 50h | General Purpose Controller 5 |
81 | 51h | General Purpose Controller 6 |
82 | 52h | General Purpose Controller 7 |
83 | 53h | General Purpose Controller 8 |
84 | 54h | Portamento Control |
85 | 55h | - - |
86 | 56h | - - |
87 | 57h | - - |
88 | 58h | - - |
89 | 59h | - - |
90 | 5Ah | - - |
91 | 5Bh | Effects 1 Depth - (default: Reverb Send) |
92 | 5Ch | Effects 2 Depth - (default: Tremolo Depth) |
93 | 5Dh | Effects 3 Depth - (default: Chorus Send) |
94 | 5Eh | Effects 4 Depth - (default: Celeste [Detune] Depth) |
95 | 5Fh | Effects 5 Depth - (default: Phaser Depth) |
96 | 60h | Data Increment |
97 | 61h | Data Decrement |
98 | 62h | Non-Registered Parameter Number LSB |
99 | 63h | Non-Registered Parameter Number LSB |
100 | 64h | Registered Parameter Number LSB |
101 | 65h | Registered Parameter Number MSB |
102 | 66h | - - |
103 | 67h | - - |
104 | 68h | - - |
105 | 69h | - - |
106 | 6Ah | - - |
107 | 6Bh | - - |
108 | 6Ch | - - |
109 | 6Dh | - - |
110 | 6Eh | - - |
111 | 6Fh | - - |
112 | 70h | - - |
113 | 71h | - - |
114 | 72h | - - |
115 | 73h | - - |
116 | 74h | - - |
117 | 75h | - - |
118 | 76h | - - |
119 | 77h | - - |
Channel Mode Messages |
120 | 78h | All Sound Off |
121 | 79h | Reset All Controllers |
122 | 7Ah | Local Control On/Off |
123 | 7Bh | All Notes Off |
124 | 7Ch | Omni Mode Off |
125 | 7Dh | Omni Mode On |
126 | 7Eh | Poly Mode Off |
127 | 7Fh | Poly Mode On |
------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Rosegarden-user mailing list
Rosegarden-user@lists.sourceforge.net - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-user