bradhowes / SoundFonts

Powerful polyphonic synthesizer for iOS that relies on sound fonts for generating audio - https://bradhowes.github.io/SoundFonts/
MIT License
73 stars 9 forks source link

Pitch bends affect all channels #8

Open ChickenSaysBak opened 11 months ago

ChickenSaysBak commented 11 months ago

I am using the app with a Warbl wind controller on channel 1 and drones on channel 2. Whenever I use vibrato or slides on channel 1, the pitchbend applies to channel 2 as well.

If possible, it would be nice if pitchbends only applied to their respective channels, or if select channels could be excluded from pitchbends entirely.

Coincidentally, the manufacturer of the Warbl has also voiced a concern for this problem just a couple weeks ago: https://sante100.polyphone-soundfonts.com/forum/soundfonts-help/821-disable-pitchbend

bradhowes commented 10 months ago

Hi @ChickenSaysBak

Can you be a bit more specific about how you set up your environment? Curious about the channel 1 and channel 2 setups and how these are configured, how they are receiving data from your Warbl device. I am trying to understand better how SoundFonts is being used in your setup to see what options there could be.

Regards,

Brad

ChickenSaysBak commented 10 months ago

Here's a log snippet of the midi messages:

On 2 46 36
On 1 67 64
PB 1 0 60
PB 1 49 58
PB 1 45 59
PB 1 4 59
PB 1 49 58
PB 1 94 57
...
PB 1 102 19
PB 1 30 16
PB 1 40 13
PB 1 9 10
PB 1 72 4
PB 1 0 0
Off 1 67 64
Off 2 46 36

When the drones are turned on (via a button on the back), a "Note on" message is sent on channel 2 for note 46 (Bb). When it is pressed again, the note is turned off.

On channel 1, the melody notes are sent. The Warbl has optical sensors that detect how close your fingers are to the holes, and as the sensors detect change, they send corresponding pitchbend messages on channel 1.

The problem is that the pitchbends on channel 1 (intended for the chanter/melody only) are being applied to channel 2 affecting the drones which should remain a constant pitch. Here is a demo video highlighting the problem: https://youtu.be/0rzE_l4ytUI

bradhowes commented 10 months ago

@ChickenSaysBak

Perfect! Thanks! Now I have a better understanding of what is going on. I think I have a fix.

Brad

ChickenSaysBak commented 10 months ago

Do you think you will have an update released to the App Store before Friday the 24th? If not, that's okay, I'm just trying to figure out if I need to get an alternative solution together (worst case scenario, I'll use my laptop, but it's not ideal).

bradhowes commented 10 months ago

@ChickenSaysBak Unfortunately, no. My first attempt failed due to an issue with the underlying synth engine I am using. It does not filter by MIDI channel, and so all note sent are affected by pitch bend and other controller changes. I have begun work on an alternative approach to remove this issue but it will take time.

On alternative you have is to use a digital audio workstation that will allow you to host multiple versions of SoundFonts such as AUM or GarageBand. You would then configure each version to respond to a specific MIDI channel, say 1 and 2. As long as your MIDI messages are appropriately tagged, this should work right now and provide you with the note playing experience you are looking for.

Brad

ChickenSaysBak commented 10 months ago

Thank you! I didn't see a way to restrict the midi channel within GarageBand or the SoundFonts panel (there seems to be less settings available there than on the standalone app), but what I did was split the soundfont file into 2 and loaded one on GarageBand and the other on the standalone SoundFonts app with midi channel set to 2, and that did the trick.