How to mix Pianoteq and a soundfont

Have questions? Just saying hello? This is the place.
No explicit, hateful, or hurtful language. Nothing illegal.
Post Reply
User avatar
Synthesia Multiple Donor!
Posts: 73
Location: France

Post by mahen » 11-07-19 5:33 am

Hi everyone !

I'm rediscovering Synthesia... It works like a charm with Pianoteq to get a very realistic piano sound. I figured out I could use both a soundfont and Pianoteq.

Synthesia enables me to choose which engine (soundfont / pianoteq) is used for : my own notes, the background instruments, the metronome, the drums (which is great, already !)

There are a few corner cases where it's not optimal IMHO but I may be overlooking something :

1) if I choose pianoteq only for my own notes and not for the rest, when playing along with a midi file that contains several instruments incl. several piano tracks, only what I'm personally playing is using pianoteq and the other piano tracks are played with a soundfont (which sounds way worse). Also, if I'm practising the left hand for instance, Synthesia plays the right hand with the soundfont and not pianoteq.

The other problem is that, if the main instrument in the MIDI file is, for instance, an organ, what is actually heard is a piano.

2) if I choose pianoteq for both my notes and the background instruments, everything is played with the (beautiful) piano sound, which sounds OK with many tracks but not with the ones which have many different instruments


- would it be possible to tell synthesia to use a soundfont for everything EXCEPT for piano tracks
- would it be possible to tell synthesia to use pianoteq EXCEPT IF the main track is actually not a piano (or a specific instrument implemented by pianoteq)

Or is there any other solution ?

Best regards
Running Synthesia from Linux (WINE).

Posts: 12330

Post by Nicholas » 11-22-19 3:00 pm

That is an interesting use case. I'd hesitate to add something so specific, but I can definitely see where the need is coming from.


Presumably to send things to Pianoteq, you're already using a virtual MIDI driver like LoopBe1 or loopMIDI, correct? There is always the brute-force answer of routing everything through the virtual driver (through a utility like MIDI-OX) and having it do some clever redirection based on the MIDI patch.

I've never used the "Patch Mapping" feature in MIDI-OX, but peeking at it just now, it might be the most impressive thing I've seen in there so far.

For your situation, you might be able to get away with a single mapping that says "If you see anything on patch 0 (Acoustic Grand Piano), then remap it to the Pianoteq virtual port" and otherwise just send your output to a normal place. (In this case you won't be able to use Synthesia's built-in SoundFont-based synth, but it uses the exact same underlying library as Coolsoft's VirtualMIDISynth. Theirs is arguably more fully-featured (volume mixers, etc.) than Synthesia's anyway.)

So the idea would go something like this:

Code: Select all

                                          ---[Patch 0 mapped to loopMIDI port 2]---> Pianoteq
  Synthesia ---[loopMIDI port 1]---> MIDI-OX
                                          ---[everything else]---> VirtualMIDISynth with the SoundFont of your choice
That's a little convoluted and it adds one more app that you have to run before launching Synthesia, but it might get you the rest of the way there. (Patch Mapping is cool!)

Post Reply