Go Back   Cockos Incorporated Forums > REAPER Forums > MIDI Hardware, Control Surfaces, and OSC

Reply
 
Thread Tools Display Modes
Old 07-09-2015, 01:13 PM   #1
reapercurious
Human being with feelings
 
reapercurious's Avatar
 
Join Date: Jul 2007
Posts: 1,891
Default Is there a MIDI plugin that plays + holds a MIDI note?

need a midi plugin (jsfx or otherwise) that simulates a midi keypress being played even when the transport is stopped. to use in combination with reasynth to generate a tone without needing to write midi notes, create loops, and pressing play.

know of one?
reapercurious is offline   Reply With Quote
Old 07-09-2015, 01:37 PM   #2
DarkStar
Human being with feelings
 
DarkStar's Avatar
 
Join Date: May 2006
Location: Surrey, UK
Posts: 19,679
Default

Ctrl+click the Virtual MIDI Keyboard
__________________
DarkStar ... interesting, if true. . . . Inspired by ...
DarkStar is offline   Reply With Quote
Old 07-09-2015, 01:41 PM   #3
reapercurious
Human being with feelings
 
reapercurious's Avatar
 
Join Date: Jul 2007
Posts: 1,891
Default

you know how if there is a white noise generator plugin on a track, it plays constantly? i want a plugin that will act like a held key on a midi controller regardless what you do in the project, whether its playing or stopped, as long as the audio device is on.

the virtual midi keyboard stops working if you open the FX window on the synth's track.
reapercurious is offline   Reply With Quote
Old 07-09-2015, 03:04 PM   #4
reapercurious
Human being with feelings
 
reapercurious's Avatar
 
Join Date: Jul 2007
Posts: 1,891
Default

thank you for your reply Darkstar!
reapercurious is offline   Reply With Quote
Old 07-09-2015, 03:10 PM   #5
Tod
Human being with feelings
 
Tod's Avatar
 
Join Date: Jan 2010
Location: Kalispell
Posts: 14,759
Default

Quote:
Originally Posted by reapercurious View Post
you know how if there is a white noise generator plugin on a track, it plays constantly? i want a plugin that will act like a held key on a midi controller regardless what you do in the project, whether its playing or stopped, as long as the audio device is on.

the virtual midi keyboard stops working if you open the FX window on the synth's track.
How about just putting the noise generator plugin on a track and automating the track mute.

How do you intend to control the on/off of the generator, with a midi keyboard?
Tod is offline   Reply With Quote
Old 07-10-2015, 04:57 PM   #6
reapercurious
Human being with feelings
 
reapercurious's Avatar
 
Join Date: Jul 2007
Posts: 1,891
Default

thanks for your reply,

here it is in a nutshell... simple plugin that "holds a finger" on a "virtual" key that sends that midi note (at a variable velocity) to a VSTi synth or an outboard MIDI controlled synthesizer, Eurorack, etc.

Purpose: creating drones in order to do sound sculpting, making pad presets on a synthesizer, doing sound art, etc.

It should function independently of the play/stop controls of the transport.

So there needs to be a midi channel in reaper that is free from association with the transport first.
reapercurious is offline   Reply With Quote
Old 07-11-2015, 09:09 AM   #7
ELP
Human being with feelings
 
Join Date: Apr 2014
Posts: 943
Default

"reapercurious :So there needs to be a midi channel in reaper that is free from association with the transport first"

No... that´s not the prob.
you only need one track that is REAPERs CC#123 Spam free.

for example use
Plug Chain:
JS:
1.// MB MIDI Event Filter2
and filter out CC#123

than
example:
JS:
2. MIDI Note Hold

3. "Your Synth"

and now you can simply trigger your endless note with Record/monitoring on and
"DarkStar: Ctrl+click the Virtual MIDI Keyboard "
or without Ctrl

and you have your endless playing sound for editing or whatever during Play and Stop mode and from Play to Stop or Pause mode......
It stops (only) autom. if you press start the next time or from Pause to Play..

--
Of course only without any flush FX on stop on...
__________________
I hope you can understand me? Without german beer my written english is always very bad, with beer it becomes unbearable!.
Less is more! To much limited the own creativity.

Last edited by ELP; 07-11-2015 at 09:37 AM.
ELP is offline   Reply With Quote
Old 08-25-2015, 03:44 PM   #8
Nystagmus
Human being with feelings
 
Nystagmus's Avatar
 
Join Date: Oct 2013
Posts: 509
Default

on the old hardware, we used to just use tape to hold down the keys across the octaves. in the piano roll editor, just draw in some breves or whole notes and drag their endings out longer.
Nystagmus is offline   Reply With Quote
Old 11-23-2021, 01:07 AM   #9
NightofNi
Human being with feelings
 
Join Date: Jul 2011
Posts: 28
Default

Can you edit the JS: MIDI Note Hold to hold more than one note at the time so you can use it to play a chord? Or is there some other VST that lets you do that?
NightofNi is offline   Reply With Quote
Old 11-23-2021, 11:47 AM   #10
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,032
Default

Who wants to buy a nice small keyboard which can do this: k-board, activating its "Togl" button (greed led), there you have your continuous notes. As many as you like, each note can be added and removed, create any chord drones you want. Perfect for sound design for example.

Another related technique if you want to improve/adjust/finetune your fx settings. Hold notes, as above, then add an fx which can do "random hand movements" on one or multiple parameters, so you can hear a range of possible sounds. While this happening in the background you can finetune your fx settings. (How much or little, where to set their limits, min and max per parameter).
TonE is offline   Reply With Quote
Old 12-03-2021, 01:56 AM   #11
NightofNi
Human being with feelings
 
Join Date: Jul 2011
Posts: 28
Default

I found a plugin that does this, it's called Midi Latch and can be found here: http://www.midikarval.net/_mgxroot/page_10763.html

Unlike the JS plugin it can hold several notes.
NightofNi is offline   Reply With Quote
Old 03-21-2022, 12:29 PM   #12
reapercurious
Human being with feelings
 
reapercurious's Avatar
 
Join Date: Jul 2007
Posts: 1,891
Default

Quote:
Originally Posted by NightofNi View Post
I found a plugin that does this, it's called Midi Latch and can be found here: http://www.midikarval.net/_mgxroot/page_10763.html

Unlike the JS plugin it can hold several notes.
That's cool! This is an old thread but "taping down keys" is still a thing these days
reapercurious is offline   Reply With Quote
Old 03-21-2022, 05:07 PM   #13
NightofNi
Human being with feelings
 
Join Date: Jul 2011
Posts: 28
Default

Quote:
Originally Posted by reapercurious View Post
That's cool! This is an old thread but "taping down keys" is still a thing these days
I've been looking for a plugin like that for a long time, I've found a couple of other ones too but there was always some problem so they didn't work properly.

Midi Latch can also be combined with a plugin called Midi Drawbars on the same site which lets you play one or more octaves and chords just holding one note. The developer just upgraded both plugins to both 32- and 64 bit as well.

Last edited by NightofNi; 03-21-2022 at 05:58 PM.
NightofNi is offline   Reply With Quote
Old 03-22-2022, 02:03 AM   #14
souk21
Human being with feelings
 
souk21's Avatar
 
Join Date: Mar 2021
Posts: 481
Default

Quote:
Originally Posted by reapercurious View Post
need a midi plugin (jsfx or otherwise) that simulates a midi keypress being played even when the transport is stopped. to use in combination with reasynth to generate a tone without needing to write midi notes, create loops, and pressing play.

know of one?
This should work in a JSFX:

Code:
desc:MIDIGenerator

slider1:note=60<0,127,1>note
slider2:vel=80<0,127,1>vel

@init
playing = 0

@slider
playing = 0

@block
playing == 0 ? (
  midisend(0, 0xB0, 123); //Send all sounds off
  midisend(1, 0x90, note, vel); //Send note on
  playing = 1;
)
souk21 is online now   Reply With Quote
Old 03-22-2022, 02:52 AM   #15
souk21
Human being with feelings
 
souk21's Avatar
 
Join Date: Mar 2021
Posts: 481
Default

And for MIDI latching this should work:

Code:
desc:MIDILatch

slider1:octave_m2=0<0,1,0.1>Octave -2
slider2:octave_m1=0<0,1,0.1>Octave -1
slider3:octave_p1=0<0,1,0.1>Octave +1
slider4:octave_p2=0<0,1,0.1>Octave +2

@init
notes = 0;
memset(notes, 0, 127);

@block
function switch_note(note, vel) (
  notes[note] == 0 ? (
    midisend(offset, msg1, note, vel);
    notes[note] = 1;
  ) : (
    midisend(offset, 0x80, note, msg3);
    notes[note] = 0;
  );
);
function send_octave(note, vel, pitch_offset, slider_value) (
  slider_value > 0 ? (
    switch_note(note+pitch_offset, vel * slider_value);
  );  
);
while(midirecv(offset, msg1, msg2, msg3)) (
  msg1 & 0x90 == 0x90 ? (
    switch_note(msg2, msg3);
    send_octave(msg2, msg3, -24, octave_m2);
    send_octave(msg2, msg3, -12, octave_m1);
    send_octave(msg2, msg3, +12, octave_p1);
    send_octave(msg2, msg3, +24, octave_p2);
  );
);
souk21 is online now   Reply With Quote
Old 04-13-2022, 11:20 AM   #16
reapercurious
Human being with feelings
 
reapercurious's Avatar
 
Join Date: Jul 2007
Posts: 1,891
Default

Quote:
Originally Posted by souk21 View Post
And for MIDI latching this should work:

Code:
desc:MIDILatch

slider1:octave_m2=0<0,1,0.1>Octave -2
slider2:octave_m1=0<0,1,0.1>Octave -1
slider3:octave_p1=0<0,1,0.1>Octave +1
slider4:octave_p2=0<0,1,0.1>Octave +2

@init
notes = 0;
memset(notes, 0, 127);

@block
function switch_note(note, vel) (
  notes[note] == 0 ? (
    midisend(offset, msg1, note, vel);
    notes[note] = 1;
  ) : (
    midisend(offset, 0x80, note, msg3);
    notes[note] = 0;
  );
);
function send_octave(note, vel, pitch_offset, slider_value) (
  slider_value > 0 ? (
    switch_note(note+pitch_offset, vel * slider_value);
  );  
);
while(midirecv(offset, msg1, msg2, msg3)) (
  msg1 & 0x90 == 0x90 ? (
    switch_note(msg2, msg3);
    send_octave(msg2, msg3, -24, octave_m2);
    send_octave(msg2, msg3, -12, octave_m1);
    send_octave(msg2, msg3, +12, octave_p1);
    send_octave(msg2, msg3, +24, octave_p2);
  );
);
Wow, I just saw these, will try ASAP! Thank you.
reapercurious is offline   Reply With Quote
Old 02-28-2023, 09:01 AM   #17
F1308
Human being with feelings
 
F1308's Avatar
 
Join Date: Nov 2022
Location: It is season dependant.
Posts: 755
Default Another great option...

https://forum.cockos.com/showthread....75#post2653475

https://github.com/ReaTeam/JSFX/blob...20control.jsfx
F1308 is offline   Reply With Quote
Old 03-01-2023, 11:59 AM   #18
Starshine
Human being with feelings
 
Join Date: Jan 2023
Posts: 57
Default

I'm working on a plugin right now and on the first test it incorrectly held all the notes and ignored note off messages besides. That makes me somewhat of an expert on this type of tech!
Starshine is offline   Reply With Quote
Old 03-01-2023, 12:50 PM   #19
Starshine
Human being with feelings
 
Join Date: Jan 2023
Posts: 57
Default gonna borrow this, thanks!

Quote:
Originally Posted by souk21 View Post
And for MIDI latching this should work:

Code:
desc:MIDILatch

slider1:octave_m2=0<0,1,0.1>Octave -2
slider2:octave_m1=0<0,1,0.1>Octave -1
slider3:octave_p1=0<0,1,0.1>Octave +1
slider4:octave_p2=0<0,1,0.1>Octave +2

@init
notes = 0;
memset(notes, 0, 127);

@block
function switch_note(note, vel) (
  notes[note] == 0 ? (
    midisend(offset, msg1, note, vel);
    notes[note] = 1;
  ) : (
    midisend(offset, 0x80, note, msg3);
    notes[note] = 0;
  );
);
function send_octave(note, vel, pitch_offset, slider_value) (
  slider_value > 0 ? (
    switch_note(note+pitch_offset, vel * slider_value);
  );  
);
while(midirecv(offset, msg1, msg2, msg3)) (
  msg1 & 0x90 == 0x90 ? (
    switch_note(msg2, msg3);
    send_octave(msg2, msg3, -24, octave_m2);
    send_octave(msg2, msg3, -12, octave_m1);
    send_octave(msg2, msg3, +12, octave_p1);
    send_octave(msg2, msg3, +24, octave_p2);
  );
);


Switch_note's structure looks like an excellent basis for something I'm doing and direly need to refactor; I was close to doing it that way but somehow wasn't seeing the obvious. Thanks!
Starshine 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 05:15 AM.


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