Old 01-23-2019, 03:46 PM   #1
J Reverb
Human being with feelings
 
Join Date: Jul 2009
Posts: 1,071
Default Midi note delay/echo jsfx possible ?

There are a few midi delay/echo jsfx that function based on the host tempo set in beats etc.
This is great however requires Reaper to be playing and a note held down to get the resulting repeats

Is it possible to have an incoming midi note echo or repeat without being based on the host clock ?

I just need a basic midi note echo jsfx, hit a note it repeats a set number of times. I'm aware of MIDI Looper btw

Simple Params--

Delay time between repeats.
Number of Repeats.

Any help would be much appreciated TA
J Reverb is offline   Reply With Quote
Old 01-27-2019, 04:54 PM   #2
Time Waster
Human being with feelings
 
Time Waster's Avatar
 
Join Date: Aug 2013
Location: Bowral, Australia
Posts: 1,643
Default

See if this works for you: https://stash.reaper.fm/v/35309/MIDINoteEcho.jsfx

I added a velocity decay function as well. Note the buffer size limitation, max ~40 seconds of total delay at 48 kHz sample rate. There may be other ways to do it if that's a problem.
__________________
Mal, aka The Wasters of Time
Mal's JSFX: ReaRack2 Modular Synth
Time Waster is offline   Reply With Quote
Old 01-27-2019, 10:41 PM   #3
J Reverb
Human being with feelings
 
Join Date: Jul 2009
Posts: 1,071
Default

It's a truly beautiful thing !

Thank you, exactly what I was after
This should be part of Reaper stock JSFX without a doubt.
Sometimes the simple things are the best.

Nice one, that's really helped, cheers

J.
J Reverb is offline   Reply With Quote
Old 04-06-2019, 01:52 PM   #4
digaldeman
Human being with feelings
 
digaldeman's Avatar
 
Join Date: Mar 2007
Location: In Da Club
Posts: 297
Default

Quote:
Originally Posted by Time Waster View Post
See if this works for you: https://stash.reaper.fm/v/35309/MIDINoteEcho.jsfx

I added a velocity decay function as well. Note the buffer size limitation, max ~40 seconds of total delay at 48 kHz sample rate. There may be other ways to do it if that's a problem.
Hey Time Waster,

Could you please, please, please add a transpose feature to this plugin? I would love to be able to transpose the delayed notes an octave/semitones up or down. I would really appreciate it. I know other users have been searching for something like this too.

How did you get so good at JS? There aren't many tutorials.
digaldeman is offline   Reply With Quote
Old 04-07-2019, 06:05 PM   #5
Time Waster
Human being with feelings
 
Time Waster's Avatar
 
Join Date: Aug 2013
Location: Bowral, Australia
Posts: 1,643
Default

Quote:
Originally Posted by digaldeman View Post
Hey Time Waster,

Could you please, please, please add a transpose feature to this plugin? I would love to be able to transpose the delayed notes an octave/semitones up or down. I would really appreciate it. I know other users have been searching for something like this too.
I'll see what I can do.


Quote:
Originally Posted by digaldeman View Post
How did you get so good at JS? There aren't many tutorials.
The short answer is time. Most of the information you need is in the documentation, but it seems to have been written for experienced programmers with a knowledge of computer science, which I am not. So it's been a lot of trial and error, asking questions on this forum, google and wikipedia. I also pick up tricks incidentally when reading posts on this forum. I've been doing this for over three years now and I'm only just getting into the graphics side of things.
__________________
Mal, aka The Wasters of Time
Mal's JSFX: ReaRack2 Modular Synth
Time Waster is offline   Reply With Quote
Old 04-08-2019, 06:46 AM   #6
Time Waster
Human being with feelings
 
Time Waster's Avatar
 
Join Date: Aug 2013
Location: Bowral, Australia
Posts: 1,643
Default MIDI Note Echo with Transpose Function

In the stash here: https://stash.reaper.fm/v/36034/MIDI...Transpose.jsfx is a version of the MIDI note echo with option to transpose the repeated notes.

The transpose value can be specified for individual notes in a specified pattern length of up to 16 notes, including the start note (or more by typing in the value). A pattern length of 1 will transpose all echoed notes by the same value.

The default transpose range is +- 12 semitones, but again you can increase this by typing in a value.

The ability to assign different transpose values to each note in a pattern allows this FX to be used as a triggered sequencer or arpeggiator.

At some point I should probably add the ability to sync this to the project tempo.
__________________
Mal, aka The Wasters of Time
Mal's JSFX: ReaRack2 Modular Synth
Time Waster is offline   Reply With Quote
Old 04-08-2019, 12:03 PM   #7
J Reverb
Human being with feelings
 
Join Date: Jul 2009
Posts: 1,071
Default

You are a f***in ledgend !
J Reverb is offline   Reply With Quote
Old 04-08-2019, 06:02 PM   #8
digaldeman
Human being with feelings
 
digaldeman's Avatar
 
Join Date: Mar 2007
Location: In Da Club
Posts: 297
Default

Thanks! This is exactly what I was looking for. You are the best!

Edit: I may have found a bug or maybe it's only on my end. When I hit the Play button on the transport bar, the transpose slider goes back to 0.
digaldeman is offline   Reply With Quote
Old 04-08-2019, 07:58 PM   #9
Time Waster
Human being with feelings
 
Time Waster's Avatar
 
Join Date: Aug 2013
Location: Bowral, Australia
Posts: 1,643
Default

Quote:
Originally Posted by digaldeman View Post
Edit: I may have found a bug or maybe it's only on my end. When I hit the Play button on the transport bar, the transpose slider goes back to 0.
Thanks for pointing that out. Now fixed, I hope. Update is in the stash.
__________________
Mal, aka The Wasters of Time
Mal's JSFX: ReaRack2 Modular Synth
Time Waster is offline   Reply With Quote
Old 05-02-2019, 06:57 AM   #10
Time Waster
Human being with feelings
 
Time Waster's Avatar
 
Join Date: Aug 2013
Location: Bowral, Australia
Posts: 1,643
Default

If you downloaded the last version of the MIDI Note Echo/Transpose JSFX (1.01) you would have been disappointed. Although I had fixed the reset bug, I had broken everything else. Hopefully this has been fixed in version 1.02, available in the stash. Thanks for the heads up @o_e.
__________________
Mal, aka The Wasters of Time
Mal's JSFX: ReaRack2 Modular Synth
Time Waster is offline   Reply With Quote
Old 05-07-2019, 08:10 PM   #11
Time Waster
Human being with feelings
 
Time Waster's Avatar
 
Join Date: Aug 2013
Location: Bowral, Australia
Posts: 1,643
Default

Another update in the stash:

Previously the echoed notes were only being transmitted on MIDI channel 1. This had been fixed so that they are, by default, transmitted on the (last recieved) source note channel. There is now also an option to select a fixed channel for the echoed notes. The source notes are always passed through on the source channel.

Also added a progress bar to the graphics.

Regarding the limitations of this FX:

1) Notes with a duration greater than the delay time will cause unexpected results. It's possible that I could add an option to insert a note off is one is not received within the delay time, but it would require quite a lot of code to get it right, I think (this FX is proving to be far more complicated than I thought it would be) and it would never be perfect, just because of the way MIDI is.

2) Multiple notes can be received and will echo correctly, however the echo notes, if interleaved with those from a previous note, will be counted in any currently running transpose pattern and will be transposed accordingly. In other words, the transpose pattern does not apply separately to each note received. Again it might be possible to address this with more code to try and track which note is which. I suspect I would end up having to add more buffers, which may shorten the available total delay length.
__________________
Mal, aka The Wasters of Time
Mal's JSFX: ReaRack2 Modular Synth
Time Waster is offline   Reply With Quote
Old 05-20-2019, 08:12 PM   #12
Time Waster
Human being with feelings
 
Time Waster's Avatar
 
Join Date: Aug 2013
Location: Bowral, Australia
Posts: 1,643
Default

I've re-coded this FX to fix the issues with overlapping notes. Hopefully the FX now produces proper monophonic output with no overlapping notes. The way this works is that if a matching note-off message is not received 5 milliseconds before a new note-on message is due to be sent, a note-off will be sent and any subsequent note-off received for that note will be eaten.

All notes received are now transposed correctly in separate streams. The FX can echo up to 16 consecutive notes in any one total repeat period (delay length x number of repeats). You can edit the code to change this.

I removed the progress bar, which is was no longer relevant.

The GUI now allows you to edit the transpose pattern directly. Click on a number to activate it. Use the mouse wheel to scroll the transpose value up or down. Double click on the number to reset it to zero.
__________________
Mal, aka The Wasters of Time
Mal's JSFX: ReaRack2 Modular Synth

Last edited by Time Waster; 05-20-2019 at 09:16 PM.
Time Waster is offline   Reply With Quote
Old 05-22-2019, 07:42 PM   #13
Time Waster
Human being with feelings
 
Time Waster's Avatar
 
Join Date: Aug 2013
Location: Bowral, Australia
Posts: 1,643
Default

I've added another slider to the Echo/Transpose FX, to control polyphony. This slider controls the number of received notes that will be echoed and optionally transposed: If set to 1, only the last note received is echoed. If set to 2, the last two notes are echoed etc. The default setting is 16 and the slider range is 1 to 32 (or higher by typing in a value). Note that CPU use is almost directly related to the polyphony setting.
__________________
Mal, aka The Wasters of Time
Mal's JSFX: ReaRack2 Modular Synth
Time Waster is offline   Reply With Quote
Old 04-06-2020, 02:53 PM   #14
damstraversaz
Human being with feelings
 
damstraversaz's Avatar
 
Join Date: May 2006
Location: lyon, france
Posts: 50
Default

that's an amazing tool, thanks a lot !
damstraversaz is offline   Reply With Quote
Old 04-08-2020, 05:55 AM   #15
damstraversaz
Human being with feelings
 
damstraversaz's Avatar
 
Join Date: May 2006
Location: lyon, france
Posts: 50
Default

Hi,
I have an issue with MidiNoteEchoTranspose ( in reaper x64, but too un other hosts with reajs vst). it seems to save only the last edited step (the one you see on the gui when you save your project or a preset).
the transpose tweaks for the others steps are back to 0 when you recall a project.

Thanks a lot for sharing this one, I have a lot of fun with it !

Damien
damstraversaz is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 03:35 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.