Call for Surge's LV2-presets

Hi @zynthianers!

This is a call for generating LV2-presets for the Surge engine. We only have 4-5 banks of the many included with Surge. For solving this, we could repeat the process we are doing with PIanoteq LV2-presets. This time will be easier because we haven’t to worry about versions and so on. Surge is Surge :wink:

We should generate LV2-bank bundles, what this mean is that you must generate all LV2-presets for a given bank and after that, run a script that will generate the LV2-bank from the list of generated presets.

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

  1. Update your zynthian so you get installed the needed fonts for running the Surge’s GUI.

  2. Enable the VNC Server

  3. Create a synth layer with the Surge LV2 plugin

  4. From the VNC Viewer, select the first preset of the bank you want to generate.

  5. On the top menu bar, click “Presets->Save Preset”
    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.

  8. From the terminal, change to the directory where you saved the presets and run this script:

    create_lv2_bundle_bank_surge.sh (1.9 KB)

    The script will generate the LV2-bank bundle in this location:

    /zynthian/zynthian-my-data/presets/lv2
    
  9. Test the bank

    • Click “Search for Plugins and Presets” button from the webconf’s LV2 tab
    • Restart zynthian-ui (or reboot)
    • Create a Surge layer and test the new bank. Check the names and the sounds.
  10. If everything is OK, then you should send a Pull Request to the zynthian-data repository:

    • Fork the repository from github:

    • Clone it on your PC with:

      git clone git@github.com:zynthian/zynthian-data.git
      
    • Copy the generated bank(s) from the zynthian to the cloned repo

    • Run:

      git add .
      git commit
      git push
      
    • Send the Pull Request from github web interface

    You can include several banks in the same Pull Request, of course.

As you can see, the procedure, although is not complex, implies the use of command line and git. Those of you that never used git could feel intimidated by it. Don’t hesitate to ask. This is a perfect first-use scenario. A good opportunity for learning the basics.

Thanks … and enjoy!

Is there much benefit to doing this? Surge is such a resource hungry engine that I haven’t managed to use it for anything. It xruns almost immediatly for most patches.

It’s not so bad for some presets. In my zynthian i can run a good bunch of presets without having XRuns. We can concentrate on presets that run smoothly by simply test a little bit every presets before exporting to LV2.

Also, eventually performance will be improved for ARM in the near future. Having the presets ported to LV2 could be a good point for pushing Surge team to improve performance. I mean, more ARM users interested in that.

Regards,

I was able to convert a lot of Pianoteq and Vital(ium) presets to LV2 by methodically working through them without listening to anything. It seemed odd and I was tempted to stop and play when I saw an interesting looking patch name but knew that if I did I would never complete the task. I was also aware that I needed to use the GUI to perform the conversion which significantly added to the resource load hence my experience with GUI would be different to experience without GUI. Maybe a concerted effort to convert them all first then a secondary activity to rank / benchmark them may be of benefit.

I was eager to see Surge working well on Zynthian but have been generally disappointed and much more impressed with Vital(ium) which is my current flavour of the month!

I have found the Surge GUI to be rather unresponsive which may make this process more irksome than for other engines. Actually, I just tried in VNC and it is better. It seems that X-forwarding over ssh has higher load / is slower. Xtigervnc sits over 90% CPU usage but things remain responsive.

Remember also to ensure the patches you are working are are redistributable (unless you are just ding them for personal use on only your Zynthian, i.e. not sharing) to avoid spending lots of time creating content that we can’t share.

I may have been too harsh - I can see there are some patches that can be eeked out of it.

Surge versus Vitalium?
now it’s getting interesting.
After Vitalium tried to fry my Linux PC CPU - I tried Vitalium now on the Zynthian. I was amazed that it is running at all, but especially while testing it often needed 75% performance for monophonic sounds. This is far more than surge. On the other hand, surge sometimes shuts down the zynthian-audio if I switch too quick through the presets. …I hope for 1.8.1

I just commited 2 new factory banks for Surge: Monosynth & Bass

For enjoying them, follow the standard procedure:

  • update
  • from webconf->LV2-Plugins, click “Search for new Plugin & Presets” button and wait (it takes a little bit to parse the LV2 world)
  • restart zynthian-UI (or reboot)

I assume that all the presets available initially from the Surge’s GUI are free, as they are included on the github repository, that has GPL3 license. If not, i hope you send me a decent cake. Over 2 years of wyleu’s rook soup is enough for anyone :sweat_smile:

Ahhh! The script:

create_lv2_bundle_bank_surge.sh (1.9 KB)

#!/bin/bash

#------------------------------------------------------------------------------
# Script to generate a LV2-preset-bank from a set of single-preset bundles,
# like those generated by jalv.gtk and others.
#------------------------------------------------------------------------------
# => First parameter:  Bank sufix common to all single-preset bundles. 
#                      For instance, if all preset-bundles have dirnames like 
#                      "Surge_006-Factory_Monosynth_XXX.lv2", you should take 
#                      "006-Factory_Monosynth".
#
# => Second parameter: If specified, it will be used for naming the generated
#                      bank. If not, the first parameter is used.
#------------------------------------------------------------------------------

BANK_NAME=$1

if [ ! -z "$2" ]; then
	BANK_RENAME=$2
else
	BANK_RENAME=$BANK_NAME
fi

PLUGIN_URI="https://surge-synthesizer.github.io/lv2/surge"
PREFIX="Surge_$BANK_NAME"

DEST_DIR="$ZYNTHIAN_MY_DATA_DIR/presets/lv2/Surge_$BANK_RENAME.lv2"

# Create Bundle directory
rm -rf "$DEST_DIR"
mkdir "$DEST_DIR"

# Copy Preset files
cp $PREFIX*/$BANK_NAME*.ttl "$DEST_DIR"

# Copy manifest header
cd $(ls -d $PREFIX*/|head -n 1)
sed -n '/^@/p' manifest.ttl > "$DEST_DIR/manifest.ttl"
cd ..

# Add Bank definition to manifest
echo -e "" >> "$DEST_DIR/manifest.ttl"
echo -e "<$BANK_RENAME>" >> "$DEST_DIR/manifest.ttl"
echo -e "\tlv2:appliesTo <$PLUGIN_URI> ;" >> "$DEST_DIR/manifest.ttl"
echo -e "\ta pset:Bank ;" >> "$DEST_DIR/manifest.ttl"
echo -e "\trdfs:label \"${BANK_RENAME//_/ }\" ." >> "$DEST_DIR/manifest.ttl"

# Combine manifest bodies
for f in $PREFIX*/manifest.ttl; do
	sed '/^@/d' "$f" >> "$DEST_DIR/manifest.ttl"
done

# Add Bank to Presets
sed -i "s/a pset:Preset ;/a pset:Preset ;\n\tpset:bank <$BANK_RENAME> ;/g" "$DEST_DIR/manifest.ttl" 

# Remove Bank Name from Preset Label
cd "$DEST_DIR"
for f in $BANK_NAME*.ttl; do
	sed -i "s/$BANK_NAME-//g" $f
done
cd ..

Regards!

3 Likes

So, this is the list of the presets we have currently:

  • Factory Bass => @jofemodo
  • Factory Brass => @spurkopf ?? It’s doesn’t exist with this name on the Surge’s GUI list
  • Factory Chords => @spurkopf
  • Factory FX => @spurkopf
  • Factory Keyboards => @spurkopf
  • Factory Lead => @spurkopf ?? It’s doesn’t exist with this name on the Surge’s GUI list. Is it a kind of mixbank?
  • Factory Monosynth => @jofemodo
  • Factory MPE => @jofemodo

Last Update: 2021-03-12

Regards!

1 Like

@jofemodo
I’m trying to resolve your question marks: I have the Brass and Leads subdivisions in surge.lv2 on my Linux computer under Factory Patches - what I can’t find is Monosynth.

It seems that the Factory Presets Library has been reorganized. What version do you have installed on your desktop computer?

Yes, that was my thought too. I had created the presets with 1.66 and currently using 1.7x git, I also looked into the 1.81 vst3 and everywhere the is same scheme for the factory sounds. Could it be that a very old version is installed on the Zynthian? :thinking:

1 Like