pantherb / setBfree

DSP tonewheel organ
http://setbfree.org
GNU General Public License v2.0
194 stars 35 forks source link

Inverted drawbar values not consistent/persistent - using external hardware MIDI drawbar controller (GMlab.it D9-X) #95

Open stevednm opened 3 months ago

stevednm commented 3 months ago

Hello-- I use setBfree in Linux Mint 21.3, using Pipewire (rather than PulseAudio).

I bought a MIDI controller device to adjust/set the drawbars in setBfree without clicking and dragging in the setBfree UX, a D9-X MIDI controller from https://www.gmlab.it/index.html

I found it necessary to invert the MIDI mapping by using SHIFT-CTRL-middle-button on each of the drawbars in the setBfree UI. Although pulling the physical drawbars on the D9-X incremented the value of that particular MIDI CC, setBfree represented the drawbars at fully pulled (setting 8) when the MIDI CC value was at its lowest (0) and as fully withdrawn (disengaged/disabled) when the MIDI CC value transmitted by the hardware MIDI controller was at its greatest (127).

I saved this inverted-drawbar configuration as a setBfree default .cfg file (in ~/.config/setBfree/default.cfg), but not all of the drawbars respond in an inverted way. The default.cfg file is attached, as well as an image that demonstrates which drawbars in the setBfree UI are pulled (level increased from 1 to 8) when the physical drawbars on the D9-X MIDI controller are pushed (decreased from 8 to 1). Regardless of how the physical drawbars on the D9-X are manipulated, certain drawbars in setBfree respond in the opposite way even if they are saved as "inverted" in the .cfg file.

I used a MIDI-monitor app to make sure that when pulling the MIDI-controller drawbars the values for the MIDI CC were incremented, and when pushing that the values were decremented, for each of the physical drawbars (that test passed for each of the drawbars). I tested both the standalore setBfree UI and the LV2 plugin within the Ardour DAW, with exactly the same results in each, after loading the .cfg file quoted below into first the standalone version and then launching Ardour and adding the LV2 version of setBfree to a track.

The D9-X sends all of its MIDI information in MIDI channel 1, which I'm guessing is why, in the .cfg file quoted below, the drawbars for both keyboard manuals and the pedals are prefixed with "midi.controller.pedals", which happens to be the same channel (1) that my organ pedals transmit on (the upper and lower keyboard manuals transmit on MIDI channels 2 and 3, respectively.

I'd be happy to provide whatever other information I'm able to provide that might help.

Best wishes, and THANK YOU for setBfree. :)

`# setBfree config file

modificaions on top of default config

midi.driver=alsa midi.upper.channel=2 midi.lower.channel=3 midi.pedals.channel=1 midi.controller.pedals.91=reverb.mix midi.pedals.transpose=-12 midi.controller.pedals.33=pedal.drawbar16- midi.controller.pedals.35=pedal.drawbar8- midi.controller.pedals.21=lower.drawbar16- midi.controller.pedals.22=lower.drawbar513- midi.controller.pedals.23=lower.drawbar8- midi.controller.pedals.24=lower.drawbar4- midi.controller.pedals.25=lower.drawbar223- midi.controller.pedals.26=lower.drawbar2- midi.controller.pedals.27=lower.drawbar135- midi.controller.pedals.28=lower.drawbar113- midi.controller.pedals.29=lower.drawbar1- midi.controller.pedals.12=upper.drawbar16- midi.controller.pedals.13=upper.drawbar513- midi.controller.pedals.14=upper.drawbar8- midi.controller.pedals.15=upper.drawbar4- midi.controller.pedals.16=upper.drawbar223- midi.controller.pedals.17=upper.drawbar2- midi.controller.pedals.18=upper.drawbar135- midi.controller.pedals.19=upper.drawbar113- midi.controller.pedals.20=upper.drawbar1- midi.controller.pedals.31=vibrato.upper midi.controller.pedals.73=vibrato.knob midi.controller.pedals.66=percussion.enable midi.controller.pedals.70=percussion.volume midi.controller.pedals.71=percussion.decay midi.controller.pedals.72=percussion.harmonic `

setBfree-screenshot