I have encountered this sort of thing many times, and it just seems to
be the 'nature' of the beast' - even with General MIDI.
When a particular musician creates a piece of music, it is finely tuned
to the particular synthesizer (and soundfont) being used.
When you play it with a different synthesizer (and soundfont), it
differs from what the musician creating the piece intended.
Most often (at least with General MIDI, where at least the instruments
are the same), this shows up as some instruments being louder than you
want, and others softer.
What I have done to solve this, is to load (or import) the MIDI file
into a sequence editor (such as Rosegarden), and edited the MIDI
controller events, or even added new ones (such as the Expression control).
Keep in mind that if you change the Volume control at the beginning, its
effect will disappear if the MIDI file changes it again.
The best way to deal with that, is to do an over-dub recording on the
particular track, changing the Expression control as it plays. The
over-dubbed Expression events are recorded into the same track, and
become part of the piece, which you can save or export.
If you don't have a keyboard capable of manipulating the Expression
control, the "vmpk" package (on Linux) will provide you an easy means of
doing it.
Another thing I have done was needed for using the FluidR3_GM soundfont,
which responds to the Modulation control (on instruments such as flute
or oboe) by distorting the sound in a non-pleasing manner.
To overcome this, I would use Rosegarden to just strip-out all of the
Modulation (or Channel Pressure) control events, and save the resulting
file under a different file-name (so I still have the original).
If you use Linux, you can easily obtain Rosegarden. Import your MIDI
file, and edit it using the Event-List editor.
Anyway, that is how I have dealt with this situation. Perhaps it will
be a useful approach for you as well.
- Aere
On 01/19/2014 08:47 AM, Element Green wrote:
I suspect that each time a MIDI file is loaded in FluidSynth, it
initializes all the controllers to known default values.
There currently aren't any commands within the shell to play MIDI
files. If there was, it would be possible to say something like "play
my.mid" and then do your CC commands afterwards. So it seems like
there isn't a very good way to do what you are trying to do at the
moment, from the FluidSynth command line application.
An alternative is to use an external MIDI player connected to
FluidSynth, such as aplaymidi. You could then initialize FluidSynth
with the settings you want and then play the MIDI file via the
external application. This would retain whatever controller values
you assign, except for those which get assigned by the MIDI file.
The MIDI router feature of FluidSynth can probably be used to override
CC11 or CC7 assignments. I just did a search on Google and came up
with this thread on fluid-dev. I thought this topic seemed familiar ;-)
https://lists.gnu.org/archive/html/fluid-dev/2012-02/msg00005.html
So basically what I said above is mostly a repeat of what is in that
thread. Here is a copy paste of the router rules I posted then, which
makes any CC7 assignment set the value to 100%.
router_begin cc
router_par1 7 7 1 0
router_par2 0 127 0 127
router_end
And this is for CC 11:
router_begin cc
router_par1 11 11 1 0
router_par2 0 127 0 127
router_end
Description of above rules:
router_par1 sets the CC to modify (first 2 parameters are min/max,
which defines a range of CCs to match). The remaining 2 parameters
are multiply and add, so basically multiply the CC controller number
by 1 and add 0, which means the CC controller number will be unmodified.
For router_par2, the min and max are 0 and 127, so match any value for
the CC and then modify it by multiplying it by 0 (which equals 0) and
adding 127. So the final value will always be 127 regardless of what
is assigned.
Best regards,
Element
On Sat, Jan 18, 2014 at 5:59 PM, Martin Larsson <l4rs...@gmail.com
<mailto:l4rs...@gmail.com>> wrote:
Interesting... However, shouldn't I be able to keep on using midi
files with built-in CC#7 commands and resort to manipulating CC#11
instead (rather than forcing my midi-files to use CC#11), even if
it's not the "right" way to do it? I don't care much for doing
things the right way right now; I just want it to work :)
Anyhow, I'm starting to wonder if I can place CC commands in an
init file at all. For example, when trying to pan everything to
one side by using the CC#10 command in my init file, everything is
still centered during playback. Are my CCs being sent before the
midi file has been properly set up, and therefore also ignored or
reset once playback starts?
On 19 Jan 2014, at 00:42, Jim Henry <jim.he...@sbcglobal.net
<mailto:jim.he...@sbcglobal.net>> wrote:
> The "right" way to do what you want would be for you to use CC
7, channel volume, and the MIDI files to use CC 11, expression
controller. The two values are multiplied together and divided by
128 to get the final volume of the channel. If the MIDI files use
CC 7 for what is really expression control, then you can use CC 11
to control the channel volume to mix the channels.
>
> Jim Henry
>
> On 1/18/2014 1:58 PM, Martin Larsson wrote:
>> Yes, I can confirm that this is the case for my midi files
(which are generated from Lilypond). My CC commands aren't printed
anywhere, but in the list, the following shows up:
>>
>> fluidsynth: cc07100
>> fluidsynth: noteon06490000001.0101.2020.0000
>> fluidsynth: cc17100
>> fluidsynth: noteon16490000011.0101.2030.0001
>> fluidsynth: cc27100
>> fluidsynth: noteon26090000021.0101.2030.0002
>> fluidsynth: cc37100
>> fluidsynth: noteon35790000031.0101.2030.0003
>>
>> So, yes.
>>
>> Is there any way for me to suppress these commands or to make
my own commands from the init file appear directly after them (but
before the first notes are played)?
>
>
> _______________________________________________
> fluid-dev mailing list
> fluid-dev@nongnu.org <mailto:fluid-dev@nongnu.org>
> https://lists.nongnu.org/mailman/listinfo/fluid-dev
_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org <mailto:fluid-dev@nongnu.org>
https://lists.nongnu.org/mailman/listinfo/fluid-dev
_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/fluid-dev
--
Sincerely,
Aere
_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/fluid-dev