I compose MIDI tracks for live performance with nearly 600 songs to my credit. I've recently decided to try using a few General MIDI files on my cell phone just for convenience. For whatever reason, when playing my files on my Android device, (and I've tried several Android devices) they all add copius amounts of reverb/echo to each track within each file. I've used the MIDI CC 91 and also 121 to try to correct the issue but to no avail. I can play these files on a Windows PC with no issues. It's apparently something related to Android devices. Does anyone have any suggestions? Thanks!
Could it not be that you do not set the reverb for the individual channels, or is it global?
Does not the fact that the status byte have range 176-191 speak for that it is individual on each channel?
I am writing a "midi?" sequenser but not really dealing with midifiles just import them, i think for me it is easy once imported to just filter out them, or do a global change / midichannel change of the reverb settings. The hard thing to save it back into midiformat.
I am guessing now, the fact that it do not work for you, is due to you not change on every channel, or just change the first occurrence on a midichannel?
You must find some editor able to filter them out. or globally adjust them i guess?
JT
Or are you by chance using a soundfontplayer or soundfont, on the Android device where you can not adjust the reverb setting.
I think now it may not be because the midifiles, but instead because auto reverbation of the GM soundfont, "player" on the the Android device.
You simply need a better GM device for your Andoid unit?
On the PC do you use soundfonts or connected hardware when playup, what does the android unit playup to?
Are your midifiles "standarised" to use GM sounds during playup?
It could be as simple that the player on android devices is flunky, or the soundfont it use.
JT
The Android synthesizer is the Sonivox EAS, belonging to the AOSP (Android Open Source Project). https://android.googlesource.com/platform/external/sonivox/
The source code of this synthesizer supports both Reverb and Chorus effects, but only the Reverb effect is enabled at build time in all Android releases. The settings of this effect (room size, dry/wet mix) are configurable at run time, but there is no way to change them for the Android player. I use the same synth in my VMPK for Android (but compiled with different settings), where you can select the reverb and chorus type or deactivate the effects, and also use CC 91 and CC 93 to change the dry/wet mix, but by default this synth ignores these CC messages. Sorry, maybe there is another MIDI player for Android with better effect control but I don't know.
I am not quite sure i understand, so you think the problem is because of the midiplayer not sending CC, or the synthesizer not listening/interpretate CC?
You can change reverb live playing, but once you playup midifile the "cc reverb" stuck at one initial value/level?
To me it seem it could be either of the problems, either the synth do not handle cc reverb other then a global reverb value "not midi". Or the midiplayer do not send the cc's that seem unlikely, i would say the synth do not support reverb changes over midi cc, just a global reverb that can be changed during liveplay?
JT
As noted above, the likely problem is part of the actual virtual sound, and not midi. The midi CC - if you try to use it, will have no effect. The built-in sound is - I guess - pretty much fixed, and you have little control over it. Maybe there is a way to completely replace the sound system, so that a different soundfont is used?
I have noticed a similar thing when I'm using a soundfont on my PC. The particular one I use, which I quite like otherwise, does seem to have a fair bit of echo/reverb built in, and it's not subject to change via normal CC. Luckily not 'too much'.
Either the reverb was already part of the sound when it was originally sampled to create the foundfont (or whatever type of file it is) or it has been added at a very early stage of processing. You can ADD such effects easily enough, I'm not sure it's possible to take them away unless you can remove or reduce the process that ADDs in the first place.
Geoff
@Geoff: exactly. The Sonivox EAS ignores CC 91 and CC 93 messages. Its API has methods to change the reverb and chorus presets and also the dry/wet levels, but these methods are not connected to any MIDI CC messages, so they can't be changed by a MIDI file or a MIDI IN stream. I've used this same synth in two other projects: [Linux SonivoxEAS]( https://github.com/pedrolcl/Linux-SonivoxEas) and [Android NativeGMSynth]( https://github.com/pedrolcl/android/tree/master/NativeGMSynth) (for Android6+). Both have configuration settings to enable/disable reverb and chorus, but are not aware of CC 91/93. The official Android MIDI player uses the same synthesizer, with reverb enabled but without any means to be disabled or changed.