Skip to content

Creating wavetables with WaveEdit

EvilDragon edited this page Jan 11, 2023 · 2 revisions

PREVIOUSLY IN THIS SERIES: Creating wavetables for Surge


WaveEdit is an open-source tool offered by Synthesis Technology, it was created to make Wavetables for their hardware synths, but can also create Wavetables for Surge:

------> WaveEdit downloads <------

This guide won't be a complete "how-to" on using WaveEdit, but will display some ways of using it alongside Surge's python tools. This Wiki page makes use of the Bash command line and Surge python tools........ You can reference THIS PREVIOUS WIKI POST for info on setting that all up.

When using WaveEdit with the Surge command line tools, keep these things in mind:

  1. The Waveforms created by WaveEdit are 256 samples long.
  2. The WAV file Wavetables created by WaveEdit are 64 cycles long, no more no less.
  3. WaveEdit WAV's are 16 bit, and will likely cause clipping in Surge. Make sure to normalize them to a "safe" level with the Surge team python tools or using another method. This is covered in a another Wiki page.

This is all super simple and fast once the tools are in order.

Contents

Using WaveEdit With wt-tool.py
Using WaveEdit With add-surge-metadata.py
A Fun Way To Make A Robot Voice Wavetable In WaveEdit

Using WaveEdit With wt-tool.py

If you'd like to create " .wt" format Wavetables using WaveEdit, here are two ways you can export individual Waves from WaveEdit and process them using wt-tool.

1. Export All Waves:

  • export each waveform to an individual file and create a Wavetable with wt-tool.py.
  • you will always get 64 individual Waves exported using this method, but you can delete any that are not needed.

BASH EXAMPLE (fill in with your own locations):

python3 /location-of-scripts/wt-tool.py -a create -n half -d your-folder -f yourNewTable.wt

2. Export Individual Waves:

  • right-click on the wave you'd like to export "Save Wave As..."
  • export individual waveforms and use wt-tool.py to create a waveform.
  • this is neat because you could use this to make a Wavetable with just a few cycles (Surge will interpolate between them, even a Wavetable consisting of two waveforms will have a lot of tonal variation, give it a try!)
  • put all WAV's in a folder and point wt-tool with it using the -d option.

BASH EXAMPLE (fill in with your own names/locations):

python3 /location-of-scripts/wt-tool.py -a create -n half -d your-folder -f yourNewTable.wt

Using WaveEdit With add-surge-metadata.py

You can export Wavetables from WaveEdit using "Save Bank As..." from the "File" menu.
This will create a single WAV file which consists of 64, 256 sample cycles.

Afterwords use " normalize-i16-to-i15.py " and " add-surge-metadata.py "
To make the WAV usable by Surge!!!

BASH EXAMPLE (fill in with your own locations):

python3 /location-of-scripts/normalize-i16-to-i15.py -n half your-wavetable.wav
pythone /location-of-scripts/add-surge-metadata.py -i -s 256 your-wavetable.wav

A Fun Way To Make A Robot Voice Wavetable In WaveEdit

If you have followed the Creating Wavetables guide you will have downloaded the command line package espeak!

If you haven't downloaded it yet, do so now. If you need instructions this section of the Wiki should help!

Run the following command from the Bash command-line:

espeak hello

If espeak is successfully installed you should hear a robot voice say "hello".
Lets turn this into an audio file so we can use it with WaveEdit!

We should first create a folder for this process, I'll make one on my desktop:

mkdir ~/Desktop/GreetingTable
cd ~/Desktop/GreetingTable

The following command will take the output of espeak and put it in a wav file. You can make it say whatever you want! I'm using a greeting. NOTE:
You need quotations if you want to do more than one word.

espeak "hello, how are you?" --stdout > greeting.wav

If you'd like.........
You can use the "play" command to test the "greeting.wav" sound that was just created.
It's part of SoX package, so you will need to also make sure you have installed SoX.

Running the following command should play the sound (play can be buggy on Windows, pay no mind if it glitches up a little, it's probably not your audio file):

play ./greeting.wav

Now time to open WaveEdit!!

In WaveEdit start a new bank, head to the "Import Tab", and select browse.
Go to wherever you just created your espeak file!!

There is a number of options for how to import the table, I want to get rid of the empty space at the end so this is what my import options look like:

Click "import" at the bottom when you are happy with what you are importing.
Head back to the Waveform Editor tab and try playing your Wavetable.

NOTE
Make sure your "Morph Speed" is not at 0hz if you want to hear the whole table.

You will probably notice a lot of clicks and distortion, this is because WaveEdit doesn't align the imported cycles to "Zero Crossings".

We can cut back on the distortion with a quick process in the Effect Editor Tab!
Head down to the bottom of the Effect Editor Tab and select "Cycle All".

This will fade the edges of each waveform to smooth the sound.
If you are happy enough with the result, click "Bake" to commit the changes to the Waves.

Wrapping Up!!!

Once you are happy with the waveforms, use the instructions from earlier in this page to make a Surge Wavetable using wt-tool.py or add-surge-metadata.py