Menu

#1560 Proper MIDI CCs not sent at playback

None
closed
1
2020-04-20
2018-05-01
No

Hi,
I was using Rosegarden version 12.04 with Debian 7. I migrated to Debian 9, with Rosegarden 16.06.
I have a problem with resetting the control codes when I play a song.
example :
I use the CC7 on a track that contains a series of notes. At the beginning the CC7 is initialized to 53, at the end of the track, I end with a shunt by applying a sequence of value, from 52 to 0.

With 16.06 :
The first time I play the song until the end everything is fine I get a "shunt", If I put the cursor in the middle of the track, no sound, the CC7 remains initialized to 0.

With 12.04, I did not have this problem because the runtime parameter in the configuration :
Send all MIDI Controllers at start of playback
reset the CC to the value closest to the cursor position.
With 16.06 : strangely, this parameter no longer exists and is replaced by:
allows resetting of all controllers (CC121)
which seems not to have the same effect because it does not work as in 12.04.
I could see that in the configuration file of 12.04: the variable "alwayssendcontrollers=true" disappeared in version 16.06 and is replaced by "allowresetallcontrollers=true".
As I could not use the intermediate versions (hardware problem), I am very bored.
I use the control codes a lot and I write articles to help with the use of these codes and Rosegarden
http://linuxmao.org/Code+controle+pitchbend+dans+un+s%C3%A9quenceur
But now, to change my compositions it's hell!
Is there a special setting to do, or is it a bug that will be repaired?
Thank you in advance for your reply.

Discussion

  • Ted Felix

    Ted Felix - 2018-05-01

    This was changed in [r14511] and first delivered in 16.02. It was a result of work on bug [#1485] and the related bug [#1480]. 15.12 was the last version with the old behavior.

     

    Related

    Bugs: #1480
    Bugs: #1485
    Commit: [r14511]

  • Ted Felix

    Ted Felix - 2018-05-01

    Confirmed that 15.12 sends the nearest CC to the left of the playback position pointer at playback time. Confirmed that 16.02 works correctly as well. Confirmed that 16.06 is broken. Need to track down the offending commit. Test composition attached.

     
  • Ted Felix

    Ted Felix - 2018-05-02

    This bug was introduced by [r14644] which was a fix for bug [#1516].

     

    Related

    Bugs: #1516
    Commit: [r14644]

  • Daniel Génon

    Daniel Génon - 2018-05-02

    Thank you again for your promptness for the answer.
    If this bug is fixed in the current version 17, then I will use version 17.
    If no, I'll wait.
    Should I close this thread or are you doing it?

     
  • Ted Felix

    Ted Felix - 2018-05-02
    • assigned_to: Ted Felix
     
  • Ted Felix

    Ted Felix - 2018-05-02

    This is still a bug in the current svn. I recommend that you switch to version 16.02. Then once the bug is fixed, switch to working from the latest svn. We can use as many people as possible testing the latest. If you run into a problem, you can always go back and run an earlier version until it is fixed. Also be sure to subscribe to the users mailing list. It's low volume, but I do announce major changes there that need testing.

    I am currently working this issue as my top priority.

     
  • Ted Felix

    Ted Felix - 2018-05-02
    • labels: MIDI controllers --> MIDI controllers, MIDI
    • Group: None --> Next Release
     
  • Ted Felix

    Ted Felix - 2018-05-02
    • summary: Send all MIDI Controllers at start of playback parameter does not exist anymore ! --> Proper MIDI CCs not sent at playback
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -3,8 +3,10 @@
     I have a problem with resetting the control codes when I play a song.
     example :
     I use the CC7 on a track that contains a series of notes. At the beginning the CC7 is initialized to 53, at the end of the track, I end with a shunt by applying a sequence of value, from 52 to 0.
    +
     With 16.06 :
    -The first time I play the song until the end everything is fine I get a "shunt", If I put the cursor in the middle of the track, no sound, the CC7 remains initialized to 0.
    +**The first time I play the song until the end everything is fine I get a "shunt", If I put the cursor in the middle of the track, no sound, the CC7 remains initialized to 0.**
    +
     With 12.04, I did not have this problem because the runtime parameter in the configuration :
     Send all MIDI Controllers at start of playback
     reset the CC to the value closest to the cursor position.
    
     
  • Ted Felix

    Ted Felix - 2018-05-02

    Removing the "if" that was added around the call to insertChannelSetup() in ChannelManager::makeReady() fixes the problem. But, of course, it brings back the original problem that was reported in bug [#1516].

    Looks like I need to go back to the drawing board and re-fix [#1516] properly.

     

    Related

    Bugs: #1516

  • Daniel Génon

    Daniel Génon - 2018-05-02

    OK, I will use version 16.02 to continue my music.
    And I will later go to the development version to do tests.
    I am registered to the users mailing list.
    I developed in C ++, and I know the difficulty to detect and fix a bug.
    Good luck, the future is always ahead, never behind!

     
  • Daniel Génon

    Daniel Génon - 2018-05-04

    Hi,
    I do not have any problem with CC back-boots using Rosegarden 16.02.
    I downloaded the sources and I installed them in qtcreator, after a few download dependencies, I compiled.
    I had only one compilation error, which surprised me, but it may be due to the compilation environment.
    I am using QTcreator 4.2.0 Based on Qt 5.7.1 (GCC 6.3.0 20170415, 64 bit)
    Rosegarden is in QT version 4.8.7
    The error is in the file: gui/dialogs/PitchBendSequenceDialog.cpp
    Line 922: numSteps = abs (float (valueChange) / float (rawStepSize) + 0.5);
    generate an ambiguity error on the function abs (..) the values being floats and the result for a typed result int
    I changed the line this way:
    numSteps = abs ( int (float (valueChange) / float (rawStepSize) + 0.5));
    I do not think this change could affect other elements of the software.
    As soon as the version 17 will be patched I will download it to make tests.
    My problem is currently resolved, I think you can close the thread.
    bye.

     
    • Ted Felix

      Ted Felix - 2018-05-04

      The error is in the file: gui/dialogs/PitchBendSequenceDialog.cpp

      This was fixed in [r14627] which was in May 2016. The newer gcc catches that one.

      My problem is currently resolved, I think you can close the thread.

      OK. I'll keep it open until I get it fixed. Should be able to get back to work on it Monday.

       

      Related

      Commit: [r14627]

  • Ted Felix

    Ted Felix - 2018-06-18

    I think I've got this figured out, but this won't be simple to fix. Essentially, rg has never sent a proper "channel setup" (BS/PC/CCs) when play was pressed. At least, not in 11.11.42. With Tom's addition of auto-channels (post-11.11.42), he added a partial solution to this problem. Unfortunately, this solution sends out the "wrong" channel setup at the beginning of a segment. It also doesn't search backwards past the beginning of a segment to piece together the proper channel setup.

    At this point, I believe the solution is to implement this as a new feature for fixed channel tracks. At playback time, the track will be searched backwards from the playback position pointer to the beginning to put together a proper channel setup.

    I'm in the middle of reviewing and cleaning up the code in the relevant areas. At the moment, this is my top priority as this is a pretty glaring omission. However, this is going to take some time. Hoping to get this done for 18.12.

     
  • Ted Felix

    Ted Felix - 2019-06-27
    • Group: Next Release --> None
     
  • Ted Felix

    Ted Felix - 2020-02-25

    In [r15731], I think I've reintroduced what used to be the "alwayssendcontrollers" feature, but with a different name. It is now found in the Rosegarden.conf as:

    [Sequencer_Options]
    forceChannelSetups=true
    

    If you set this to true, you will get CCs sent out at playback as before.

    An unpleasant side-effect is that you will also get MIPP (Instrument Parameters box) CCs sent out at the beginning of each Segment at playback and MIDI export. I'm pretty sure that's the way it used to work, so you are probably used to this. My next goal is to try and remove this side-effect.

    Sorry this took so long. The code is mind-bogglingly difficult to follow, loaded with iterators, inserters and inheritance spaghetti. Hopefully OP can now upgrade to the latest and have this feature that has been missing for so long. Grab the latest svn, build and test. Let me know how it goes.

     

    Related

    Commit: [r15731]

    • D. Michael McIntyre

      With one comment about inheritance spaghetti you made me feel a lot better for never being able to achieve more around here. This controller nonsense in particular was always one of those things I struggled to even define in terms of expected behavior. It's hard to decide whether it's working when it isn't totally clear what the expectations should even be, and the target seemed to move constantly, depending on context, and who was complaining. You're a brave man, Ted Felix.

       
      • Ted Felix

        Ted Felix - 2020-02-25

        I will take an intermediate level programmer with an intense hatred of complexity over an expert who has yet to understand the implications of their actions on future maintainers. Every. Single. Time.

         
  • Ted Felix

    Ted Felix - 2020-02-28
    • status: open --> feedback
     
  • Ted Felix

    Ted Felix - 2020-02-28

    Ok, I think I've got this one figured out. [r15735] fixes the issue where CCs don't go out at playback from the middle of a Segment. So, this should fix the original issue.

    Grab the latest svn and build. To test, please turn off forceChannelSetups if you have it on in Rosegarden.conf:

    [Sequencer_Options]
    forceChannelSetups=false
    

    Please also test Channel 10 (usually drums) as the metronome appears to be sending stuff out on that channel that might be problematic. Let me know how it goes.

     

    Related

    Commit: [r15735]

  • Daniel Génon

    Daniel Génon - 2020-03-01

    Thanks Ted,
    I will download the last svn to compile and test it by modifying the Rosengarden.conf file
    Thank you and see you soon.

     
  • Ted Felix

    Ted Felix - 2020-04-20
     

    Related

    Feature Requests: #482

  • Ted Felix

    Ted Felix - 2020-04-20
    • labels: MIDI controllers, MIDI --> MIDI controllers, MIDI, controllers
    • status: feedback --> closed
     

Log in to post a comment.