Tonverk DX7 multisample generator

Hey folks, if you want to quickly generate a Tonverk multisample from your favorite DX7 patches, you might find my new multisample generator useful. I ported the open source Mutable Instruments Plaits DX7 code to Rust and JavaScript, and bolted that onto a Tonverk multisample generator.

Web UI (as seen in screenshot below):
https://tylerneely.com/tv7

Rust command line tool for the SYSEX hoarders and hackers! Batch-generate tons of multisamples from your favorite banks in milliseconds) here. Rust dx7 library for people interested in building their own tools here.

Edit: updated screenshot and description, now that this is no longer ā€œpreviewā€ grade.

23 Likes

I just ported it to a static website that I think should work as well, without requiring any CLI usage :slight_smile:

Check it out: tv7 - DX7 to Tonverk Multisample Generator

And if you want some classic SYSEX dx7 sounds, check them out from sites like this: Yamaha DX7 patches | Yamaha black boxes online archive

3 Likes

I’ve added a new feature to the tv7 web generator where it now contains many of the classic DX7 sound banks and some more recent awesome ones (like the Legowelt DX7 bank) for you to audition and generate Tonverk multisamples from on the fly.


Happy jamming!

5 Likes

Great idea! And little bit crazy too :wink:

How will your tool handle sustained DX7 sounds like pads? Are the resulting samples looped? Or is the method similar to TV’s autosampler?

EDIT: After looking at the screenshot, my question has already been answered. You have to enter a gate time, and then it will sample for that long.

1 Like

tv7 currently works much better than the 1.0.1 TV autosampler because the parameter for gate length is for how long the key is input for, and then I use an automatic silent window detector that waits for 100ms of 0 samples, and then automatically stops it there, so every sample will be able to fully ring out. The TV currently assumes the same length for every note as detected in the test note page, but this is not correct for instruments that may ring out for a longer time with different pitches being played, and currently there’s a common issue where certain notes will bleed into the next one in the sample, polluting the multisample. I expect the Elektron autosampler to take a similar approach to mine over time, where it does not assume every note will last the same duration, but it’s not there yet.

tv7 also takes 1/5 of a second to generate a 2-3 minute long autosample file with all of your desired notes, so you can really throw the command line tool at an extensive library of DX7 sysex files and have a nice fat bank of TV-compatible multisamples in a few seconds. It will take far longer to physically transfer the files over USB to the Tonverk in disk mode than it takes for the Rust CLI to generate the multi-minute-long WAV file, since it can generate it in accelerated, simulated time rather than moving forward according to the progression of time in the slow real world :stuck_out_tongue:

5 Likes

Thanks for the detailed explanation. That all sounds very well thought out. Can’t wait to try it out this evening.

Full Tines, Lately Bass (DX7 fake edition), Brass 1 etc. here we come :slight_smile:

1 Like

Nice!

1 Like

Works great so so far. The prelisten in the web app is really loud and sometimes distorted, but the resulting samples are flawless :+1:.

There seems to be a bug with DX7 preset names that contain spaces. In this case additional spaces are added to the sample names.

It would be useful to have the option to edit the resulting multisample’s name before the conversion starts, because renaming all those file entries using an editor is a little bit cumbersome :wink:

1 Like

Thanks for trying it out! Dealing with filenames has been a little tricky, as many DX7 patches contain multiple contiguous spaces in their actual patch names. I’ll bet the ā€œextraā€ spaces you see are also present in the actual patch name if you open up the same patch in dexed etc… but I agree they can seem strange in other contexts. I also strip out characters that aren’t available when naming your own samples on the Tonverk, as I noticed some errors where multisamples weren’t loaded properly if the names contained ā€œ*ā€ characters etc…

I just added a feature to the CLI tool, --multisample-name that lets you override the output name, and added a field to the web ui where you can remove spaces or rename it anything you want, but it will give you an error if the name you provide contains characters that might cause issues on Tonverk (basically any character that isn’t there when you go to name a sample/project/etc…)

1 Like

Also I made it so it now removes multiple contiguous spaces by default, so you won’t need to manually remove them, but you can rename in other ways still

1 Like

Thank you so much for the name field :+1:.

One very last wish (sorry):

I find it a little bit difficult to adjust the sampling range using MIDI note numbers (same with the TV’s autosampler). I think rather in terms of note names such as C3 etc. Maybe at some point you will have the time and inclination to display the note names in addition to their MIDI numbers?

However, thanks again for your great tool!

1 Like

I just pushed this update so this note name is displayed next to the note selection, let me know if that helps!

4 Likes

Perhaps a chart like this one on the site?

1 Like

Dude… this is very sick. Thanks for sharing!

1 Like

Perfect. I just converted my 20 favorite DX7 presets to TV multis. In no time.

4 Likes

Thank you for releasing this wonderful tool!

When I use the ā€œPlay Previewā€ button on the website, ROM1A’s E.PIANO 1 and others experience severe clipping. I suspect this is likely because normalization isn’t performed after generateSamples().
Would it be possible for you to fix this? Alternatively, if it’s acceptable to submit a pull request on GitHub, I’d like to send one.

2 Likes

Thanks for trying it out! I just realized I was not applying normalization to the previewed audio in the same way as the generated multisample. I was also normalizing it a bit too high, normalizing the generated samples to 0.8 (about āˆ’1.94 dBFS) when it’s probably safer to normalize to 0.5 (āˆ’6.02 dBFS) for multisamples where they could be played back with a lot of layering. I’ve just changed normalization to be 0.5 for both the preview and the generated multisample. If you notice other issues with clipping I’d definitely like to fix those!

2 Likes

Thanks so much for the super quick fix! I’ve confirmed the preview plays without any audio distortion. Once again, thank you for this truly amazing tool!

3 Likes

So, where can the good DX7 banks be found? :smiley: I’m thinking of experimental, modern, not so much church bells or e-piano

EDIT: Thanks for this – to me a virtual multisamplable DX7 over the internet is much more futuristic than AI. Fantastic stuff!!

1 Like

This is where Tonverk really comes in. The DX7 can make some amazing sounds, complex evolving timbres etc… all kinds of legendary building blocks that will be emotionally resonant with listeners who have heard DX7 as a big chunk of the background music of their lives. But it is still relatively spartan compared to many ā€œmodernā€ synths. In the modern context I think of it almost like just a complex oscillator and some great envelopes that control amplitudes. The DX7 doesn’t have filters or reverb - but some patches in the Legowelt example bank demonstrate using envelopes for faking delay effects.

Once you pipe almost any DX7 multisample into the Tonverk’s RUMSKLANG reverb you’ll immediately make it sound a few decades more modern xD But then using the Tonverk’s comb filter, EQ, dirtshaper etc… you can bring out a really different beast. Basically I feel like Tonverk’s effects and routing and layering capabilities combined with the DX7 as a kind of complex oscillator make an extremely formidable additive-ish overall synthesizer and general workstation.

I really like some of the sounds in the banks that I included in the examples, but here are some others:

By the way, I have only implemented sysex parsing for full ā€œbanksā€ of sysex patches, but soon I’ll add support for single patch sysex too. When you search for dx7 sounds, sometimes the patches are distributed as individual patch sysex files rather than the bank format. You can still use the individual patches by loading them into a sysex bank file with a tool like dexed or one of the dx7 librarians on the web, but soon I’ll make it so you can load the single ones on tv7 directly.