billthefarmer / mididriver

Android midi driver using Sonivox EAS library
176 stars 52 forks source link

Controlling the reverb depth #5

Closed stevel05 closed 9 years ago

stevel05 commented 9 years ago

Hi, Sonivox doesn't seem to respond to CC91 to control the reverb depth (I've tried other CC's as well). I can see in your code where you set the default reverb, But it would be nice to be able to change the depth per channel. Is this possible?

I'm sending: 0xB9,0x5B,0x0 which should turn off the reverb on channel 10 (I've tried sending on all channels too). Any advice?

Thanks

billthefarmer commented 9 years ago

Hi. I don't know. I didn't know there was such a thing as CC91 reverb send level until I just looked it up. I have set up the reverb exactly as per the code in MidiFile.cpp from the Android sources. If it doesn't work it's probably because it isn't supported. There don't appear to be any docs apart from those here:https://github.com/android/platform_external_sonivox/tree/master/docs. I have another project on here for building the sonivox library on a raspberry pi: https://github.com/billthefarmer/raspi-sonivox. That will build on a Linux system with a few changes, and probably on OSX as well.The makefile in the host_src folder builds a test program that outputs .wav files, I think, that could be used for testing.

stevel05 commented 9 years ago

Yes, I did look for documentation, it seems sparse to say the least. Thanks for your quick reply. I'll keep looking.

Regards

Steve

billthefarmer commented 9 years ago

I think I've worked out why this doesn't work. There are two sections of code in lib_src/eas_voicemgt.c in the libsonivox sources which are conditionally compiled by the symbol '_REVERB'. They are:

ifdef _REVERB

    pSynth->channels[i].reverbSend = DEFAULT_REVERB_SEND;

endif

and

ifdef _REVERB

case MIDI_CONTROLLER_REVERB_SEND:
    /\* we treat send as a 7-bit controller and only use the MSB */
    pSynth->channels[channel].reverbSend = value;
    break;

endif

That symbol doesn't appear to be defined in the Android.mk build file, although '_REVERB_ENABLED' is. It would be possible to build your own version of the sonivox library with the '_REVERB' symbol defined and include it in your app with the midi library.

stevel05 commented 9 years ago

Wow! ok thanks, that would then presumably mean getting everyone that wanted to use it to install the new lib on their device. I have already contacted Sonivox to ask for support, so I'll pass your findings on, hopefully they will do something about it.

Regards

Steve