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
DecimalHexController Name
000hBank Select MSB - (rarely implemented)
101hModulation Wheel MSB
202hBreath Controller MSB
303h- -
404hFoot Controller MSB
505hPortamento Time MSB
606hData Entry MSB
707hVolume MSB - (formerly Main Volume)
808hBalance MSB
909h- -
100AhPan MSB
110Bh_expression_ MSB
120ChEffect Control 1 MSB
130DhEffect Control 2 MSB
140Eh- -
150Fh- -
1610hGeneral Purpose Controller 1 MSB
1711hGeneral Purpose Controller 2 MSB
1812hGeneral Purpose Controller 3 MSB
1913hGeneral Purpose Controller 4 MSB
2014h- -
2115h- -
2216h- -
2317h- -
2418h- -
2519h- -
261Ah- -
271Bh- -
281Ch- -
291Dh- -
301Eh- -
311Fh- -
3220hBank Select LSB
3321hModulation Wheel LSB - (rarely implemented)
3422hBreath Controller LSB - (rarely implemented)
3523h- -
3624hFoot Controller LSB - (rarely implemented)
3725hPortamento Time LSB - (rarely implemented)
3826hData Entry MSB
3927hVolume LSB - (rarely implemented)
4028hBalance LSB - (rarely implemented)
4129h- -
422AhPan LSB - (rarely implemented)
432Bh_expression_ LSB - (rarely implemented)
442ChEffect Control 1 LSB - (rarely implemented)
452DhEffect Control 2 LSB - (rarely implemented)
462Eh- -
472Fh- -
4830hGeneral Purpose Controller 1 LSB - (rarely implemented)
4931hGeneral Purpose Controller 2 LSB - (rarely implemented)
5032hGeneral Purpose Controller 3 LSB - (rarely implemented)
5133hGeneral Purpose Controller 4 LSB - (rarely implemented)
5234h- -
5335h- -
5436h- -
5537h- -
5638h- -
5739h- -
583Ah- -
593Bh- -
603Ch- -
613Dh- -
623Eh- -
633Fh- -
6440hSustain Pedal
6541hPortamento
6642hSostenuto
6743hSoft Pedal
6844hLegato Footswitch
6945hHold 2
7046hSound Controller 1 - (default: Sound Variation)
7147hSound Controller 2 - (default: Timbre/Harmonic Content)
7248hSound Controller 3 - (default: Release Time)
7349hSound Controller 4 - (default: Attack Time)
744AhSound Controller 5 - (default: Brightness)
754BhSound Controller 6 - (GM2 default: Decay Time)
764ChSound Controller 7 - (GM2 default: Vibrato Rate)
774DhSound Controller 8 - (GM2 default: Vibrato Depth)
784EhSound Controller 9 - (GM2 default: Vibrato Delay)
794FhSound Controller 10
8050hGeneral Purpose Controller 5
8151hGeneral Purpose Controller 6
8252hGeneral Purpose Controller 7
8353hGeneral Purpose Controller 8
8454hPortamento Control
8555h- -
8656h- -
8757h- -
8858h- -
8959h- -
905Ah- -
915BhEffects 1 Depth - (default: Reverb Send)
925ChEffects 2 Depth - (default: Tremolo Depth)
935DhEffects 3 Depth - (default: Chorus Send)
945EhEffects 4 Depth - (default: Celeste [Detune] Depth)
955FhEffects 5 Depth - (default: Phaser Depth)
9660hData Increment
9761hData Decrement
9862hNon-Registered Parameter Number LSB
9963hNon-Registered Parameter Number LSB
10064hRegistered Parameter Number LSB
10165hRegistered Parameter Number MSB
10266h- -
10367h- -
10468h- -
10569h- -
1066Ah- -
1076Bh- -
1086Ch- -
1096Dh- -
1106Eh- -
1116Fh- -
11270h- -
11371h- -
11472h- -
11573h- -
11674h- -
11775h- -
11876h- -
11977h- -
Channel Mode Messages
12078hAll Sound Off
12179hReset All Controllers
1227AhLocal Control On/Off
1237BhAll Notes Off
1247ChOmni Mode Off
1257DhOmni Mode On
1267EhPoly Mode Off
1277FhPoly 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

Reply via email to