Replies: 3 comments
-
You can send MTS messages. And except for some particular bug (#102) it should work. You can also use the synth's (poorly documented) tuning API: https://www.fluidsynth.org/api/group__tuning.html
Idk.
Idk if you can.
No, you don't have to.
Ideally, yes. |
Beta Was this translation helpful? Give feedback.
-
You have multiple options interfacing with FluidSynth. It has a C-API, so assuming you are using normal cPython, writing your own Python wrapper for the library is fairly easy, either with ctypes or cffi. You might even be able to simply use a project like pyfluidsynth. Or, if pyfluidsynth doesn't provide everything you need, simply extend it by mapping more of the FluidSynth API. Using the API you can configure and start a FluidSynth instance, send midi messages to it and change many more aspects of sound production not available via normal MIDI messages. Another way would be to go for very loose coupling. Have your program only generate MIDI events, then connect it with whatever (MTS-capable) synth you like. In this case you would start FluidSynth via the command-line (or automated by your script). Then connect the FS MIDI input to your programs MIDI output. That way you are more flexible and not tied to a particular synth or API. Just one note about MTS support in FluidSynth: it selects the sample based on the MIDI note number, regardless on which frequency you tune it to. So if you play note 69 (A4, 440Hz) and retune it to 880Hz, it will not use the better fitting sample for A5 but use A4 pitched up to 880Hz. Depending on the amount of pitch shifting, this will sound quite artificial. So in order to limit the amount of pitch shifting of the samples, it might be useful to determine the closest MIDI note number to the frequency you want to play. Then send a note on with that number and set the desired tuning. |
Beta Was this translation helpful? Give feedback.
-
In case someone ends up here looking for a solution here is an implementation example as a very simple tool for retuning fluidsynth or any synth that supports octave tuning messages : https://github.com/jean-emmanuel/synthtuner |
Beta Was this translation helpful? Give feedback.
-
Hi!
FluidSynth appears to be one of the very, very few softsynths that allows this.
I have a microtonal sequencer that doesn't use pitch collections or scales; the user could put any possible frequency into it, and it's not possible to know beforehand what notes they might choose from. Finding an output engine for it has been very frustrating. I used Csound in the original version, but 1. No one wants to learn to code instruments in Csound, and 2. its API has changed significantly since I updated my program, and I'd have to start over again to make it work with the latest version.
I have been browsing FluidSynth code, and it looks like this should work. Could someone tell me if this will be fairly trivial?
My program (Rationale on SourceForge) runs in Python. I can change it to send MTS messages retuning every note.
FluidSynth runs... through a Python API? Can I make that work? Or does the user have to run it on the commandline?
My program sends MTS notes to fluidsynth and voila... right?
Thanks!
Beta Was this translation helpful? Give feedback.
All reactions