SourceForge has been redesigned. Learn more.

Multiple synths under one audio/midi client?

Andrew C
  • Andrew C

    Andrew C - 2011-07-30

    Is it possible to have multiple synths under one audio/midi client? I think I remember something like this being done, but the man page gives no obvious options to allow it, unless I didn't read through it thoroughly enough?

    I.e having 6 1 voice mono mode polysixes with -hnp as ports under client name of, say, MonsterSynth and having individual output port/(in the case of audio)input ports (in the case of midi) for all six of them.


  • Andrew C

    Andrew C - 2011-10-07

    I was thinking of the -engine flag. Might open a feature request at some point.

  • Nick Copeland

    Nick Copeland - 2011-10-09

    Hi Andrew,

    Sourceforge is painful at the moment, this is another message that I was not notified of. You only have the following options:

    startBristol -polysix -jack -register polysix &
    startBristol -polysix -jack -register poly6

    This will give you two individual GUI and Engine with the respective names. They will be independent and will both appear in Jack separately. You can also do the following:

    startBristol -polysix -jack -port 12345 &
    startBristol -polysix -port 12345 -engine

    This will start a GUI and an engine, the engine will listen on port 12345 for further connections. You then start a second GUI without an engine and connect the GUI to the first engine so it will start another polysix. Both synths will be separate, you can select separate MIDI channels but the output will be folded back to a single stereo output.

    Now yes, you could start 6 independent bristol as monophonic 'polysix' (I use quotes as they are not poly anymore), use different register names, put them on the same channel with note preference and have them all appear separately in Jack. Or you could have one engine play 6 poly and have that folded back onto a single jack output.

    What you want to achieve is a big phat PolySix in Unison mode with note precedence, correct? I don't have this option with the polyphonic emulators, when the emulator is polyphonic I always default to 'nnp', no note (ie, last note) precedence.

    You said you wanted to open a feature request - I think what you want should be possible, perhaps this is just an issue of my bad documentation? Consider first the following requests:

    startBristol -polysix -jack -register polysix_1 -voices 1 -hnp &
    startBristol -polysix -jack -register polysix_2 -voices 1 -hnp &
    startBristol -polysix -jack -register polysix_3 -voices 1 -hnp &
    startBristol -polysix -jack -register polysix_4 -voices 1 -hnp &
    startBristol -polysix -jack -register polysix_5 -voices 1 -hnp &
    startBristol -polysix -jack -register polysix_6 -voices 1 -hnp

    This is a mammoth set of 6 GUI/Synth pairs with individual jack outputs all responding with a single HNP voice. It is supposed to work but no, I have never tested it. There are workflow issues with such a configuration, even if you used six GUI and one engine: if you change a parameter in one of the voices/synths you will have to change it in all of them. You could save and then load the same sound.

    This config would be a bit like the massive OB3/4/6/8 - they really were that may individual synths each with an independent control surface such that you could program each voice independently.

    Kind regards, nick

  • Andrew C

    Andrew C - 2011-10-09

    My bad, I probably wasn't clear enough.

    I meant having say, one bristol client and then having individual ports branching out from that, each one a synth?
    130: Bristol:


    In my mind, it'd look sorta 'cleaner' in qjackctl connections/patchage in a way (and possibly solve the issue of jack running out of ports when too many bristol synths are being started.)


  • Nick Copeland

    Nick Copeland - 2011-10-12

    No, I do not intend to do this. It was considered as a feature but years ago. There are a few objections:

    I don't think it can really save ports: whether one engine or not it still needs a pair of stereo outputs per emulator.
    There are issues with thread distribution over multiple cores (jack2/dmp).
    It is a lot of work for little gain, ie, this is still possible but with multiple bristol engines.

    So we still have the two capabilities:
    1. one engine multiple synths, since stereo output
    2. multiple engines/synths, individual stereo outputs.

    Kind regards, nick

  • Andrew C

    Andrew C - 2011-11-17

    How does the voice allocation for the 'one engine, multiple synths' work? Is it dynamically allocated or does each synth get it's own 'share' of voices from the total available?

    For example:
    startBristol -b3 -voices 32 -port 3333
    startBristol -vox -engine -port 3333

    Does the b3 get 16 voices for all 3 emulators and then the vox gets the other 16?


  • Nick Copeland

    Nick Copeland - 2011-11-20

    Bristol is compiled with a default maximum voicecount, 32. You can raise that on compilation or when you start a synth. The active voicecount is the maximum that the engine can generate at a time, you can view this as the pool of voices.

    Then, each emulator is given a number of voices: when you play notes on that synth they are taken out of the pool to play sounds for that emulator. If the total number of voices exceeds the size of the pool then they are stolen from somewhere - typically that same emulator although there are some exceptions.

    Regards, nick


Log in to post a comment.