fluid-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [fluid-dev] Code patch for GM, GS, XG "system-reset" SysEx's, and Ma


From: jimmy
Subject: Re: [fluid-dev] Code patch for GM, GS, XG "system-reset" SysEx's, and MasterVolume SysEx
Date: Thu, 17 Feb 2011 17:44:52 -0800 (PST)

If you prefer memcmp(), or strncmp(), you can do it.  The main part is done, 
I'm not sure I have time to mess around more with it.  I'm not sure if these 
byteArrays would be used over and over multiple times to deserve a pre-defined 
variable for each.

It's a first try for the volume calculation.  With the default being 0.2, the 
scale is already way-off to start with.  If someone finds a better way to 
calculate master-volume, go right ahead.  I only want/need a way to adjust it, 
as long as it's in there, everyone can use it however they want.

Jimmy





--- On Wed, 2/16/11, David Henningsson <address@hidden> wrote:

> From: David Henningsson <address@hidden>
> Subject: Re: [fluid-dev] Code patch for GM, GS, XG "system-reset" SysEx's, 
> and MasterVolume SysEx
> To: "jimmy" <address@hidden>
> Cc: address@hidden
> Date: Wednesday, February 16, 2011, 5:39 AM
> Hmm, seems this patch went through
> unnoticed?
> 
> Well, I don't mind a maximum gain of 10, it seems like a
> mistake if it's 
> 5 in some places and 10 in others.
> 
> About master volume sysex, I'm a little hesitant if the
> scale is right. 
> What's the default master volume according to the spec?
> That should map 
> against our default volume of 0.2. There is also no reason
> to ignore LSB.
> 
> About the GS/XG/GM sysex (what about GM2 reset, btw?) I
> think the code 
> would look nicer if you did a memcmp() instead of matching
> each 
> individual byte.
> 
> What do you think?
> 
> // David
> 
> On 2011-02-10 23:08, jimmy wrote:
> >
> >
> > Attached is a patch for 4 SysEx messages.  This
> allow Fluidsynth to automatically switch between GM, GS, XG
> mode on the fly, without having to restart, that is. 
> Often a "reset" sysex is sent at beginning of a midi file,
> but not always.
> >
> > Sys-Ex "reset" messages:
> >
>
>    myweb.tiscali.co.uk/mikesmusic/my_technical_articles2.html#sysex
> >
> >     1. GM Reset (understood by
> every GM-compatible instrument)
> >     Sys-Ex String: F0 7E 7F 09 01
> F7
> >
> >     2. Roland GS Reset (Understood
> by all Roland GS instruments)
> >     Sys-Ex String: F0 41 10 42 12
> 40 00 7F 00 41 F7
> >
> >     3. Yamaha XG reset (Understood
> by all Yamaha XG instruments)
> >     Sys-Ex String: F0 43 10 4C 00
> 00 7E 00 F7
> >
> > About master volume:
> >
>
>    home.roadrunner.com/~jgglatt/tech/midispec/mastrvol.htm
> >
> >     Master Volume
> SysEx:   0xF0 0x7F 0x7F 0x04 0x01 0xLL 0xMM
> 0xF7
> >
> > where (0xLL=LSB, 0xMM=MSB), where 7F 7F is maximum
> volume.
> >
> > My patch ignores LSB (LSB=0), simply takes the MSB
> (7-bit, max value 127) devide by 12.70 to get the range of
> [0.0 - 10.0].
> >
> > -----
> >
> > In adding SysEx handler for master volume adjustment
> ("gain" in Fluidsynth), I found a few inconsitencies
> regarding "gain":
> >
> >         -g, --gain
> >               
> Set the master gain [0<  gain<  10, default
> = 0.2]
> >
> > which sets fluidsynth settings of:
> >
> >         synth.gain FLOAT
> [min=0.000, max=10.000, def=0.200] REALTIME
> >               
> Master synthesizer gain.
> >
> > While the fluidsynth command shell and manual page
> have:
> >
> >         gain value
> >               
> Set the master gain (0<  gain<  5)
> >
> > but the shell-command handler fluid_handle_gain()
> doesn't try to scale it in anyway to 10.0.  Any reason
> for that?  Or, it's just an oversight (in previous
> changes).
> >
> > In this patch, I go ahead and change all references
> regarding maximum "gain" from 5 to 10.  Let me know if
> those need to be left alone.
> >
> > Jimmy
> >
> >
> >
> >
> >
> >
> >
> >
> > _______________________________________________
> > fluid-dev mailing list
> > address@hidden
> > http://lists.nongnu.org/mailman/listinfo/fluid-dev
> 
> 






reply via email to

[Prev in Thread] Current Thread [Next in Thread]