Both sides previous revision
Previous revision
Next revision
|
Previous revision
|
dev:control_changes [2020/04/22 02:13] tedfelix [Force Channel Setups] |
dev:control_changes [2022/05/06 16:07] (current) |
====== 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. | 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. |
| |
| Note that code related to sending out Bank Selects and Program Changes can be found along with the code related to Control Changes. This will be pointed out below. |
| |
===== Allow Reset All Controllers (CC 121) ===== | ===== Allow Reset All Controllers (CC 121) ===== |
| |
===== Manage Controllers dialog ===== | ===== Manage Controllers dialog ===== |
| |
| To get there: Studio > Manage MIDI Devices > pick a playback device > Controllers... |
The ''ControlEditorDialog'' class is the "Manage Controllers" dialog. | The ''ControlEditorDialog'' class is the "Manage Controllers" dialog. |
| |
- RosegardenMainWindow::setDocument() | - RosegardenMainWindow::setDocument() |
> RosegardenDocument::initialiseStudio() | > RosegardenDocument::initialiseStudio() |
> Instrument::sendChannelSetup() | > RosegardenDocument::sendChannelSetups() (added January 2021) |
| > Instrument::sendChannelSetup() |
</file> | </file> |
| |
==== RosegardenDocument::initialiseStudio() ==== | ==== RosegardenDocument::initialiseStudio() ==== |
| |
| * Calls ''RosegardenDocument::sendChannelSetups()'' |
| |
| ==== RosegardenDocument::sendChannelSetups() ==== |
| |
| * Added January 2021. |
* Calls ''Instrument::sendChannelSetup()'' | * Calls ''Instrument::sendChannelSetup()'' |
| |
| |
* Sends the channel setups at file load time. | * Sends the channel setups at file load time. |
| * Sends BS/PC for the channel as well. |
* This also might be the code that sends channel setups at the beginning of a MIDI File export. | * This also might be the code that sends channel setups at the beginning of a MIDI File export. |
| |
If changes are made to the way CCs are sent, MIDI export needs to be regression tested to make sure nothing breaks. | If changes are made to the way CCs are sent, MIDI export needs to be regression tested to make sure nothing breaks. |
| |
//I need to expand this at some point. MIDI Export reuses some portion of the above.// | <file> |
| - MidiFile::convertToMidi() |
| > MappedBufMetaIterator::fetchFixedChannelSetup(inserter) |
| > InternalSegmentMapper::insertChannelSetup(inserter) |
| > ChannelManager::insertChannelSetup(TrackId, RealTime, ...) |
| </file> |
| |