Call for Pianoteq LV2-presets

There is nice solution for having access to most of Pianoteq GUI controls from the Zynthian UI:

Using the Pianoteq LV2 plugin instead of the standalone engine!!

This plugin is disabled by default because of the lack of LV2 presets, but since we have now, with the VNC Server, an easy way of generating LV2 presets, i’ve thought we could fill the gap and generate the presets for the Pianoteq LV2-plugin.

I made a little test and generated the presets for the Wurli (W1). It tooks about 1 hour, so if we collaborate we could have the full collection with little effort.

For having the Pianoteq W1 presets with full FX control on your zynthian, follow these simple steps:

  • Update your zynthian
  • From “Webconf->LV2 Plugins”:
    • Click the “Search for new plugins & presets” button
    • Enable the Pianoteq plugin and click the “Save” button
  • Restart your zynthian UI (or reboot your zynthian)
  • Create a Synth Layer with LV2->Pianoteq6Stage
  • Enjoy!!

The presets are generated for the version 6, so i doubt they work on the version 7.

This is the W1 bank that i just committed to the data repository:

If some of you are interested on helping with the preset generation, these are the steps i followed:

  1. Enable the VNC Server
  2. Create a synth layer with the Pianoteq LV2 plugin (not the standalone engine!!!)
  3. From the VNC Viewer, select the first preset of the bank (instrument) you want to generate.
  4. On the top menu bar, click “Presets->Save Preset”
  5. Use this format for the file name:
    Bank Name-Preset Name
    where the bank name is the instrument name (i.e. W1, MKII, Steinwey D, etc.).
  6. Click “>” button on the preset bar for loading the next preset
  7. Repeat from 4 until you saved all the presets for this bank (instrument).

Once you have all the presets for an instrument, you have to combine them on a single bank.

Each LV2 preset is a folder ended with “.lv2” and inside it there is 2 files:

  • manifest.ttl
  • #PresetName#.ttl

FIrst, create an empty folder for the bank, using this naming convention:


where #BankName# is the instrument’s name (W1, MKII, Steinwey D, etc.).

Depending on your product and version you should adapt the directory name too. The variants are:

  • Pianoteq6STAGE
  • Pianoteq6STANDARD
  • Pianoteq6PRO
  • Pianoteq7STAGE
  • Pianoteq7STANDARD
  • Pianoteq7PRO

After that, copy all the preset TTL files to this folder, but not the manifests.ttl files!!!
Next, combine all the manifests.ttl in a single manifest.ttl and save it to the bank folder.

Then, add this lines to the manifest.ttl you have created, just after the header:

	lv2:appliesTo <> ;
	a pset:Bank ;
	rdfs:label "#BankName#" .

where #BankName# is the instrument’s name (W1, MKII, Steinwey D, etc.).

Don’t forget to adapt the plugin URI for matching your product/version :wink:

Then add this line to every preset on the manifest.ttl:

pset:bank <#BankName#> ;

Your manifest.ttl should look like this:

@prefix atom: <> .
@prefix lv2: <> .
@prefix pset: <> .
@prefix rdf: <> .
@prefix rdfs: <> .
@prefix state: <> .
@prefix xsd: <> .

	lv2:appliesTo <> ;
	a pset:Bank ;
	rdfs:label "W1" .

	lv2:appliesTo <> ;
	a pset:Preset ;
	pset:bank <W1> ;
	rdfs:seeAlso <W1_Basic_Mono.ttl> .

	lv2:appliesTo <> ;
	a pset:Preset ;
	pset:bank <W1> ;
	rdfs:seeAlso <W1_Basic_Stereo.ttl> .

	lv2:appliesTo <> ;
	a pset:Preset ;
	pset:bank <W1> ;
	rdfs:seeAlso <W1_Bright.ttl> .

	lv2:appliesTo <> ;
	a pset:Preset ;
	pset:bank <W1> ;
	rdfs:seeAlso <W1_Comp.ttl> .

	lv2:appliesTo <> ;
	a pset:Preset ;
	pset:bank <W1> ;
	rdfs:seeAlso <W1_Flange.ttl> .

	lv2:appliesTo <> ;
	a pset:Preset ;
	pset:bank <W1> ;
	rdfs:seeAlso <W1_Logical.ttl> .

	lv2:appliesTo <> ;
	a pset:Preset ;
	pset:bank <W1> ;
	rdfs:seeAlso <W1_Octave.ttl> .

	lv2:appliesTo <> ;
	a pset:Preset ;
	pset:bank <W1> ;
	rdfs:seeAlso <W1_Overdriven.ttl> .

	lv2:appliesTo <> ;
	a pset:Preset ;
	pset:bank <W1> ;
	rdfs:seeAlso <W1_Roomy.ttl> .

	lv2:appliesTo <> ;
	a pset:Preset ;
	pset:bank <W1> ;
	rdfs:seeAlso <W1_Soft.ttl> .

	lv2:appliesTo <> ;
	a pset:Preset ;
	pset:bank <W1> ;
	rdfs:seeAlso <W1_Tremo.ttl> .

	lv2:appliesTo <> ;
	a pset:Preset ;
	pset:bank <W1> ;
	rdfs:seeAlso <W1_Wah.ttl> .

	lv2:appliesTo <> ;
	a pset:Preset ;
	pset:bank <W1> ;
	rdfs:seeAlso <W1_Warm.ttl> .

	lv2:appliesTo <> ;
	a pset:Preset ;
	pset:bank <W1> ;
	rdfs:seeAlso <W1_Where_it_is_at.ttl> .

	lv2:appliesTo <> ;
	a pset:Preset ;
	pset:bank <W1> ;
	rdfs:seeAlso <W1_You_are_my_best_friend.ttl> .

And that’s all. Copy your LV2 bank folder to this directory on your zynthian:


and follow the steps for refresing the LV2 preset cache:

  • From “webconf->LV2 Plugins”, click the “Search for new plugins & presets” button
  • Restart your zynthian UI (or reboot your zynthian)

After testing the bank on your zynthian with you Pianoteq product & version, please, fork and send a Pull Request to zynthian-data repository:



Here is the second installment:

MKII (Electric Piano) LV2 preset bank

Commited and ready to use after following the procedure described above.

Come on @zynthianers!!! Let’s generate the preset banks for your favorite instruments, those you payed for!

Also, Surge’s huge preset library is waiting to be converted. We only have a few presets for this synth …

FYI, i’m writing a shell script that generates the bank bundle from a set of single presets. This should help a little bit.


1 Like

Hello @jofemodo,

Would it make sense to coordinate preset building in a new thread?

Greetings and God bless. Marius

Hm I could not get it to work without using an underscore.
I have somehow managed to see the presets, but I cannot see the bank on zynthian (or does it only appear when there are 2 banks or more?)

Would be happy if someone can tell me what I did wrong.

You have put this in your ttl files:

lv2:appliesTo <> ;

It should be:

lv2:appliesTo <> ;


I have done all the Historical Pianos for PT7:

  • J Schantz
  • J E Schmidt
  • G Schoffstoff
  • A Walter
  • C Graf

We should be able to run a script to convert between PT6 and PT7. @jofemodo is there a github repro we could do a PR against or should we share the files somewhere for you to add to the master? Also worth people saying what they are working on before biting off a large chunk to do so we avoid duplicate effort.

Hello @riban Brian and @jofemodo ,

I am now converting the presets of the “Celeste” family of instruments.
Do I have to put Celeste, Glockenspiel, Toy Piano and Kalimba presets into one Celeste folder with the 20 manifests in it?

I made 2 folders under /zynthian/zynthian-my-data/presets/lv2 named
Pianoteq7Stage-Celeste and

After updating lv2 presets through webconf I can only see the 6 Celesta presets and no folder.
What am I doing wrong? Controlling again for typos…

Greetings and God bless, Marius

The Stage and Standard Presets should be the same or not?

Hello @sisko Chris,

On the pianoteq fxp corner you can read following:
Note: In Pianoteq STAGE, preset loading is limited to parameters that are present in the interface whereas presets built with Pianoteq PRO can be loaded in Pianoteq Standard without limitation.

Greetings and God bless. Marius

I think it worth trying to get all the stage presets into Zynthian as a first step which allows anyone with any license to access these.

I’m not sure that the binary blob is compatible among versions. Let’s test it.
Also, we must test on different products (STAGE, STANDARD & PRO) of same version, and write the scripts for regenerating the files for the different product and versions.

Yes. Please, Fork and send Pull Request to the zynthian-data repository:

LV2-presets must be located inside this folder:


Please, send a reservation note with the instrument banks you intend to generate. I will keep posting and updated list for reference.


LV2 Banks for Pianoteq 6:

  • Electric Pianos / W1 => @jofemodo [STAGE, COMPLETED]
  • Electric Pianos / MKII => @jofemodo [STAGE, COMPLETED]
  • Electric Pianos / MKI => @jofemodo [STAGE, COMPLETED]
  • Hohner Collection / Clavinet D6 => @jofemodo [STAGE, COMPLETED]
  • Hohner Collection / Pianet N => @jofemodo [STAGE, COMPLETED]
  • Hohner Collection / Pianet T => @jofemodo [STAGE, COMPLETED]
  • Hohner Collection / Electra => @jofemodo [STAGE, COMPLETED]
  • Classical Pianos / Steinwey D => @jofemodo [STAGE, COMPLETED]

LV2 Banks for Pianoteq 7:

  • Steinwey B => @sisko [STANDARD, COMPLETED]
  • Bluethner => @sisko [STANDARD, COMPLETED]
  • Historical Pianos / J Schantz => @riban[STAGE,COMPLETED]
  • Historical Pianos / J E Schmidt => @riban [STAGE, COMPLETED]
  • Historical Pianos / G Schoffstoff => @riban [STAGE, COMPLETED]
  • Historical Pianos / A Walter => @riban [STAGE, COMPLETED]
  • Historical Pianos / C Graf => @riban [STAGE, COMPLETED]
  • Piano Predecessors / C Grimaldi Harpsichord => @riban [STAGE,COMPLETED]
  • Piano Predecessors / Cimbalom=> @riban [STAGE,COMPLETED]
  • Piano Predecessors / F E Blanchet Harpsichord=> @riban [STAGE,COMPLETED]
  • Chromatic Percussion/ Church Bells => @riban [STAGE,COMPLETED]
  • Chromatic Percussion/ Tubular Bells => @riban [STAGE,COMPLETED]
  • Electric Pianos / Vintage Tines MKI=> @riban [STAGE,COMPLETED]
  • Electric Pianos / Vintage Tines MKII=> @riban [STAGE,COMPLETED]
  • Electric Pianos / Vintage Reeds W1=> @riban [STAGE,COMPLETED]
  • Celeste => @mj_prod [PRO, NEED FIX]
  • Glockenspiel => @mj_prod [PRO, NEED FIX]
  • Toy Piano => @mj_prod [PRO, NEED FIX]
  • Kalimba => @mj_prod [PRO, NEED FIX]
  • Chromatic Percussion / Vibraphone V-B => @mj_prod [PRO, PENDING]
  • Chromatic Percussion / Vibraphone V-M => @mj_prod [PRO, PENDING]
  • Acoustic Pianos / Grand K2 => @mj_prod [PRO, PENDING]
  • Acoustic Pianos / Grand YC5 => @mj_prod [PRO, PENDING]
  • Acoustic Pianos / Grand Grotrian => @mj_prod [PRO, PENDING]
  • Acoustic Pianos / Grand Steingraeber => @mj_prod [PRO, PENDING]
  • Acoustic Pianos / Grand C. Bechstein DG => @mj_prod [PRO, PENDING]
  • Electric Pianos / Hohner Collection => @mj_prod [PRO, PENDING]
  • Acoustic Pianos / Grand Steinway D New York => @riban [STAGE, COMPLETED]
  • Acoustic Pianos / Grand Steinway D Hamburg => @riban [STAGE, COMPLETED]
  • Acoustic Pianos / Erard => @riban [STAGE, COMPLETED]
  • Acoustic Pianos / Pleyel=> @riban [STAGE, COMPLETED]
  • Acoustic Pianos / CP-80=> @riban [STAGE, COMPLETED]
  • Acoustic Pianos / Ant Petrof => @riban [STAGE, COMPLETED]
  • Acoustic Pianos / Bluethner => @riban [STAGE, COMPLETED]
  • Acoustic Pianos / C Bechstein => @riban [STAGE, COMPLETED]
  • Acoustic Pianos / Grotrian => @riban [STAGE, COMPLETED]
  • Acoustic Pianos / K2 => @riban [STAGE, COMPLETED]
  • Acoustic Pianos / Steingraeber => @riban [STAGE, COMPLETED]
  • Acoustic Pianos / YC5 => @riban [STAGE, COMPLETED]
  • Acoustic Pianos / U4 => @riban [STAGE, COMPLETED]

Last update: 2021-03-05

1 Like

Hello @riban Brian and @jofemodo

I checked all typos now (hopefully).
I am using Pianoteq7Pro, but I modified them for Pianoteq7STAGE as proposed above.
If you want to use them in PTQ Pro, you have to delete STAGE here in every preset entry: (99.9 KB)

You should define a LV2-bank per instrument. Each bank is defined on a LV2 bundle, that is a directory with TTL files for each preset and a manifest.ttl.


Please, don’t do this. Send the presets after testing on your product/version. We will do the conversion for other products & versions.


Hello @jofemodo,

thanks for your answer to send files generated from my PTQ Pro version.
I thought while these are plain text files (generating a bank file by hand) I could simply replace “text arguments”.

If I understand you correctly: The whole instrument pack consists of 4 instruments and should use one lv2 folder and one manifest.ttl containing all instrument #presetName#.ttls?

Or do you want them in 4 folders each containing a manifest and #presetName#.ttls?

Greetings and God bless, Marius

A directory/bank per instrument. “Instrument packs” doesn’t matter at this level.
So please, 4 directories, defining 4 banks, one bank per instrument.


1 Like

Bad News: Presets are not compatible among versions 6 & 7. The parameter’s names are totally different and very probably, the binary blob is not compatible. So, we have to generate a separated set of presets for each version.

FYI, i just sent an email to Julien Pomier, from Moddart to inform him about our “contest” and also for asking for a translation table for the LV2 parameter names, specially v7, as they are totally cryptic.


You have put this in your ttl files:
lv2:appliesTo <> ;
It should be:
lv2:appliesTo <> ;

Are you sure that this is not only for the STAGE version? The ttl files are autogenerated and if I look at the files from mj_prod, he has the same URI there (with pro version). I cannot get it to work if I change that.