fluid-dev
[Top][All Lists]
Advanced

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

Re: [fluid-dev] Issue with modulation


From: jean-jacques.ceresa
Subject: Re: [fluid-dev] Issue with modulation
Date: Fri, 22 Jul 2016 11:24:27 +0200
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0

Hi Mark,

I think controller 1 is modulation MSB. I don't know what effect setting it
to 127 is actually intended to have, but then I don't understand why any
such message should be generated :(.

Yes, controller 1 is CC modulation MSB and on noteOn (commands or MIDI) there 
is a default Modulator
to 'Vibrato LFO pitch depth generator. But keep in mind that any 'identical' 
modulator inside the soundfonts
supersede any default modulator.

To validate your found, you can use the following commands that force any MIDI 
CC 1 value
to 0 for channel 0 and 1. The router is an excellent tools during testing phase:

#remove current rules. The router drops MIDI all events!!
router_clear

#set the rule to force CC 1 value to 0, for channel 0
router_begin cc
router_chan 0 0   0 0
router_par1 1 1   0 1
router_par2 0 127 0 0
router_end

#set the rule to force CC 1 value to 0, for channel 1
router_begin cc
router_chan 1 1   0 1
router_par1 1 1   0 1
router_par2 0 127 0 0
router_end

#now set the rules to pass through other useful events (note, prog change, 
pitch bend,channel pressure, key pressure)
router_begin note
router_end
router_begin prog
router_end
router_begin pbend
router_end
router_begin cpress
router_end
router_begin kpress
router_end

#and, so on, for example, to pass sustain pedal to all channels
router_begin cc
router 64 64 0 64
router_end

Now you can send MIDI noteOn/Off and verify if the issue is gone or not.

Best regards


Le 22/07/2016 01:45, Mark de Roussier a écrit :
Hi Element,

OK, I've just tried the aseqdump idea. There are no unexpected note events.
But there are control change events sent when I change channel on the
keyboard, which of course I am doing during my test. When I change midi
channel from 1 to 2, I see :

Control change  0, controller 1, value 0
Control change  1, controller 1, value 127

And vice versa, for 2 to 1 :

Control change  1, controller 1, value 0
Control change  0, controller 1, value 127

I think controller 1 is modulation MSB. I don't know what effect setting it
to 127 is actually intended to have, but then I don't understand why any
such message should be generated :(.

And just to confirm, I also see these when I dump the channel using 'amidi
-p hw:1,0,0 -d'.

Arrrgh !!!! I've just tried pressing the 'vibrato' button on the keyboard
I'm using, which is ancient and only used for hacking/testing purposes.
There's a small rubber button that turns vibrato on, and a LED that should
light up when vibrato is on, but it seems that it doesn't.

Very sorry to waste all your time - but without your help, I might still be
screwed, so thanks a lot :).

Cheers,
Mark

On Thu, 21 Jul 2016 15:52:47 -0600, you wrote:

Hello Mark,

I wouldn't trust the Anjuta project file, it may be outdated.  The cmake
build is the recommended method of building FluidSynth currently.

In regards to MIDI events being possibly the source of the problem, what
about running something like aseqdump and connecting your keyboard up to it
and see if it is sending anything weird.

Best regards,

Element

On Thu, Jul 21, 2016 at 3:48 PM, Mark de Roussier <address@hidden>
wrote:

Hello Jean-Jacques,

OK, I agree completely that this behaviour is strange :). I expected that
the noteon command would be enough show the problem. I was very surprised
when it didn't and I needed to hit a key on the midi keyboard.

But if my midi keyboard was sending on two channels or alsa was causing
duplication, and the fluidsynth router is not doing anything, I would also
expect to hear the problem when trying to play the Hammond on channel 2,
which would be mixed up with the Acoustic Keyboard on channel 1. This does
not happen.

And it does not explain ( for me ! ) why cc 0,121,0 ( which deals only with
the state of modulators for the voice associated with the channel, I think
) makes the problem go away on channel 1 until another 'Hammond' key is hit
via another channel.

Here is what 'amidi -p hw:1,0,0 -d' says when I hit a midi keyboard key (
middle C on channel 1 ) with the channel set to 1 :

90 3C 5A
90 3C 00

And with the channel set to 2 :

91 3C 5A
91 3C 00

So, just the note on and note off for one channel.

I noticed there was an Anjuta project file. I've been looking at the
sources in Anjuta on my workstation, and I can build it there, so I'll see
if I can reproduce the problem there too, will be easier to work with than
on the RPi.

Thanks,
Mark

On Thu, 21 Jul 2016 09:51:59 +0200, you wrote:

Hi, Mark

Hope thiss should help to localize the issue:
A)Inside Fluidsynth,
1)The 'noteOn command' plays a note using the function API
fluid_synth_noteon(channel,key,velocity).
2) When receiving a MIDI noteOn message, the MIDI driver puts this
message to the input Router and than the Router use the same API
fluid_synth_noteon(channel,key,velocity).
The same description is true for 'noteoff command'/ MIDI noteOff message
(both make use of API fluid_synth_noteoff(channel,key)).
If we assume that the router is neutral (which is the default behavior),
there is no reason that  the results using 'commands noteon/noteoff,' or
using MIDI are differents.

So, may be your MIDI keyboard sends events on more than one MIDI
channels at the same time ?.
Or, may be Alsa Driver do this kind of duplicates MIDI messages ?

B)
Current Raspian distro, fluidsynth 1.1.6
Just want to report that the current fluidsynth 1.1.6 coming from Rasbian
repository is out of date!
I don't think that the issue is related to current Rasbian fluidsynth.
however, if your RPi is connected to internet you may update:
1)Download the current git fluidsynth source version (1.1.6) on
sourceforge.
2)Build Fluidsynth.

Regards


Le 20/07/2016 20:14, Mark de Roussier a écrit :
Hello Jean-Jacques,

perhaps it will help if I describe how I can create the problem.

Environment :
=============
Current Raspian distro, fluidsynth 1.1.6

I'm using an RPi 2 with an external Behringer USB DAC and a Roland
UM-ONE
USB Midi adaptor - I don't believe the specific hardware is relevant.

Steps to reproduce :
====================

Run fluidsynth as follows :

schedtool -R -p 49 -e fluidsynth -a alsa -o
audio.alsa.device=front:CODEC,0
-m alsa_raw -o midi.alsa.device=hw:1,0,0 -g 0.5 -C no -R no -l

Load the standard GM font :

      load /usr/share/sounds/sf2/FluidR3_GM.sf2

Sound a note from this font :

      noteon 0 60 80
      noteoff 0 60

This makes the correct noise - GM Acoustic Grand.

Load a Hammond Organ font :

      load /home/pi/Music/Hammondsf2/05.sf2

This has blown away our channel mapping, so remap :

      select 0 1 0 0
      select 1 2 0 0

Sound the same GM note as before :

      noteon 0 60 80
      noteoff 0 60

This makes the correct noise - GM Acoustic Grand.

Sound a note from the Hammond font :

      noteon 1 60 80
      noteoff 1 60

This makes the correct noise - Hammond.

Sound a note from the GM font again :

      noteon 0 60 80
      noteoff 0 60

This makes the correct noise - GM Acoustic Grand

Now play a note on channel 2 on a midi keyboard - this makes the correct
noise ( Hammond ).

Now play a note on channel 1 on a midi keyboard. This makes the WRONG
noise, its a horribly distorted Acoustic Piano.

It might just be a mix of Hammond and Acoustic Piano, but to me it
sounds
more like the Acoustic Piano with the vibrato from the Hammond.

Issue the command

      cc 0 121 0

Play the keyboard again ( channel 1 ) - now this makes the correct
noise (
Acoustic Grand ).

Unfortunately the Hammond soundfont is commercial, so I can't just
share it
:(. I used a tool ( Swami ) to look at this font. When I look at notes
in
the instrument section, and select the 'Misc. Controls' tab, I see a non
zero value ( 8.176 ) for the frequency setting of the Modulation LFO.

So my initial hypothesis is that when a note is played ( via MIDI ),
then
this modulation is applied to all MIDI channels, even if they are
mapped to
an entirely different font.

Cheers,
Mark

On Wed, 20 Jul 2016 09:56:14 +0200, you wrote:

Hi, Mark

the modulation characteristics of a Hammond font mapped to one midi
channel end up being applied to everything...
Can you explain what you mean by "..the modulation caracteristics of a
Hammond font.." ?
If you feel that there is something wrong, please don't hesitate to
explain what you have found.
I've looked at sourceforge, but it wasn't clear how I should raise a
ticket.

1) You must create an account on Sourceforge.
2) Once logged from your account, the Ticket tab enables menus to
create and edit your ticket.
Is this an appropriate place to discuss the problem ? If so I'll
supply more details.
I you read through the tickets you will find that usually tickets are
used to:
1) raise "Bugs"  or offer "patches".
2) but they are used also for "technical suggestions"about fluidsynth
actual behavior
and possible enhancements to remain compliant with SoundFonts and MIDI.

Regards


Le 20/07/2016 02:30, Mark de Roussier a écrit :
Hi everyone,

I'm attempting to use fluidsynth as the basis for a headless soundfont
synth based on an RPi. The particular requirement is that it should
have
some good Hammond organ sounds, and also support standard GM. So I'm
trying
to configure fluidsynth with some commercial Hammond fonts plus the
standard fluidsynth GM font.

I think I've found a problem in the course of trying to make this
work. The
gist of the matter is that there appear to be some circumstances in
which
the modulation characteristics of a Hammond font mapped to one midi
channel
end up being applied to everything, regardless of font or channel.

I've looked at sourceforge, but it wasn't clear how I should raise a
ticket. Is this an appropriate place to discuss the problem ? If so
I'll
supply more details.

Thanks,
Mark

_______________________________________________
fluid-dev mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/fluid-dev
_______________________________________________
fluid-dev mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/fluid-dev





reply via email to

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