New plugin: dm-TimeWarp

Here’s a new plugin called TimeWarp.
It’s a granular delay, looper & sampler with time stretch capabilities wrapped into one plugin.

The first version of this plugin can be installed on your device through this link. Later versions with bug fixes and other upgrades can be found further down this topic. The MOD Desktop version can be downloaded and installed from my Github release page.

Here’s an explanation for the different parameters.

  1. Granular controls:
  • Scan controls the start position for each grain.
  • Spray controls the amount of random on the start position for each grain. Put this on zero if you want some nasty glitchy sounds.
  • Size controls the duration of the grains. At full clockwise the whole buffer will be played. At full counter-clockwise you will get the smallest possible grain size.
  • Density controls the amount of overlap between the grains. The sample will be played straight when Density is at full counter-clockwise and Size is at full clockwise. In other words; it means we play back the whole buffer with no overlap. If you move the Density or Size parameter to another position we enter into the granular territory.
  • Stereo controls the stereo width of the grains. At full counter-clockwise each grain is mono. At full clockwise each grain is randomly hard-panned to either the left or right. Dial it in for a stereo width in between these two.
  • Pitch controls the pitch of the grains in semitones
  • Stretch controls the start position of the grains. At zero the sample position is frozen. At -1 it will play back in reverse. At 2 it will play back at double the speed. When we’re playing back the sample straight (Size at clockwise, Density at counter-clockwise) this will only control if the sample is playing back in reverse or not.
  1. Buffer controls:
  • Sample controls the file that’s being loaded from disk if Sample Mode is set to the Sampler option.
  • Sample Mode controls how we write to the buffer. In Delay mode the delay time is set with the Time parameter. In Looper mode the delay time is set to the length of the first recording. In Sampler mode you can load a file from disk. The time is set to the length of the loaded file. Even if you selected the Sampler option you can still record or overdub.
  • Time is activated if the Sampler Mode is set to Delay. It controls the delay time.
  • Length is activated if the Sampler Mode is set to Looper or Sampler. Like the Time parameter it controls the delay time. But in this case it’s a fractional value of the sample or loop duration.
  • Highpass and Lowpass control the filter frequencies. The filter is in the feedback path. It’s only activated when recording or overdubbing.
  • Feedback controls how much of the buffer contents is preserved when overdubbing.
  • Recycle controls how much of the wet effect is fed back when overdubbing. At full counter-clockwise a plain delay signal is fed back. At full clockwise the wet signal with pitch shifting, time stretching etc. is fed back.
  1. MIDI controls:
  • MIDI turns MIDI input on or off. MIDI notes and pitchbend control the pitch. Velocity controls volume. And sustain will hold the notes.
  • Voices controls how many notes can sound simultaneously. Max is 8
  • Attack, Decay, Sustain & Release control the amplitude envelope for each voice.
  1. Footswitches:
  • On / Off
  • Record / overdub
  • Play / Stop
  • Erase will clear the buffer contents.
  1. Mix controls:
  • Dry controls the dry signal volume.
  • Wet controls the effect signal volume.

I’d encourage you to modulate different parameters with CV signals to create more movement. I can also recommend using dm-Seq with this effect. I created it specifically to be able to control the pitch of the TimeWarp with foot switches.

I hope this opens up new sonic territory. I’m curious to hear what you think!
-Dave

15 Likes

Holy moly, will test this for sure!

1 Like

Very nice, that’s a really great plugin, thanks.
I’m not sure if my understanding of the loop mode is correct but anyway, it gives wonderful random effects !

1 Like

Wow! Its cool! Lots of possibilities and plenty to explore! Thanks a lot! I was able to use it in MIDI mode with your DM sequencer, butunfortunately not with a MIDi controller. Also, trying to load WAV. samples made the GUI restart and nothing loaded. I was trying with my Mod DuoX Latest firmware version.

1 Like

@zwabo I edited the description a bit. Loop mode is just like Delay mode. But in Loop mode the delay time is set by the length of the first recording instead of by the Time parameter. The recording length is the interval between Record on and Record off, or Record on and Play on. In the last case the loop starts playing when you hit Play. And then record / overdub is still on.

@Imaginus Thanks for reporting these issues. I’ll look into the MIDI controller support. I haven’t tried that myself yet. I expected that to just work since MIDI generators work. I think I know what the issue for the file is. You’re loading a file bigger than the buffer. I made the max size 60 seconds. The file is probably not capped correctly at that length. I’ll fix this and I’ll consider making the max buffer size a bit larger. For now you could try and load shorter samples.

5 Likes

Tried it some more now and it is really amazing! The only thing I have noticed so far is that the Dry/Wet faders perhaps would feel a bit better with different scaling.

From my testing it seems that most of the volume changes happens the last upper 1/8th of the fader. So found it a little fiddly to dial in the mix of the Dry/Wet.

Anyone else noticed this or is it perhaps user error?

I think the issue is related to MIDI velocity. I noticed that “dm-Time Warp” only responds to full (127) Velocity. Would be cool if we could have velocity sensitive playing of the samples

2 Likes

Yes, I figured that out too. And have fixed it already. Thanks.
I will release a new version soon

2 Likes

I get your point. It’s a bit of a trade-off.
If you want to have an insert effect a Dry/Wet control in percentage would make more sense. But in my mind this is more of a send/return effect. That’s why I have chosen for separate dry and wet controls in decibels. Unfortunately I can only use linear scale for these decibel range parameters in lv2 plugins. If I give it a range of 0 to 1 instead I could scale it in anyway I’d want. But then the parameter values are also less meaningful.

I guess I could switch to one Dry/Wet control. Then you could create a send/return by just putting it on 100% wet. But it might be a bit more tedious. I’m curious to hear some opinions about this

Here’s a new release for your MOD device.
And again, the MOD desktop version can be downloaded from my github release page

Here’s the changelog:

  • LV2 bugfix: MIDI velocity is processed correctly now
  • Larger files can be loaded now. The buffer limit is approximately 1 minute. The samples beyond that limit will be ignored.
  • Improved Size parameter mapping for long samples. The first half ranges from 10ms to 500ms. The second half is a range of 500ms to the full sample length.
  • More musical smoothing of the Time parameter
6 Likes

Works even better now! Had lots of fun looping sounds and vocals and playing them with my Linnstrument. Especially arpeggiating/sequencing and playing with the ADSR.
It made me think it would be awsome to be able to assign the cc74 and channel pressure to the different controls making it even more expressive. Assigning an MPE controller is a little difficult with the current midi learn function in the MOD.

However there seems to be an issue in the envelope section.
Sometimes the decay “dissapeares” or appears fully opened (although it is almost closed) and needs to be moved to be actuated again. (not the best explanation). Will investigate further.

As of now the loops playback with different lenghts/speeds when playing polyphonic through MIDI. Would it be difficult to have the option to also have same palyback time when playing it polyphonic?

Thanks again for a great plugin I was really missing in the MOD enviroment. Although granular synthesis was possible with Cardinal, this is MUCH more easy to set up and i believe more CPU friendly!

Since you mentioned the Erae Touch in another thread, I took the chance to wish for some more MPE friendly features. :wink:

1 Like

I’m not sure what would be a good way to add MPE assignment on the plugin side. I feel like it would be better to leave that functionality to the host. I think that’s how it would work in other DAWs right? I don’t really have any experience with MPE as of yet.

About the loop playback. Right now the sample is played back from the beginning for each note at the moment it’s triggered. Would you want only the first note to trigger the playback position from the beginning and the other notes to follow the same position then?
Just to be clear; when you’re not in granular mode (size at full clockwise, density at counter-clockwise), the Pitch parameter will control the playback speed instead of the Stretch parameter. In that case the playback time of one note will always go out of sync with another.

Let me know when you have more info about the amp envelop. I will see if I can replicate that behavior.

@Imaginus Here’s a new build. It fixes the issues that sustain at zero or one could cause hanging notes. Hopefully this makes the issue you noticed with the ADSR disappear. Please let me know

4 Likes

Cool! I`ll check it out later.