Re: [Rosegarden-user] Unwanted CCs - update - !!!AHA!!!

2015-02-11 Thread Tom Breton (Tehom)

 Perhaps I misunderstood your setup - are you reading a MIDI file in, it
 contains bank changes, and when you play back they are messed up?  Or they
 show the wrong banks in the Instrument Parameter Panel?  That would make
 this code suspect, otherwise I'm afraid I don't see a connection.

OK, catching up on my email, I read the other thread (without AHA!), so
I see that is essentially what's going on.

Now it's just nagging at me, if simply copying over the lsb and msb isn't
right, what *is* supposed to happen?  Or have we overlooked some minor
mistake that corrupts the whole thing?

Will look further, and look at the MIDI Abrolag sent - thank you for that.

Tom Breton (Tehom)



--
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


Re: [Rosegarden-user] Unwanted CCs - update

2015-02-11 Thread Tom Breton (Tehom)
 On Thu, 5 Feb 2015 20:22:34 +
 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?


--
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


Re: [Rosegarden-user] Unwanted CCs - Long!

2015-02-11 Thread Abrolag
On Wed, 11 Feb 2015 14:22:24 -0500
Tom Breton (Tehom) te...@panix.com wrote:

  On Thu, 5 Feb 2015 20:22:34 +
  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 

Re: [Rosegarden-user] Unwanted CCs - update - !!!AHA!!!

2015-02-11 Thread mskala
On Tue, 10 Feb 2015, D. Michael McIntyre wrote:
 I was wondering about that, now that you mention it.  Controller banks?
   Does anything support more than 127 controllers?  Are bank changes

Controllers have standardized numbers - e.g. 7 is master volume - so the
main issue isn't really that a single device has more than 127 controllers
(although yes, some DO), but that there are more than 127 different kinds
of controllers in the world.  It's made worse by the fact that a single
controller number only handles a 7-bit value, so if you need finer
granularity than that, you need to assign two or more of the 127
controller numbers to the more and less significant chunks of a
finer-grained value.  And it's also true that controller numbers ended up
being used for other things, such as selecting banks for the separate
program change messages.

The namespace of 127 controllers ran out very fast.

-- 
Matthew Skala
msk...@ansuz.sooke.bc.ca People before principles.
http://ansuz.sooke.bc.ca/

--
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


Re: [Rosegarden-user] Unwanted CCs - update - !!!AHA!!!

2015-02-10 Thread Abrolag
I just had a nose around in MidiFile.cpp - without full hazmat too :)

At line 1221 you have the start of a section that interprets bank changes. This
is very risky as almost every synth maker has a different way of handling them.

Commenting out both the msb and lsb code appears to cure the problem.

Can someone more knowledgeable have a look and see what other implications there
may be?


-- 
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.

--
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


Re: [Rosegarden-user] Unwanted CCs - update - !!!AHA!!!

2015-02-10 Thread D. Michael McIntyre
On 02/10/2015 01:46 PM, Abrolag wrote:

 I just had a nose around in MidiFile.cpp - without full hazmat too :)

 At line 1221 you have the start of a section that interprets bank changes. 
 This
 is very risky as almost every synth maker has a different way of handling 
 them.

I was wondering about that, now that you mention it.  Controller banks? 
  Does anything support more than 127 controllers?  Are bank changes 
used for something else?  Was that code meant to tackle a known case?

The answer to all those questions is probably but yet I somehow doubt 
our good-intentioned code even works anyway.

The fastest way to find out whether anybody is using something or not is 
to disable it and wait for the complaints.

H.
-- 
D. Michael McIntyre

--
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


Re: [Rosegarden-user] Unwanted CCs - update

2015-02-09 Thread D. Michael McIntyre
On 02/09/2015 05:10 PM, Abrolag 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.

I'm piddling around...

 The bank changes (CC32) in order should be:
 CH1, 105
 CH1, 105
 CH1, 7
 CH2, 110
 CH3, 105
 CH1, 5

105
110
105
105

Lots of weird things going on here.  First, there was no 7 or 5 in the 
data.  Second, we map either 110 or 105 to 255, sure enough.

I didn't sort it out before hitting the limit of my attention span. 
Stuff is created in MidiFile.cpp, but who what where when and why 
remains a mystery to untangle, if anyone is in the mood for untangling 
mysteries.

I, apparently, am not as much in that mood as I first thought.

-- 
D. Michael McIntyre

--
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


Re: [Rosegarden-user] Unwanted CCs - update

2015-02-09 Thread Abrolag
On Thu, 5 Feb 2015 20:22:34 +
Abrolag abro...@users.sourceforge.net wrote:

 Just tried build 13868 and can confirm that it now sends the correct data.
 
 However on *importing* a midi file CC32 values are set as either 0 or 255. 
 This
 is bank LSB and should be settable 0-127. A value of 255 should be quite
 impossible!
 
 The actual values I've set (and correctly sent) are 105, 7, 110, 5.
 
 Just to confirm this is designed as a test file, but it's supposed to be 
 testing
 Yoshimi! :)

Just tripple checked this with aplaymidi, ardour3 and muse2. Rosegarden 13868
is *definitely* exporting the correct MIDI data and it is purely the import
side that is now having problems.

P.S. after using those last two I was *extremely* grateful to be able to
return to Rosegarden, for all their bells and whistles they simply are not
musician friendly :(

I've tried attaching the MIDI version of my test file if anyone wants to have a
look at it and see what happens.

The bank changes (CC32) in order should be:
CH1, 105
CH1, 105
CH1, 7
CH2, 110
CH3, 105
CH1, 5

This is intersped with program changes and actual (loosely described) music.

-- 
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.


RootBankProgChangeTest.mid
Description: MIDI audio
--
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


Re: [Rosegarden-user] Unwanted CCs

2015-02-05 Thread Abrolag
On Wed, 4 Feb 2015 20:20:11 -0500
Tom Breton (Tehom) te...@panix.com wrote:

  On 02/04/2015 05:49 PM, Abrolag wrote:
  Yes tried that. It still sends CC 121 (reset all controllers) and it
  sends it at
  the start of every segment of every track!
 
 ChannelManager::setControllers() appears to be the function doing this.
 
 Oh, my.  It's right where I wrote:
 
 // This was the old logic, but it's not clear that it is still
 // desirable
 
 and I think I ifdef'ed it out after we let it fly for a while and nobody
 seemed to be using it.  Obviously that's not the case, so I'll put it back
 in immediately.
 
   Tom Breton (Tehom)

Just tried build 13868 and can confirm that it now sends the correct data.

However on *importing* a midi file CC32 values are set as either 0 or 255. This
is bank LSB and should be settable 0-127. A value of 255 should be quite
impossible!

The actual values I've set (and correctly sent) are 105, 7, 110, 5.

Just to confirm this is designed as a test file, but it's supposed to be testing
Yoshimi! :)

-- 
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.

--
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


Re: [Rosegarden-user] Unwanted CCs

2015-02-04 Thread david
On 02/04/2015 08:03 AM, Abrolag wrote:
 Every time Rosegarden starts up, and every time it starts a run from the
 beginning it sends reset CCs.

 I can't seem to find a way to stop this - they are not mentioned in any filter
 options that I can see.

 It makes a mess with the new version of Yoshimi which responds to these
 messages and tries to set banks, programs etc. that don't exist :(

 If I disable response to banks and program change, then I can't embed the CCs 
 I
 *do* want into a RG file!

Maybe this is related to how RG always resets Yoshimi to its default 
voice when I start playing a track for which I've already set a voice in 
Yoshimi?

-- 
David W. Jones
gn...@hawaii.rr.com
authenticity, honesty, community
http://dancingtreefrog.com

--
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


Re: [Rosegarden-user] Unwanted CCs

2015-02-04 Thread Tom Breton (Tehom)
 Every time Rosegarden starts up, and every time it starts a run from the
 beginning it sends reset CCs.

 I can't seem to find a way to stop this - they are not mentioned in any
 filter
 options that I can see.

Sounds like the normal setup stuff.

Have you tried unchecking all the checkboxes in Instrument Parameters? 
Basically, that tells it not to try to set up an instrument, because setup
will be handled externally, which sounds like what you are doing.

Tom Breton (Tehom)



--
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


Re: [Rosegarden-user] Unwanted CCs

2015-02-04 Thread Ted Felix
On 02/04/2015 05:49 PM, Abrolag wrote:
 Yes tried that. It still sends CC 121 (reset all controllers) and it sends it 
 at
 the start of every segment of every track!

   ChannelManager::setControllers() appears to be the function doing this.

Ted.

--
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


Re: [Rosegarden-user] Unwanted CCs

2015-02-04 Thread Abrolag
On Wed, 4 Feb 2015 17:00:52 -0500
Tom Breton (Tehom) te...@panix.com wrote:

  Every time Rosegarden starts up, and every time it starts a run from the
  beginning it sends reset CCs.
 
  I can't seem to find a way to stop this - they are not mentioned in any
  filter
  options that I can see.
 
 Sounds like the normal setup stuff.
 
 Have you tried unchecking all the checkboxes in Instrument Parameters? 
 Basically, that tells it not to try to set up an instrument, because setup
 will be handled externally, which sounds like what you are doing.

Yes tried that. It still sends CC 121 (reset all controllers) and it sends it at
the start of every segment of every track!

What is worse is that it then can't reload what it sent. CC 32 bank LSB always
comes back with a value of 0. It is also creating spurious CCs but I can't pin
down whether that is happening on export or reload.

BTW I've also tried using arecordmidi to capture the actual midi stream.

-- 
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.

--
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


Re: [Rosegarden-user] Unwanted CCs

2015-02-04 Thread Abrolag
On Wed, 04 Feb 2015 17:59:05 -0500
Ted Felix t...@tedfelix.com wrote:

 On 02/04/2015 05:49 PM, Abrolag wrote:
  Yes tried that. It still sends CC 121 (reset all controllers) and it sends 
  it at
  the start of every segment of every track!
 
ChannelManager::setControllers() appears to be the function doing this.
 
 Ted.

Would it help If I made my test rg file available? it's only 23k. I can't
remember, are attachments accepted on this list?

-- 
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.

--
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


Re: [Rosegarden-user] Unwanted CCs

2015-02-04 Thread Tom Breton (Tehom)
 On 02/04/2015 05:49 PM, Abrolag wrote:
 Yes tried that. It still sends CC 121 (reset all controllers) and it
 sends it at
 the start of every segment of every track!

ChannelManager::setControllers() appears to be the function doing this.

Oh, my.  It's right where I wrote:

// This was the old logic, but it's not clear that it is still
// desirable

and I think I ifdef'ed it out after we let it fly for a while and nobody
seemed to be using it.  Obviously that's not the case, so I'll put it back
in immediately.

Tom Breton (Tehom)



--
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