New Tool (2.8, 3.1): MorphSynth

MorphSynth is a (somewhat experimental) sample generator capable of creating complex waveforms through the combination of morphing oscillators, two operators FM and ring modulation.

You can download the latest version on the tool page.

6115 Morphsynth_0.5_screenshot.png

How to use it:

Right click an empty slot in the instrument list and choose “MorphSynth Instrument…” in the menu.

  • The first section of the window is for global settings that affect the whole instrument (sample rate, note range).
  • Next come the voice selector.
  • The following section is for settings that affect the current voice: volume, panning, etc.
  • Below that you can choose whether you edit the main audio signal (carrier), the FM modulators, or the Ring Modulator.
  • Next is the main section, where you can set up the various oscillators shapes of the current voice, and the duration between them.
  • The last section controls how the voice is looped.
  • When you’re done with the settings, the “Generate” button will create the samples.

Notes:

  • You can layer MorphSynth on an already existing instrument, it should not interfere. For example, it’s possible to have both PadSynth and MorphSynth on the same instrument.
  • Almost all waveform shapes start at 0 with the default phase, in order to avoid clicks.
  • Currently, looping is somewhat broken when using pitch modulation.
  • If you have a very short loop (a few oscillations), you should consider using the 440000 sample rate (not 441000), and a note range based on a “A” note, with a step of 12. This way you’ll avoid truncation errors (which can create unwanted harmonics)

Any feedback or question is welcomed!

Previous Versions

Another Amazing tool! Thanks!

seriously wow! kicks, snares, hats, basslines the lot are so easy to make.

Thanks. The tool evolved as I found new ideas, that’s why there’s a lot of possibilities. I’m glad you find it easy to use, that was my main concern.

Cool stuff!

Adjusting fine-tune settings for the detuning, phasing win!

Wow… Cool!

:yeah: :w00t: :walkman:

Edit = if I find any bugs or anything, I let you know. but this is very cool

Thank you/cheers

Awesome, this is seriously cool
First Padsynth and now this! We are spoilt! Thanks for making this…

I got the following error when adjusting the ‘loop from’ value:

‘/Users/Creative/Library/Preferences/Renoise/V2.8.0/Scripts/Tools/org.drakmaniso.Morphsynth.xrnx/main.lua’ failed in one of its notifiers.

Please contact the author (drakmaniso | moussault.laurent@gmail.com) for assistance…

./MorphSynth.lua:191: attempt to index field ‘?’ (a nil value)
stack traceback:
./MorphSynth.lua:191: in function ‘generate_one_sample’
./MorphSynth.lua:77: in function ‘generate_samples’
./MorphSynthWindow.lua:86: in function ‘generate_samples’
./MorphSynthWindow.lua:694: in function <./MorphSynthWindow.lua:694>

Thanks for the feedback and bug reports.

Here’s a new version, which adds FM and Ring modulation, plus a “Sample & Hold” parameter (and fixes a few bugs).

3702 org.drakmaniso.Morphsynth_Rns280_V0.2.xrnx

Please note that you won’t be able to load instruments created with the previous version; sorry for the inconvenience.

3703 morphsynth-0.2-screenshot.png

Each voice now has three sections: one for the carrier (the main audio signal), one for the ring modulator, and one for the FM modulator. The two modulators can be as complex as you wish.

The “S&H” (sample and hold) parameter does something similar to the LoFiMat renoise effect, except the rate is always proportional to the current note frequency.

Note that looping is not always seamless when using modulation, I’m not sure if this is fixable.

Great update, this tool is really deep, must admit I’m having a lot of fun with it!

Some feature requests:

  • It would be cool if it had a live mode where new samples are rendered straightaway after changes are made. This would help with workflow when designing sounds as its a bit annoying to keep having to pressing generate samples for every little tweak.

  • Copy settings from other voices, for example if I am working on voice 2, I could copy the settings from voice 1 or any of the other 7 voices, useful if I want to create stacked/detuned sounds

  • Crossfade loop - The looping does sound odd with longer samples, however doing a crossfade loop makes a big difference, maybe this could be integrated into the tool (I have some code for an adjustable crossfade loop if you want it?)

Awesome update! + yes,crossfade loop option please! :drummer:

edit:

got this notice after saving an instrument in Renoise, loading another .xrni in an empty instrument slot while having the gui still open and pressing generate in your tool:

@afta8: an auto-update feature is on my todo list, though it will probably only for a test note, as rendering for full key range can take a lot of time (which reminds me, I need to move sample generation in the background thread). I also need to improve the UI for managing waveforms, a copy/paste feature is a great idea.

I didn’t think about cross-fading the loop, this is probably the best solution, I’ll look into this. If you have some code to do it, I’d love to take a look at it!

@Djeroek: thanks for the bug report. I’ll try to fix this in the next version.

I made a basic crossfade loop feature in this tool, which copies a section of the audio before the loop point; applies a fade in, and then mixes it with the same size portion at the end of the loop which has been faded out.
Send me a PM if you want to discuss it in more detail and i’ll be happy to help. The fades applied in my version are linear which don’t always give the best result because the volume can dip where the crossfade happens, if the fades are curved I think it will sound better… Hope that helps :)

Thanks, that’s very helpful. I think I’ll add an option for 0-crossing, too.

For cross-fading, I searched on the net which curve to use, the best answer I found is this one. So I guess it’s either a logarithmic curve, or the cosinus based one proposed there.

EDIT: There’s one thing I don’t understand though, if I use logarithmic curves or similar, then the sum of the two cross-faded signal can be greater than 1, introducing distortion. Does this mean I must scale down the whole sample first?

My first thoughts are yes if you do it in the way described in that link. However I was thinking you could do it where the fade in curve is the opposite curve to the fade out curve, this way the sum would never be greater than one. I don’t know how this would sound though.

Also I was curious about how the Renoise built in crossfade worked as this sounds good on your tool when I do it manually, applying it to a square wave gives this result:

3707 Screen shot 2012-10-15 at 12.53.47.png

So i’m guessing it must be a linear fade, in this case it may be just simpler to apply a linear crossfade and see how it sounds, the simplest solution may be the best one after all.

Here’s a small update:

3712 org.drakmaniso.Morphsynth_Rns280_V0.3.xrnx

Note that instruments created with the previous versions won’t load; sorry for the inconvenience.

In this version:

  • A few important bugs have been fixed. - There is a second FM modulator, with a configurable “FM algorithm”: parallel or serie. - The exponential / logarithmic scale range for the durations has been doubled. - The amount of modulation is now configured in the modulators section, not the carrier section. - The amount of FM modulation (aka “modulation index”) range has been increased to 13.1, which was the value used in the DX synths. I’m not sure what’s the rationale behind it, though. - The FM modulators are now configured with a ratio, rather than an offset in semitones. It’s easier to find “musical” values this way.

I think now the “synthesis” part is good enough, I’ll focus next on improving looping and UI.

I’m moving in a few days so I probably won’t have net access for a while. Hopefully there isn’t to many bugs in this version.

opened your tool on an already existing morphsynth instrument, made with the same, latest version and got:

…after adding some new waveforms.

The samples that are made still load right? I made some sub bass, and bass this morning… The samples should load, shouldn’t they?

Btw, this tool is :slight_smile: very impressive…

Cheers

@Djeroek: I guess it happened after clicking on one of the parameters value field? All these value fields are very buggy at the moment, I really need to fix that. Thanks for the bug report.

@2 daze j: Yes, previous samples will continue to play. It’s just you won’t be able to edit them with MorphSynth.

mmm this seems a very very powerful tool, but it is not easy for a noob like me to understand how it works.
I guess that it is completly stupid to use it like a normal synth: what is very hard to understand is the fm modulation part.
I only know subtractive synthesis basis. Can someone post a little tutorial explaining what can be done with this tool? Or maybe posting some good sounds and then explaining how to get that sound!

Thank you!

This one should be on the tool page imo.