-
Notifications
You must be signed in to change notification settings - Fork 256
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Proposal: Adding Soundfont linked modulators #497
Comments
I do believe that it's a useful addition to fluidsynth. I am however having trouble to get used to it. Can you provide any soundfont(s) that make use of this? Or do you have a practical example how linked modulators could be useful? |
I am quite excited about this feature, but also have a little trouble to get my head around it. It seems like it would be very useful for real-time playback, especially if Fluidsynth is used with very expressive musical instrument MIDI controllers like breath controllers or also the project I am working on. But I haven't read the spec yet.. will do that in the next few days. You say there are "few free soundfont editors" with support for linked modulators. Do you actually mean "few" (in which case there would be at least one), or "none"? I know you say that Polyphone has partial support... but is this enough to actually try out the capabilities of linked modulators? And if not.... how do we test and experiment with this feature if there are no editors we can use? |
No, unfortunately. The only soundfont i had made is for code testing purpose and have really no sound interest. Anyway i can provide this ofc.
Following figures is an attempt to show the interest of linked modulators.
Polyphone allows all cases illustrated by fig.2 (i.e product of any modulators). Unfortunately Polyphone doesn't support case illustrated by fig.3 (the most interesting imo). Fig. 3 case allows to localize the effect of some modulators on a generator by grouping these modulators into one "complex" modulator. I think that this helps to design effect in a hierarchically way.
We can do fig. 2 case with Polyphone. (the main developer is recently aware of fig.3 case lack). Note: As providing attached files is no more possible since GitHub is in the hands of Microsoft, /doc/linked_modulators_figures.pdf have been added in last commit on branch linked-modulators. |
@mrbumpy409 FYI |
The maximum size for files is 25MB and the maximum size for images is 10MB. https://help.github.com/articles/file-attachments-on-issues-and-pull-requests/ |
The file in question is 101KB in size. Presumably this is too small in 2019. |
Seems to work for me: linked_modulators_figures.pdf |
I wonder if there is perspective to get |
Don't think elementgreen is doing any programming in mid-term... at least according to what he said last time I spoke to him. |
I see..... Hope that elementgreen is fine. Talking about swami, I would like to get a source version that runs on Windows. I have already successfully compiled it from source (from |
I haven't done much on Swami in a long time and recently decided that I likely wont be doing anything with it in the future, because of moving on to other projects. The most recent Swami source code is the git repository on github. When I was building for windows, I used the same source code and cross compiled on Linux using MinGW I believe. If anyone wants to take over maintaining Swami, I'd happily pass it along to someone capable. |
Good to hear from you.
@elementgreen I would like to. We also have a PR ready that adds DLS loading to fluidsynth using libinstpatch. Unfortunately the recent git version of libinstpatch is broken. Many assertions fail when loading an arbitrary dls file. I'd like to fix that as well. ** (process:8908): CRITICAL **: ipatch_sf2_voice_set_sample_data: assertion 'IPATCH_IS_SAMPLE_DATA (sample_data)' failed
** (process:8908): CRITICAL **: ipatch_sf2_voice_cache_sample_data: assertion 'voice->sample_data != NULL' failed |
Many thanks for your work and commitment . |
@derselbst Great to hear you are interested in maintaining Swami! Let's continue the discussion via email. |
@jjceresa You're very welcome. I'm glad there is the possibility of it continuing on. |
Basically, i think that it is possible to get swami building and running on any OS (linux,windows,mac). (swami.exe:1124): Glib-GObject-CRITICAL **: file d:\winprojet\soundfontspec\soundfontedi (swami.exe:1124): Glib-GObject-CRITICAL **: file d:\winprojet\soundfontspec\soundfontedi And later an access violation occurs during Actually i have no knowledge on gobject and libswami components to debug this ! |
A quick heads-up: it looks like Polyphone now supports all three cases. I haven't actually tried it to use it yet, but adding three modulators in polyphone, linking the last two to the first produces the following Fluidsynth debug output with the current linked-modulators branch:
|
Yes, Polyphone author added these on my request. Unfortunately I cannot try it because installation of recent Polyphone version are now refused on Windows XP ! :).
Actually, this is for printing purpose only. This is displayed by Note when editing a complex modulator in Polyphone, index ordering of any complex modulator's member should be free (soundfont spec). In other words it doesn't matter if the However, inside fluidsynth, soundfont
|
1)Overview.
Linked modulators is a SF specification (rev 2.04 - 9.5.4) that extends the modulators capabilities of classic non-linked modulators. A non-linked modulator have 2 MIDI event inputs sources and a generator destination.
Linked modulators allows a soundfont designer to think and design a "complex" modulator tailored to the need of a particular sound articulation during playing performance. This
complex
modulator can have any MIDI events inputs and a generator destination. Its internal structure is free. This way the soundfont designer can easily substitute a complex modulator by another. Also the musician at performance time can select a sound articulation or another on the fly without express need to select another preset (at least in most situation). In others words "complex" modulator helps to think, design, and play sound articulated instruments in real time.2)Implementation in actual branch
linked-modulators
This brings full SF linked modulators to fluidsynth
2.1) Checking linked modulators at
soundfont loading
time.2.2)At
noteon
time.The concept of modulators precedence (instrument zone(local/global) , preset zone(local,global)) and the
additive
effect of presets modulators works also for complex modulators the same way it works for non-linked modulators. So the behaviour is straightforward in regard to actual know SF specifications.2.3)Real time modulation
on CC change
is implemented.Note that taking account of linked modulators at noteon time (2.2) or during CC change (2.3) is done without lost of performance in regard to non-linked modulators (i.e the overload is very low).
3)Soundfont editor abilities
This is a major issue. Few free soundfont editor have linked modulators capabilities. Polyphone editor actually has partial capabilities (probably due to misunderstanding about SF specifications).
I hope that editor developer would add this capabilities !.
Opinions, comments are welcome.
The text was updated successfully, but these errors were encountered: