Go Back   Cockos Incorporated Forums > REAPER Forums > REAPER for Live Use

Reply
 
Thread Tools Display Modes
Old 06-18-2020, 10:01 AM   #1
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default Coupler like real church organ.

Hi all,

For live use I have VSTi instruments, in fact organ stops, in a REAPER project.

I am making links between instruments, couplers. This succeeds in that these couplers do not behave like the couplers of an organ. It does not work the way it should do.

What actually needs to be done is that the midi note-on message is interrupted, but not gone.

And when a note is pressed and the coupler is pressed that note also sounds.

How it works at a church organ? The enigine of the organ blows wind to the pipes wich are accessible. Enabling a stop gives the wind access to the pipes that stop. Disabling of a stop disables access of wind to the pipes. The key you play sounds when you enable a stop. Disbling and enabling a stop will result in a sounding pipe wich before is pressed.

I do not see how to emulate this in REAPER.

Kind regards,

Jan Flikweert
Jan Flikweert is offline   Reply With Quote
Old 06-18-2020, 11:34 AM   #2
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Sorry, but maybe I don't really understand the problem.

I understand that a "coupler" (virtually) presses the same key of a target-keyboard, if a key is pressed on a source-keyboard. Correct ?
Of course just routing the messages will not perfectly simulate this, as no key-off events are issued when the coupler is released while some source-keys are still pressed.

This can rather easily be accomplished with a JSFX (script) plugin.

-Michael

Last edited by mschnell; 06-18-2020 at 09:59 PM.
mschnell is offline   Reply With Quote
Old 06-18-2020, 01:20 PM   #3
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default

Quote:
Originally Posted by mschnell View Post
Sorry, but maybe I don't really understand the problem.

I understand that a "coupler" (virtually) presses the same key of a target-keyboard, if a key is pressed on a source-keyboard. Correct ?
Of course just routing the messages will not perfectly simulate this, as no key-off events are issued when the coupler i released while some source-keys are still pressed.

This can rather easily be accomplished with a JSFX (script) plugin.

-Michael
Hi,

Please have a look at the attachment.

Kind regards,

Jan Flikweert
Attached Images
File Type: gif Naamloos.gif (29.4 KB, 269 views)
Jan Flikweert is offline   Reply With Quote
Old 06-18-2020, 10:01 PM   #4
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Quote:
Originally Posted by Jan Flikweert View Post
Please have a look at the attachment.
Sorry. Can't make any sens or that.

-Michael
mschnell is offline   Reply With Quote
Old 06-19-2020, 12:45 AM   #5
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default

Hi,

Thanks for your reply.

Let us make it easy.

What is the best way of muting/unmuting midi tracks in REAPER with connected external MIDI input devices?

An example:
You send from a external MIDI input device a note on to a MIDI track in REAPER and hold this key.

This track is muted.

While holding that key you decide tu unmute this track.

REAPER does not process the existing note on message.

That is the problem.

Kind regards,

Jan Flikweert
Jan Flikweert is offline   Reply With Quote
Old 06-19-2020, 01:39 AM   #6
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default

Hi,

An other approach could be to search/create a JSFX script handling MIDI messages note on/off as follows:

1. Place every note-on in a buffer.
2. Keep all note on messages in that buffer.
3. Remove that note-on from buffer when for that note a note off message has been received
4. Remove that note on when that note has been played.
5. When the coupler is engaged: Execute midi buffer with pending open note on messages
6. When the coupler is engaged en the notes from buffer have been played remove that note from buffer.


So I will search for a JSFX script. An other option could be to learn how to create this. In that case the sub-forum "REAPER for live use" is not the right place.

Kind regards,

Jan Flikweert

Last edited by Jan Flikweert; 06-19-2020 at 02:40 AM.
Jan Flikweert is offline   Reply With Quote
Old 06-19-2020, 03:52 AM   #7
bobobo
Human being with feelings
 
bobobo's Avatar
 
Join Date: Oct 2014
Posts: 1,356
Default

don't have a way to help for now.

i found this GrandOrgue thing to get more infos and get more comfortable with this stop and couplerstuff.
https://de.wikipedia.org/wiki/GrandOrgue
bobobo is offline   Reply With Quote
Old 06-19-2020, 05:02 AM   #8
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default

Quote:
Originally Posted by bobobo View Post
don't have a way to help for now.

i found this GrandOrgue thing to get more infos and get more comfortable with this stop and couplerstuff.
https://de.wikipedia.org/wiki/GrandOrgue
Hi,

Thanks for your reply.

My goal is to use REAPER as frontend for my sound, instruments, organ stops.

I work with jOrgan for input and REAPER with VSTi sforzando as frontend.

I am tiered of this Open Source stuff like jOrgan. It is Java based and does not provide the best safety regarding xstream vulnerability.

GrandOrgue is also open source. And Grandorgue in Windows is not so easy to use REAPER as frontend for the sound.

So temporarily I have jOrgan working but i am making a python solution. That works for me, except the couplers not 100%. Memory, dynamic pistons and stop combinations must be added, but that is not the problem. Only the couplers. I am almost at my goal.....

I see today there are ways in python to create buffered midi, but that is not so easy.

Kind regards,


Jan Flikweert
Jan Flikweert is offline   Reply With Quote
Old 06-19-2020, 05:24 AM   #9
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Realtime stuff in Reaper such as Midi preprocessing needs to be done in plugins. Here JSFX plugins are most appropriate. These are done in EEL language.

If you can master Python, you should be able to learn JSFX / EEL programming

-Michael

Last edited by mschnell; 06-21-2020 at 03:01 PM.
mschnell is offline   Reply With Quote
Old 06-19-2020, 05:25 AM   #10
bobobo
Human being with feelings
 
bobobo's Avatar
 
Join Date: Oct 2014
Posts: 1,356
Default

as soon as i am comfortable with this stop and couple stuff (i hope the GrandOrgue will help here) i'm on a way to get this managed in REAPER.

i guess yu will need more than one keyboard and propably a midi controller (sending midi notes or cc) to switch stops and coupler

hopefully i get some results over the weekend.
bobobo is offline   Reply With Quote
Old 06-19-2020, 05:44 AM   #11
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default

Quote:
Originally Posted by bobobo View Post
as soon as i am comfortable with this stop and couple stuff (i hope the GrandOrgue will help here) i'm on a way to get this managed in REAPER.

i guess yu will need more than one keyboard and propably a midi controller (sending midi notes or cc) to switch stops and coupler

hopefully i get some results over the weekend.
Hi,

The best way is create in FX a VSTi instrument with Sforzando. Sforzando can handle SFZ+SF2 files.

Linuxsampler also works, but I did not get that working with more then 16 instruments(stops).

I work with 2 manuals, a midi keyboard and foot pedal. So actualy 4 manuals. I have 153 instruments(stops) in REAPER!

I recorded 95 stops from my digital Domus organ. I created with Polyphone serveral mixtures: Wowing!!!!! and some other stops 1' 32' etc.

This is Great!!!!

Kind regards,


Jan Flikweert
Jan Flikweert is offline   Reply With Quote
Old 06-19-2020, 05:59 AM   #12
bobobo
Human being with feelings
 
bobobo's Avatar
 
Join Date: Oct 2014
Posts: 1,356
Default

ARIA Player comes to my mind
(you can find it searching here)

it can deal with 16 chanels at once.

this and some midimappingmagic may make a good base for selecting stops
bobobo is offline   Reply With Quote
Old 06-19-2020, 06:06 AM   #13
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default

Quote:
Originally Posted by bobobo View Post
ARIA Player comes to my mind
(you can find it searching here)

it can deal with 16 chanels at once.

this and some midimappingmagic may make a good base for selecting stops

Hi.
You are right. Sforzando is based on ARIA. That is what I use. Selecting stops, toggling vibrato, crescendo like pp/ff and crescendo increase/decreasing stops, reading expression pedals, volume knobs is not the problem. The coupler is the known issue.

So i have created in PYTHON a software midi controller wich communicates between the external organ and REAPER.

Kind regards,
Jan Flikweert
Jan Flikweert is offline   Reply With Quote
Old 06-19-2020, 06:53 AM   #14
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default

Quote:
Originally Posted by bobobo View Post
as soon as i am comfortable with this stop and couple stuff (i hope the GrandOrgue will help here) i'm on a way to get this managed in REAPER.

i guess yu will need more than one keyboard and propably a midi controller (sending midi notes or cc) to switch stops and coupler

hopefully i get some results over the weekend.
Hi,

The advantage of GrandOrgue is that it provides onscreen keyboards. So you can learn the behaviour of stops and couplers without midi controllers or external midi input.

Grandorgue contains a demo with stops, manuals and couplers.


Kind regards,

Jan Flikweert
Jan Flikweert is offline   Reply With Quote
Old 06-21-2020, 07:32 AM   #15
bobobo
Human being with feelings
 
bobobo's Avatar
 
Join Date: Oct 2014
Posts: 1,356
Default

I dived into the grandorgue and came up again.

i tried to rebuild the organ behaviour (from the players perspective) with mostly REAPER inbuilt stuff.

I have a fixed track layout, some fixed reaperscripts and some customactions to deal with Stop on/off
The Reeaperscripts and the CustomActions are on toolbarbuttons.
And i have two Keyboards for the input.
A third one for the Pedal is simulated via inbuilt virtual keyboard.

hanging notes is a little problem i have to solve.

SWS is mandatory

So: Interna

I registered the two keyboards as K1 and K2

I made three Tracks as Intrument Tracks, Each have 5 FX (Principal,flutes,Mixtur and so on)
The instruments are sforzando instances using samples from the aeolus sf2 7sfz

Those are individually selectable with the custom actions (yes there are a bunch of them )


I made Input Tracks that are midi routed to all usable possibilities to the three instrument tracks. audio isn't routed at all.
all Input Track arre set to "automatic recording when selected"
Track 4 routes to Track 1
Track 5 to Track 1 and 2
Track 6 to Track 1 and 3
Track 7 to Track 1 and 2 and 3
Track 4 to 7 have the K1 as input Manual 1

Track 8 to track 2
Track 9 to Track 2 and 1
Track 10 to Track 2 and 3
Track 11 to track 2 and 1 and 3
Track 8 to 11 are feeded by K2 Manual 2

i didn't spend any time to build the PEDAL as i don't hav ea real midi Pedal at hand (btw at feet)

With those selfmade reascripts i can select Tracksettings

A button for Selection Only Track 4 will only play manual 1 with the selected stops (those are switch via customactions and the toolbarbuttons)

a button for Selection Track 5 and Track 10 will play on Manual 1 Instruments set on Track 1 and 2 (kind of coupling) and will play an Manual 2 Track 2 and Track 3 (kind of another coupling)

i have no super or sub or quint coupling, but it can be managed with more tracks that have a midi-transposer to deal with the shift.

i will put the customactions and the reascripts online and a demo project as soon as i find the time. and a schema-picture of the whole thing

A result til now is that a pipe organ is very complex and rebuilding it in REAPER is complex too.

I guess it is much better to get a bunch of sfz and switch that than rebuilt it i "my way"

my abilities in coding aren't almost there. i wish i could make better code. i guess there could be a more sophisticated method to rebuiild a pipeorgan when using jsfx-plugs.
bobobo is offline   Reply With Quote
Old 06-21-2020, 11:36 PM   #16
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default

Michael,

Very interesting!

I just read your reply and I am going to study this.

A little difference is that I have for each instrument one track and only one FX. Every track is connected to one virtual input midi keyboard and one midi channel.

Each manual(keyboard) has one midi track wich is connected to the tracks containing the FX instruments.

Using jOrgan(Open Source Java xsource vulnerable), Grandorgue with REAPER as backend should not require any script in REAPER.

The best way of toggling stops on/off is sending CC7 0/127 to the track containing the vst instrument.

Enabling/disabling FX/Send/Receive is possible, changing value for send/receive should be possible, but does not solve our problem.

I have now maded a buffered solution for the coupler in PYTHON. This is almost done: I am facing one error. When the latency only concerns the start of a coupler that should not be a problem.

Kind regards,


Jan Flikweert
Quote:
Originally Posted by bobobo View Post
I dived into the grandorgue and came up again.

i tried to rebuild the organ behaviour (from the players perspective) with mostly REAPER inbuilt stuff.

I have a fixed track layout, some fixed reaperscripts and some customactions to deal with Stop on/off
The Reeaperscripts and the CustomActions are on toolbarbuttons.
And i have two Keyboards for the input.
A third one for the Pedal is simulated via inbuilt virtual keyboard.

hanging notes is a little problem i have to solve.

SWS is mandatory

So: Interna

I registered the two keyboards as K1 and K2

I made three Tracks as Intrument Tracks, Each have 5 FX (Principal,flutes,Mixtur and so on)
The instruments are sforzando instances using samples from the aeolus sf2 7sfz

Those are individually selectable with the custom actions (yes there are a bunch of them )


I made Input Tracks that are midi routed to all usable possibilities to the three instrument tracks. audio isn't routed at all.
all Input Track arre set to "automatic recording when selected"
Track 4 routes to Track 1
Track 5 to Track 1 and 2
Track 6 to Track 1 and 3
Track 7 to Track 1 and 2 and 3
Track 4 to 7 have the K1 as input Manual 1

Track 8 to track 2
Track 9 to Track 2 and 1
Track 10 to Track 2 and 3
Track 11 to track 2 and 1 and 3
Track 8 to 11 are feeded by K2 Manual 2

i didn't spend any time to build the PEDAL as i don't hav ea real midi Pedal at hand (btw at feet)

With those selfmade reascripts i can select Tracksettings

A button for Selection Only Track 4 will only play manual 1 with the selected stops (those are switch via customactions and the toolbarbuttons)

a button for Selection Track 5 and Track 10 will play on Manual 1 Instruments set on Track 1 and 2 (kind of coupling) and will play an Manual 2 Track 2 and Track 3 (kind of another coupling)

i have no super or sub or quint coupling, but it can be managed with more tracks that have a midi-transposer to deal with the shift.

i will put the customactions and the reascripts online and a demo project as soon as i find the time. and a schema-picture of the whole thing

A result til now is that a pipe organ is very complex and rebuilding it in REAPER is complex too.

I guess it is much better to get a bunch of sfz and switch that than rebuilt it i "my way"

my abilities in coding aren't almost there. i wish i could make better code. i guess there could be a more sophisticated method to rebuiild a pipeorgan when using jsfx-plugs.
Jan Flikweert is offline   Reply With Quote
Old 06-22-2020, 12:28 AM   #17
bobobo
Human being with feelings
 
bobobo's Avatar
 
Join Date: Oct 2014
Posts: 1,356
Default

Quote:
Originally Posted by Jan Flikweert View Post

Each manual(keyboard) has one midi track wich is connected to the tracks containing the FX instruments.

i guess i made it too complicated in the midiinput section

One Track per Instrument
a bunch of Tracks for each manual

record on/off via scripts. those scripts on toolbars (midicontroller isn't too far away)

coupling via flags or something (own script) that can be handled by the switchscripts.

i guess it could be done this way
bobobo is offline   Reply With Quote
Old 06-22-2020, 12:57 AM   #18
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default

Hi,

Indeed it can be done this way. Buth in your script you need to handle/route/change midi. And I suppose in REAPER you need to make buffers(arrays) or use buffered midi commands.

In my case it is much easier:

My PYTHON script can be used in REAPER. The only point is to import the required PYTHON libraries like python-rtmidi, pynum, sys etc. in REAPER as I do now in PYTHON.

In both ways REAPER can act like a VPO, a virtual orchestra, band, organ, instrument. That is amazing!

Kind regards,

Jan Flikweert
Quote:
Originally Posted by bobobo View Post
i guess i made it too complicated in the midiinput section

One Track per Instrument
a bunch of Tracks for each manual

record on/off via scripts. those scripts on toolbars (midicontroller isn't too far away)

coupling via flags or something (own script) that can be handled by the switchscripts.

i guess it could be done this way
Jan Flikweert is offline   Reply With Quote
Old 06-22-2020, 04:43 AM   #19
bobobo
Human being with feelings
 
bobobo's Avatar
 
Join Date: Oct 2014
Posts: 1,356
Default

Sending midi in Reascript Lua ,.. may be the problem here.
i need midi notoff when switching off intruments. in both scenarios.
the stuffmidimessage thing may be a way here. i have to check

the first thought may come closer to an organ.
ManualTracks (holding the instruments) fed by Input Tracks fed by different mididevices.

Second thought (Individual Instrument Tracks fed by mididevices) may
be a more complex scenario couplingwise.

building a solution via Python may be a way. i tend to use as inbuilt as possible to avoid dependancies.
bobobo is offline   Reply With Quote
Old 06-22-2020, 05:31 AM   #20
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default

Hi,

I prefer to add a Python script to REAPER. It is logical. All things in one hand. Let this script load "loopmidi" from Tobias Erichson and all is done. This might be the next step.

I will also look at stuffmidimessage.

Kind regards,


Jan Flikweert

Quote:
Originally Posted by bobobo View Post
Sending midi in Reascript Lua ,.. may be the problem here.
i need midi notoff when switching off intruments. in both scenarios.
the stuffmidimessage thing may be a way here. i have to check

the first thought may come closer to an organ.
ManualTracks (holding the instruments) fed by Input Tracks fed by different mididevices.

Second thought (Individual Instrument Tracks fed by mididevices) may
be a more complex scenario couplingwise.

building a solution via Python may be a way. i tend to use as inbuilt as possible to avoid dependancies.
Jan Flikweert is offline   Reply With Quote
Old 06-22-2020, 07:17 AM   #21
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Quote:
Originally Posted by Jan Flikweert View Post
A little difference is that I have for each instrument one track and only one FX. Every track is connected to one virtual input midi keyboard and one midi channel.
In Reaper you can route Midi between multiple tracks in a very sophisticated ways. You can define, filter by and modify Midi channels and Midi buses on the fly. You can easily send any stream of packets wherever you want it.

-Michael
mschnell is offline   Reply With Quote
Old 06-22-2020, 07:22 AM   #22
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Quote:
Originally Posted by Jan Flikweert View Post
My PYTHON script can be used in REAPER. The only point is to import the required PYTHON libraries like python-rtmidi, pynum, sys etc. in REAPER as I do now in PYTHON.
You will find that Reaper scripts (that can be done in Python) are not usable for realtime stuff like playing with a keyboard. This is the realm of (e.g. JSFX) plugins. And same can't be done in Python (AFAIK).
-Michael
mschnell is offline   Reply With Quote
Old 06-22-2020, 07:33 AM   #23
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default

Hi all,

I can confirm that couplers can be used from exernal python script. Of course it needs a time of testing.

Running python seperate from REAPER is no problem.

Kind regards,


Jan Flikweert
Jan Flikweert is offline   Reply With Quote
Old 06-22-2020, 08:02 AM   #24
bobobo
Human being with feelings
 
bobobo's Avatar
 
Join Date: Oct 2014
Posts: 1,356
Default

maybe i made a script sending noteoff on all channels for all notes as reascript (lua)

Code:
--Global Note Off (send to all notes on channel1) 

vel=1;  --kinda pseudo, but i  need a value

for chan=0,15,1 do -- channel from 1 to 16
  for note =0, 127, 1 do -- midi note from 0 to 127
-- Message to Virtual Keyboard 0, 0+80  NOTEOFF
  reaper.StuffMIDIMessage(0,0x80+chan,note,vel);
  end;
end;
This as Reascript send NoteOff all channels, all notes to the virtual keyboard.

Make a Track with input all midichannels via VirtualKeyboard and
and route the midi output to the InstrumentTracks it should work.

i made a little 2 Track Demo

Track 1 with REASYTNTH and a long midiitem with a note.

Track 2 as said VirtualKeyboard with midi only routed to Track 1

i hit play and let the Script run, and there ist silence in Track 1 though its playing. i'm baffled (not too much) that it runs.
bobobo is offline   Reply With Quote
Old 06-22-2020, 09:30 AM   #25
bobobo
Human being with feelings
 
bobobo's Avatar
 
Join Date: Oct 2014
Posts: 1,356
Default

my virtual Pipeorgan Conception
click image to get a pdf

bobobo is offline   Reply With Quote
Old 06-22-2020, 09:57 AM   #26
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default

Hi,

Very interesting. The idea is that there are for each manual 2 options. Only choose wich one to select.

Does toggling FX instruments on/off work for more then 99 tracks?
Does the coupler behave correct?

The best way of coupling is switch track1+2 on/off or off/on and track 3+4 to.

Kind regards,


Jan Flikweert
Quote:
Originally Posted by bobobo View Post
my virtual Pipeorgan Conception
click image to get a pdf


Last edited by Jan Flikweert; 06-23-2020 at 03:12 AM.
Jan Flikweert is offline   Reply With Quote
Old 06-22-2020, 09:59 AM   #27
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default

Hi,

Indeed usefull toggling a coupler off. Note, that some keyboards use 0+90 with velocity 0 for note off instead of 0+80.

The danger of sending note-off is hypothetical that it can effect other pending messages on and from the destination manual.

Assigning midi messages to toggle on/off coupler must be done by a virtual midi device wich is deserate from coupler and destination!

Kind regards,

Jan Flikweert
Quote:
Originally Posted by bobobo View Post
maybe i made a script sending noteoff on all channels for all notes as reascript (lua)

Code:
--Global Note Off (send to all notes on channel1) 

vel=1;  --kinda pseudo, but i  need a value

for chan=0,15,1 do -- channel from 1 to 16
  for note =0, 127, 1 do -- midi note from 0 to 127
-- Message to Virtual Keyboard 0, 0+80  NOTEOFF
  reaper.StuffMIDIMessage(0,0x80+chan,note,vel);
  end;
end;
This as Reascript send NoteOff all channels, all notes to the virtual keyboard.

Make a Track with input all midichannels via VirtualKeyboard and
and route the midi output to the InstrumentTracks it should work.

i made a little 2 Track Demo

Track 1 with REASYTNTH and a long midiitem with a note.

Track 2 as said VirtualKeyboard with midi only routed to Track 1

i hit play and let the Script run, and there ist silence in Track 1 though its playing. i'm baffled (not too much) that it runs.

Last edited by Jan Flikweert; 06-23-2020 at 12:57 AM.
Jan Flikweert is offline   Reply With Quote
Old 06-23-2020, 12:52 AM   #28
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default

Hi,

Instrument track 10 contains some instruments. track 11 contains some instruments.

Does any one know how to do the same with linuxsampler? I know how to do, but more then one track with Linuxsampler VSTi will mess up the instruments in Linuxsampler.

Kind regards,

Jan Flikweert

Quote:
Originally Posted by Jan Flikweert View Post
Hi,

Very interesting. The idea is that there are for each manual 2 options. Only choose wich one to select.

Does toggling FX instruments on/off work for more then 99 tracks?
Does the coupler behave correct?

Kind regards,


Jan Flikweert
Jan Flikweert is offline   Reply With Quote
Old 06-23-2020, 02:23 AM   #29
bobobo
Human being with feelings
 
bobobo's Avatar
 
Join Date: Oct 2014
Posts: 1,356
Default

i made a video showing my solution.

some tonehopping due to miserable noteon/off technik, i have to work on that, but at least, it can be done

Last edited by bobobo; 06-23-2020 at 02:28 AM.
bobobo is offline   Reply With Quote
Old 06-23-2020, 02:43 AM   #30
bobobo
Human being with feelings
 
bobobo's Avatar
 
Join Date: Oct 2014
Posts: 1,356
Default

You can have my demo used in the video above

http://www.bobobo.de/reaper/pipeorga...Pipe_ORGAN.rpp

This won't run as you won't have the instruments and those scripts, and you need two keyboardinputs.

leastways it'll show the concept

here is a custom script Switching FX 2 on on Track 1
you'll find corresponding action for bypass FX switching of

Code:
Custom: !_M1 F4 on
  SWS: Save current track selection
  SWS: Select only track 1
  SWS/S&M: Unbypass FX 2 for selected tracks
  SWS: Restore saved track selection
  Script: !_track_selection_NoteOff on channel 1 and 2 all notes.lua
the last entry is my NOTEOFF-script that send NoteOff to the VirtualMidiKeyboard.
Code:
vel=1;

--Global Note Off (send to all notes on channel1) 
-- second run on channel 2
for chan=0,15,1 do -- channel from 1 to 16
  for note =0, 127, 1 do -- midi note from 0 to 127

-- Message to Virtual Keyboard 0
  reaper.StuffMIDIMessage(0,0x80+chan,note,vel);

  end;
end;
You need a track listening to the VMK and sending midi to all input tracks. The last track in the video.

--

coupling script that deals with the inputtracks, here select Track 4 and 5 and 8, the Onstopbutton sends midiNoteOff too
Code:
reaper.OnStopButton(0);
tr = reaper.GetTrack(0, 3);
reaper.SetOnlyTrackSelected(tr,1);
tr = reaper.GetTrack(0, 4);
reaper.SetTrackSelected(tr,1);
tr = reaper.GetTrack(0, 7);
reaper.SetTrackSelected(tr,1);
I made no brain if NOTEOFF is neccesary when Switching FX on..

i tried to screenshot the wiring but it looks like grandma's crochet basket.

Last edited by bobobo; 06-23-2020 at 04:32 AM.
bobobo is offline   Reply With Quote
Old 06-23-2020, 02:45 AM   #31
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default

Quote:
Originally Posted by bobobo View Post
i made a video showing my solution.

some tonehopping due to miserable noteon/off technik, i have to work on that, but at least, it can be done
Hi,


Wow!!!!

It is important you get the basics work. When the base works the details will come.

One important general idea:

Only send note-off when disabling a coupler when both manuals for the same note must be note-off.

So working with buffered midi requires buffer for the source and the destination manual for coupled manuals.

Just think about that.

I suppose in your solution you need to send note-ff disabling a coupler.(actually swithing from one to an other track.)

Kind regards,


Jan Flikweert

Last edited by Jan Flikweert; 06-23-2020 at 02:52 AM.
Jan Flikweert is offline   Reply With Quote
Old 06-23-2020, 04:12 AM   #32
bobobo
Human being with feelings
 
bobobo's Avatar
 
Join Date: Oct 2014
Posts: 1,356
Default

i know i have too many noteoffs in the way
but hey, .. i#m so happy it runs this way

and that some keyboard send 0x90 vel 0 for a note off is in my workflow irrelevant. the 0x80 is send internally from the vmk to the Inputtracks and from there to the instrumentracks.
bobobo is offline   Reply With Quote
Old 06-23-2020, 04:28 AM   #33
bobobo
Human being with feelings
 
bobobo's Avatar
 
Join Date: Oct 2014
Posts: 1,356
Default

when i think about this "scripting and custom action hell" i opened it may be wise to make script that can assign tracks and track function by the trackname.
finding an instrument track creates buttons in a gui for the on/off game, finding an input track makes buttons for the coupling game.

it'd be a long way to go or me, so maybe some of our lua-heros can have a look here, i am still afraid of a conceptual weakness, though it seem to run.

i added a coupling script in the post 30 thread above to make things complete

Last edited by bobobo; 06-23-2020 at 04:34 AM.
bobobo is offline   Reply With Quote
Old 06-23-2020, 06:31 AM   #34
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default

Hi,

I am facing here an issue wich should also occur in your solution(i think).

Please take the next action:

1.Toggle one stop on
2.Enable a coupler with the manual -as destination- to wich previous stop belongs
3.Press the same kea on both manuals
4.Try releasing one of the keys

Now you are facing a hypothetical issue.

Using a coupler in jOrgan does work correct.

Why not make a feature request in REAPER: It is not so strange to pause midi execution in a track between input, receive and send.


Kind regards,


Jan Flikweert


Quote:
Originally Posted by bobobo View Post
You can have my demo used in the video above

http://www.bobobo.de/reaper/pipeorga...Pipe_ORGAN.rpp

This won't run as you won't have the instruments and those scripts, and you need two keyboardinputs.

leastways it'll show the concept

here is a custom script Switching FX 2 on on Track 1
you'll find corresponding action for bypass FX switching of

Code:
Custom: !_M1 F4 on
  SWS: Save current track selection
  SWS: Select only track 1
  SWS/S&M: Unbypass FX 2 for selected tracks
  SWS: Restore saved track selection
  Script: !_track_selection_NoteOff on channel 1 and 2 all notes.lua
the last entry is my NOTEOFF-script that send NoteOff to the VirtualMidiKeyboard.
Code:
vel=1;

--Global Note Off (send to all notes on channel1) 
-- second run on channel 2
for chan=0,15,1 do -- channel from 1 to 16
  for note =0, 127, 1 do -- midi note from 0 to 127

-- Message to Virtual Keyboard 0
  reaper.StuffMIDIMessage(0,0x80+chan,note,vel);

  end;
end;
You need a track listening to the VMK and sending midi to all input tracks. The last track in the video.

--

coupling script that deals with the inputtracks, here select Track 4 and 5 and 8, the Onstopbutton sends midiNoteOff too
Code:
reaper.OnStopButton(0);
tr = reaper.GetTrack(0, 3);
reaper.SetOnlyTrackSelected(tr,1);
tr = reaper.GetTrack(0, 4);
reaper.SetTrackSelected(tr,1);
tr = reaper.GetTrack(0, 7);
reaper.SetTrackSelected(tr,1);
I made no brain if NOTEOFF is neccesary when Switching FX on..

i tried to screenshot the wiring but it looks like grandma's crochet basket.
Jan Flikweert is offline   Reply With Quote
Old 06-23-2020, 08:24 AM   #35
bobobo
Human being with feelings
 
bobobo's Avatar
 
Join Date: Oct 2014
Posts: 1,356
Default

hmm ..

Feeding Manual ONE and Manual TWO with midinotes from Keyboard 1 and Manual Two only fronm Keyboard 2
Playing same notes but on K1 shorter will send the note off to Manual TWO
stopping the note though its hold on K2
that's impractival.

My setup works like this in this case and i don't see a quick way to heal it.

Maybe i should make separate Instrumenttracks for the Inputtracks
switching them in parallel when needed.

a quick test shows that that is the solution
Feeding k1 and k2 with same notes won't conflict anymore

Last edited by bobobo; 06-23-2020 at 08:33 AM.
bobobo is offline   Reply With Quote
Old 06-23-2020, 08:38 AM   #36
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default

Hi,

Indeed instrument tracks for each manual is the solution.

In my case with 153 instruments probably not working.

Kind regards,

Jan Flikweert
Quote:
Originally Posted by bobobo View Post
hmm ..

Feeding Manual ONE and Manual TWO with midinotes from Keyboard 1 and Manual Two only fronm Keyboard 2
Playing same notes but on K1 shorter will send the note off to Manual TWO
stopping the note though its hold on K2
that's impractival.

My setup works like this in this case and i don't see a quick way to heal it.

Maybe i should make separate Instrumenttracks for the Inputtracks
switching them in parallel when needed.

a quick test shows that that is the solution
Feeding k1 and k2 with same notes won't conflict anymore
Jan Flikweert is offline   Reply With Quote
Old 06-24-2020, 12:52 AM   #37
bobobo
Human being with feelings
 
bobobo's Avatar
 
Join Date: Oct 2014
Posts: 1,356
Default

yepp,

i'm not sure how a real pipeorgan reacts here. i suppose it will not react to the

i press same key on both manuals, have them coupled and release the upper manuals key. a real pipeorgan won't "notice" that i suppose.

"our Multi Intrument with coupling" thing will play before the noteoff on upper manual with two voices (+ 3dB) and after release with one voice (0dB).
i guess we have to make a kind of midi processor between the midisend (input track) and the midireceive (instrumenttrack)

man, what a can of worms.
i have to rethink my concept
bobobo is offline   Reply With Quote
Old 06-24-2020, 01:28 AM   #38
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default

Hi,

A church organ works mechnanical. Pressing the same key in coupled state on both manuals and release one will not result in silence.

We may ask our selves: Must it be perfect. Probably it should be nice to if it works. REAPER is a DAW and not a VPO church organ. But such a great software with such a capabillatys in MIDI ......

An other thought is that: Why not use hardware input as we do and hardware output in the same track. Does this behave different?

I had from Melda a midi controller. You create in FX a midi controller. But the problem is it sents midi messages out. That is not like we wish i think.

It is complicated. In Holland whe say something like: Simple solutions represent true solutions.

Probably put it a way and after a few days look again. Be aware for tunnel-vision.
An other point is that I want to ad the coupler to de console because couplers must be part of the memory in my console. My external midi organ has good working couplers, but are not part of the memory. This covers 3 of the 6 couplers.

Kind regards

Jan Flikweert


Quote:
Originally Posted by bobobo View Post
yepp,

i'm not sure how a real pipeorgan reacts here. i suppose it will not react to the

i press same key on both manuals, have them coupled and release the upper manuals key. a real pipeorgan won't "notice" that i suppose.

"our Multi Intrument with coupling" thing will play before the noteoff on upper manual with two voices (+ 3dB) and after release with one voice (0dB).
i guess we have to make a kind of midi processor between the midisend (input track) and the midireceive (instrumenttrack)

man, what a can of worms.
i have to rethink my concept
Jan Flikweert is offline   Reply With Quote
Old 06-24-2020, 01:45 AM   #39
Jan Flikweert
Human being with feelings
 
Join Date: Apr 2020
Posts: 66
Default

Hi,

A other idea:

Combine buffered midi for the host manual and open/close midi port(toggle mute track) for the coupler.

First for engaging the coupler you need buffering.

Disengasging coupler and close midi port of coupler should result in note off and sound off the way we wish.

To use buffering it should be nice and easy if there is an array containing Pending messages

Kind regards,


Jan Flikweert


Quote:
Originally Posted by bobobo View Post
yepp,

i'm not sure how a real pipeorgan reacts here. i suppose it will not react to the

i press same key on both manuals, have them coupled and release the upper manuals key. a real pipeorgan won't "notice" that i suppose.

"our Multi Intrument with coupling" thing will play before the noteoff on upper manual with two voices (+ 3dB) and after release with one voice (0dB).
i guess we have to make a kind of midi processor between the midisend (input track) and the midireceive (instrumenttrack)

man, what a can of worms.
i have to rethink my concept

Last edited by Jan Flikweert; 06-24-2020 at 02:33 AM.
Jan Flikweert is offline   Reply With Quote
Old 06-24-2020, 04:49 AM   #40
bobobo
Human being with feelings
 
bobobo's Avatar
 
Join Date: Oct 2014
Posts: 1,356
Default

Quote:
We may ask our selves: Must it be perfect.
It has to be as perfect as possible i fear.
we can use sampleplayers already and managing keyboards as input devices isn't that complicated.

i guess simulating an pipeorgan (my concept) can be done if this noteoff thing can be solved.

REAPERS midihandling via jsfx will be the way to go.

mister schnell way up above mentioned this problem already


gmem will become my friend here

concept

a loop from 1 to 127 will save (gmem) actual played notes and changestates.
another loop will midisend notevalues if changestate say so and clean up the loop

fun job to code, i wish i had more time

Last edited by bobobo; 06-24-2020 at 07:49 AM.
bobobo 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:23 AM.


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