Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
dev:control_changes [2020/04/22 02:06]
tedfelix created
dev:control_changes [2020/04/22 02:13]
tedfelix [Force Channel Setups]
Line 1: Line 1:
 ====== Control Changes ====== ====== Control Changes ======
 +
 +The code that sends out control Changes in Rosegarden is pretty convoluted.  This document points out the key areas of interest.  Hopefully this will ease future maintenance.
  
 ===== Allow Reset All Controllers (CC 121) ===== ===== Allow Reset All Controllers (CC 121) =====
Line 9: Line 11:
   Edit > Preferences... > MIDI > General tab   Edit > Preferences... > MIDI > General tab
  
-The MIDI preferences are displayed by the MIDIConfigurationPage class.  The preference itself is stored in Rosegarden.conf as follows:+The MIDI preferences are displayed by the ''MIDIConfigurationPage'' class.  The preference itself is stored in Rosegarden.conf as follows:
  
   [Sequencer_Options]   [Sequencer_Options]
Line 19: Line 21:
  
   [Sequencer_Options]   [Sequencer_Options]
-  forceChannelSetups=true+  forceChannelSetups=false
  
 When set to true, channel setups will be sent out every time play is pressed.  If outside of a Segment, the channel setups will be based on the track values in the Instrument Parameters panel (MIPP). When set to true, channel setups will be sent out every time play is pressed.  If outside of a Segment, the channel setups will be based on the track values in the Instrument Parameters panel (MIPP).
 +
 +The default for this preference is false.
  
 ===== Manage Controllers dialog ===== ===== Manage Controllers dialog =====
      
-The ControlEditorDialog class is the "Manage Controllers" dialog.+The ''ControlEditorDialog'' class is the "Manage Controllers" dialog.
          
-//A better name for this class might be "ManageControllers".//+//A better name for this class might be "''ManageControllers''".//
          
 Controllers can be added, modified and deleted here.  Deleting a controller here will prevent it from ever being sent out at composition load time, and playback time. Controllers can be added, modified and deleted here.  Deleting a controller here will prevent it from ever being sent out at composition load time, and playback time.
Line 33: Line 37:
 ===== MIDI Instrument Parameters ===== ===== MIDI Instrument Parameters =====
  
-The MIDIInstrumentParameterPanel class is the "Instrument Parameters" panel that appears in the lower left when a MIDI track is selected.  Here the user can adjust the initial settings for the various controllers that were configured in the "Manage Controllers" dialog for a Device.+The ''MIDIInstrumentParameterPanel'' class is the "Instrument Parameters" panel that appears in the lower left when a MIDI track is selected.  Here the user can adjust the initial settings for the various controllers that were configured in the "Manage Controllers" dialog for a Device.
  
 ===== Controller Rulers ===== ===== Controller Rulers =====
  
-The ControllerEventsRuler class provides the controller rulers that can be displayed in both the Matrix and Notation editors.  These can be enabled from both editors by:+The ''ControllerEventsRuler'' class provides the controller rulers that can be displayed in both the Matrix and Notation editors.  These can be enabled from both editors by:
  
   View > Rulers > Add Control Ruler > ...   View > Rulers > Add Control Ruler > ...
Line 47: Line 51:
 ===== Controller Sequence dialog ===== ===== Controller Sequence dialog =====
  
-The PitchbendSequenceDialog class provides both the controller sequence dialogs and the "PitchBend Sequence" dialog.+The ''PitchbendSequenceDialog'' class provides both the controller sequence dialogs and the "PitchBend Sequence" dialog.
  
 These dialogs are accessible from both the Matrix and Notation editors: These dialogs are accessible from both the Matrix and Notation editors:
Line 69: Line 73:
  
   * Called when a new Composition is loaded.   * Called when a new Composition is loaded.
-  * Calls RosegardenDocument::initialiseStudio()+  * Calls ''RosegardenDocument::initialiseStudio()''
  
 ==== RosegardenDocument::initialiseStudio() ==== ==== RosegardenDocument::initialiseStudio() ====
  
-  * Calls Instrument::sendChannelSetup()+  * Calls ''Instrument::sendChannelSetup()''
  
 ==== Instrument::sendChannelSetup() ==== ==== Instrument::sendChannelSetup() ====
Line 92: Line 96:
 ==== InternalSegmentMapper::makeReady() ==== ==== InternalSegmentMapper::makeReady() ====
  
-  * Calls InternalSegmentMapper::getControllers() to get the controllers that are needed for a channel setup. +  * Calls ''InternalSegmentMapper::getControllers()'' to get the controllers that are needed for a channel setup. 
-  * Calls ChannelManager::makeReady() to set up the channel.+  * Calls ''ChannelManager::makeReady()'' to set up the channel.
  
 ==== InternalSegmentMapper::getControllers() ==== ==== InternalSegmentMapper::getControllers() ====
  
-  * Eventually calls ControllerContextMap::getControllerValue() which gets the current CC values when in the middle of a Segment.+  * Eventually calls ''ControllerContextMap::getControllerValue()'' which gets the current CC values when in the middle of a Segment.
  
 ==== ControllerContextMap ==== ==== ControllerContextMap ====
  
-  * A map of CC values over the course of a Segment.+  * A map of CC values over the course of a ''Segment''.
   * Can be queried to find out the last CC that was sent prior to a given time.   * Can be queried to find out the last CC that was sent prior to a given time.
  
 ==== ChannelManager::makeReady() ==== ==== ChannelManager::makeReady() ====
  
-  * If playback is starting in the middle of the Segment, sends out a channel setup.+  * If playback is starting in the middle of the ''Segment'', sends out a channel setup.
  
 ===== Control Changes at MIDI File Export ===== ===== Control Changes at MIDI File Export =====
 
 
dev/control_changes.txt · Last modified: 2022/05/06 16:07 (external edit)
Recent changes RSS feed Creative Commons License Valid XHTML 1.0 Valid CSS Driven by DokuWiki