|
|
|
06-22-2018, 10:09 AM
|
#1
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Are These Two Problems Solvable In REAPER
First problem: I have about 20,000 midi items. Each midi item is a drum pattern. Sometimes the open hi-hat occupies the same position as the close hi-hat. How do I batch delete all all the close hi-hats that are occupying the same position as the open hi-hat?
Second problem: sometimes the open hi-hat is not resolved by a close hi-hat, and instead there is an empty space, how do I batch insert a close hi-hat in the empty position immediately after an open hi-hat?
Dies REAPER have a "Find And Replace" function similar to what text editors have. Or if not similar then any alternatives?
I did use the word filter in the Action thingy and typed the word "find" by itself, and after that the word "search" by itself but there doesn't seem to be any Actions that does "find and replace" anywhere. It's like a labyrinth in there.
|
|
|
06-22-2018, 10:27 AM
|
#2
|
Human being with feelings
Join Date: Jun 2009
Location: Croatia
Posts: 24,790
|
I'm not sure if either problems have a solution easily in Reaper...
|
|
|
06-22-2018, 11:07 AM
|
#3
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Oh hey it's you from KVR. Thanks very much again for the last problem solved.
Okay, how about complicated solutions to these new problems. If they exist, I'll take take those too.
Maybe REAPER 6.0 might have the solutions and if that's the case I guess waiting is not a problem.
|
|
|
06-22-2018, 11:09 AM
|
#4
|
Human being with feelings
Join Date: Jun 2009
Location: Croatia
Posts: 24,790
|
Nobody here knows what Reaper 6 will contain or even when it will be out (except developers, but they ain't saying anything)
I assume a scripted solution could be done for this, but I'm not aware if it exists. Perhaps some of the ReaScripters around might take a poke at it...
|
|
|
06-22-2018, 11:15 AM
|
#5
|
Human being with feelings
Join Date: Apr 2013
Location: France
Posts: 9,875
|
you have to post screenshots of before/after eg so we can see of existing scripts could do the job oe if a custom solution has to be made.
anyway, this sounds totally possible, in a way or another.
a RPP sample will help also of course.
|
|
|
06-22-2018, 11:22 AM
|
#6
|
Human being with feelings
Join Date: Jan 2015
Location: Sunny Florida
Posts: 34
|
One solution might be, if the closed hihats are much lower velocity than the open (is this a bleed problem with a triggered drumkit?) simply select all closed hihats and delete those below a certain velocity.
|
|
|
06-22-2018, 11:27 AM
|
#7
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Quote:
Originally Posted by X-Raym
you have to post screenshots of before/after eg so we can see of existing scripts could do the job oe if a custom solution has to be made.
anyway, this sounds totally possible, in a way or another.
a RPP sample will help also of course.
|
Okay, I will make pictures. I'll have them posted within an hour if posting pictures here is similar to KVR's way. I can also provide a project file but I don't know where and how to upload the file. I'll find out how.
In the mean time, I looked and found the "Feature Requests" section. I think I will just copy and paste my first post there. Thanks. Be back in a bit.
|
|
|
06-22-2018, 11:30 AM
|
#8
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Oh wait, maybe I'll wait to see if the problems are solvable first before I post at the "feature Request" section.
|
|
|
06-22-2018, 11:33 AM
|
#9
|
Human being with feelings
Join Date: Jul 2017
Location: Hackensack
Posts: 347
|
I'm not sure if you are simply trying to do some type of batch process... if so, I have no idea.
However, on a case-by-case basis, you input one of your MIDI drum files and then select all the open hi-hats by right-clicking on their note in the piano key, copy them, then drag them to the pitch that corresponds to the closed hi-hat.
Now go back to the original pitch of the open hi-hat and paste back the original file. Now go back to the newly pasted closed hi-hats, right-click to select them all, and then nudge them to the right slightly and you would have now closed all the open hi-hats.
|
|
|
06-22-2018, 12:16 PM
|
#10
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Edit: deleted post because of problem with Photobucket site.
Last edited by Harry Diddlebock; 06-22-2018 at 02:02 PM.
Reason: problem with Photobucket site
|
|
|
06-22-2018, 12:22 PM
|
#11
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Quote:
Originally Posted by Michael AD
I'm not sure if you are simply trying to do some type of batch process... if so, I have no idea.
However, on a case-by-case basis, you input one of your MIDI drum files and then select all the open hi-hats by right-clicking on their note in the piano key, copy them, then drag them to the pitch that corresponds to the closed hi-hat.
Now go back to the original pitch of the open hi-hat and paste back the original file. Now go back to the newly pasted closed hi-hats, right-click to select them all, and then nudge them to the right slightly and you would have now closed all the open hi-hats.
|
Yes, it has to be a batch operation because I have 20,000 midi items to process. But I will try your method on one file just to see. Thank you.
|
|
|
06-22-2018, 12:29 PM
|
#12
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Quote:
Originally Posted by Diki Ross
One solution might be, if the closed hihats are much lower velocity than the open (is this a bleed problem with a triggered drumkit?) simply select all closed hihats and delete those below a certain velocity.
|
The original velocity of all the midi notes were 127. But I've already converted all of them to midi note velocity 100.
The 20, 000 midi items were created randomly by a drum midi pattern generator.
|
|
|
06-22-2018, 01:38 PM
|
#13
|
Human being with feelings
Join Date: Jul 2017
Location: Hackensack
Posts: 347
|
Just curious - what are you doing with these 20,000 drum patterns?
|
|
|
06-22-2018, 01:59 PM
|
#14
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
First problem:
Find this:
Replace with this:
Second problem:
Find this:
Replace with this:
|
|
|
06-22-2018, 02:08 PM
|
#15
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Quote:
Originally Posted by Michael AD
Just curious - what are you doing with these 20,000 drum patterns?
|
Let's say I have a bassline that's one bar long...
I randomly pick one drum pattern from the 20,000 midi items and see if it sounds good with the bassline.
If it doesn't sound good, I hide that one doesn't-sound-good-in combination-with-bassline midi item and I then randomly choose another till I find the one that sounds good to me.
|
|
|
06-22-2018, 02:27 PM
|
#16
|
Human being with feelings
Join Date: Aug 2010
Location: Harrisburg, PA USA
Posts: 1,481
|
So you have 20,000 patterns that were generated randomly, and then you're randomly selecting among those randomly-generated patterns in hopes that you'll eventually randomly stumble on one that matches your bass line?
When you hit another section of the song with a different bass line, I'd guess you have to start again by randomly selecting among the randomly-generated patterns.
And in the midst of this, you're trying to clean up the randomly-generated patterns programatically to address the fact that the random patterns were generated - um - randomly.
Maybe I'm missing something here, but if not, you may want to rethink your process flow. Perhaps intentionally generate drum patterns to match the existing bass line.
If I've completely misunderstood, please clarify.
__________________
We act as though comfort and luxury were the chief requirements of life, when all that we need to make us happy is something to be enthusiastic about.
--Charles Kingsley... or maybe Albert Einstein... definitely somebody wiser than myself--
|
|
|
06-22-2018, 02:43 PM
|
#17
|
Human being with feelings
Join Date: Dec 2012
Posts: 13,333
|
Did you try File->Export project MIDI?
|
|
|
06-22-2018, 02:51 PM
|
#18
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Quote:
Originally Posted by tls11823
So you have 20,000 patterns that were generated randomly, and then you're randomly selecting among those randomly-generated patterns in hopes that you'll eventually randomly stumble on one that matches your bass line?
When you hit another section of the song with a different bass line, I'd guess you have to start again by randomly selecting among the randomly-generated patterns.
And in the midst of this, you're trying to clean up the randomly-generated patterns programatically to address the fact that the random patterns were generated - um - randomly.
Maybe I'm missing something here, but if not, you may want to rethink your process flow. Perhaps intentionally generate drum patterns to match the existing bass line.
If I've completely misunderstood, please clarify.
|
I did a test with 422 midi items. I am liking the results. The drum patterns sounds good to me. I like to try all sorts of methods. This method seems to be meeting my needs. I may stick to it for a while till I find a better way.
|
|
|
06-22-2018, 02:58 PM
|
#19
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Quote:
Originally Posted by vitalker
Did you try File->Export project MIDI?
|
I haven't tried that one yet. I've been batch saving the midi items from the Project Bay. Thanks very much for an alternative way that may be waaaaaay faster than the way I've been doing it.
In fact, my offline computer is tied up doing another batch midi export from the Project Bay right now. It takes over 5.5 hours to export 20,000 midi items. I'll try your suggestion as soon as it's done with the exporting.
|
|
|
06-22-2018, 03:25 PM
|
#20
|
Human being with feelings
Join Date: Dec 2014
Posts: 371
|
Pretty sure I can write a JSFX that could handle your first case (if there’s an open and closed hihat at the same moment, delete block the closed one). I’ll look into it over the weekend.
Last edited by preferred.nomenclature; 06-22-2018 at 03:31 PM.
Reason: strikethrough
|
|
|
06-22-2018, 03:39 PM
|
#21
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Quote:
Originally Posted by preferred.nomenclature
Pretty sure I can write a JSFX that could handle your first case (if there’s an open and closed hihat at the same moment, delete block the closed one). I’ll look into it over the weekend.
|
Thanks in advance no matter the outcome. Deleting the unwanted close hi-hat has benefits: it will shrink the file size. okay, guys/gals I.m done for the evening. I will be back tomorrow. Bye y'all from Britney Spears's brother. Not really.
|
|
|
06-22-2018, 09:17 PM
|
#22
|
Human being with feelings
Join Date: Dec 2014
Posts: 371
|
Hopefully you can make some use of this. This only works for notes with identical timestamps, which in your example would seem that they do
Code:
desc: gianniMIDI note favorer
in_pin:none
out_pin:none
slider1:HPN=58<0,127,1>high priority note
slider2:LPN=53<0,127,1>low priority note
@init
function isHPN()
(
(msg1>>4 == 9) && // message is a note on
(msg2 == HPN);
);
function isLPN()
(
(msg1>>4 == 9) && // message is a note on
(msg2 == LPN)
);
lastLPN = -1;
@block
sampleCount = -1; // we'll increment sampleCount in @sample for parity with offset
@sample
sampleCount += 1;
previousOffset = sampleCount > 0 ? sampleCount - 1 : samplesblock - 1;
lastLPN == previousOffset && lastHPN != previousOffset && // we have an unaccounted-for LPN from the previous sample, send it (one sample late, best we can do)
(
midisend(offset, 9<<4 + lastLPNChannel, LPN, lastLPNVelocity) ;
lastLPN = -1;
);
while(midirecv(offset, msg1, msg2, msg3))
(
handled = 0;
isHPN() &&
(
lastHPN = offset; // make a note that we processed a HPN at this offset
midisend(offset, msg1, msg2, msg3); // send message
handled = 1;
);
isLPN() &&
(
lastHPN !== offset && ( // we haven't process a HPN with the same offset, but we may get one yet
lastLPN = offset; // record the offset
lastLPNVelocity = msg3; // record the velocity
lastLPNChannel = msg1 & $~4; // record the channel
);
handled = 1;
);
!handled && midisend(offset, msg1, msg2, msg3); // these are not the note-ons we're looking for. move along.
// this will occasionally pass through spurious LPN-offs
// but that shouldn't be a problem, he said
);
Last edited by preferred.nomenclature; 06-23-2018 at 01:30 PM.
|
|
|
06-23-2018, 07:54 AM
|
#23
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Oh wow, that looks... foreign. Newbie here.
Good morning, even though it's rainy and windy. Stay home all day, probably. Google stuff.
Yup, I'm new to scripts. I'm now using Google to find out how to use it but is there a "best link" for absolute beginners somewhere?
|
|
|
06-23-2018, 08:01 AM
|
#24
|
Human being with feelings
Join Date: Dec 2012
Posts: 13,333
|
Quote:
Originally Posted by Harry Diddlebock
Yup, I'm new to scripts. I'm now using Google to find out how to use it but is there a "best link" for absolute beginners somewhere?
|
It is JSFX. Just create a new file, paste this code there, save it to the Effects folder in Reaper folder and have fun.
|
|
|
06-23-2018, 08:05 AM
|
#25
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Quote:
Originally Posted by vitalker
Did you try File->Export project MIDI?
|
That procedure exports all the 20,000 midi items as one midi file. I need to export the 20,000 midi items as 20,000 midi files so I could drag and drop each one onto a drum track later.
By the way, how do I stop REAPER from asking the same thing over and over with these dialog boxes? I wish it had a third choice like "Okay for the next 30 times or maybe even a hundred times".
Anyways, thanks for the suggestion.
|
|
|
06-23-2018, 08:06 AM
|
#26
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Quote:
Originally Posted by vitalker
It is JSFX. Just create a new file, paste this code there, save it to the Effects folder in Reaper folder and have fun.
|
Okay, thanks a billion. Will try that now, be back in a bit.
|
|
|
06-23-2018, 08:18 AM
|
#27
|
Banned
Join Date: Dec 2016
Location: England
Posts: 2,432
|
ey-seems your making music a right job m8...why not keep it simple?
rather than generating and editing 20,000 files--can you not make a random generator that creates midi on the fly and edit after as-u-go?
all the deep nerdery is not letting you be realaxed into a musical flow...if that's the intention?
it's like trying to be a musician by talking,or reading about it eh?
|
|
|
06-23-2018, 11:01 AM
|
#28
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Quote:
Originally Posted by Bri1
ey-seems your making music a right job m8...why not keep it simple?
rather than generating and editing 20,000 files--can you not make a random generator that creates midi on the fly and edit after as-u-go?
all the deep nerdery is not letting you be realaxed into a musical flow...if that's the intention?
it's like trying to be a musician by talking,or reading about it eh?
|
To me a musician, or more precisely a composer, is this: you make music, the method shouldn't matter. My method is very very very simple. Drag and drop midi drum file onto a drum track, hear if it sounds good with the bass guitar. Build everything from that. Nothing complex, plus I bet lots of people do it that way.
Different methods should be good for diversity. You have your way, they have their ways, I have my way. I like the David Bowie way, especially the way he did his lyrics. He chose random words from newspapers or magazines, etc, and randomly put them together and looked at the words and was inspired by the random sentences that the words made. Cut and paste is what David Bowie called it, I think. Why can't that be done with music too, and not just with lyrics?
|
|
|
06-23-2018, 11:16 AM
|
#29
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Quote:
Originally Posted by vitalker
It is JSFX. Just create a new file, paste this code there, save it to the Effects folder in Reaper folder and have fun.
|
I'm having trouble making the JSFX script show up in the FX browser. What am doing wrong?
I have a picture but it's very blurry because file limit of 60KB. Magnify this picture:
|
|
|
06-23-2018, 11:19 AM
|
#30
|
Human being with feelings
Join Date: Jun 2007
Location: Terra incognita
Posts: 7,670
|
Can't tell anything from that picture, but make sure you didn't save the JSFX as a text file (having a .txt or any other extension). Rename the file without any extension and you should be good.
|
|
|
06-23-2018, 11:25 AM
|
#31
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Quote:
Originally Posted by xpander
Can't tell anything from that picture, but make sure you didn't save the JSFX as a text file (having a .txt or any other extension). Rename the file without any extension and you should be good.
|
Aha, I did do that, added a .txt extension. Ooops. Okay be back in a bit.
|
|
|
06-23-2018, 11:57 AM
|
#32
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
I copied the "gianniMIDI note favorer" script file to here:
C:\Program Files\REAPER\InstallData\Effects
It still didn't show up in the FX browser.
So I deleted it from there and put it here:
C:\Program Files\REAPER\Effects
It still didn't show up in the FX browser.
In the FX browser it should show up as "JS: gianniMIDI note favorer", right?
But this is what it looks like:
|
|
|
06-23-2018, 11:58 AM
|
#33
|
Human being with feelings
Join Date: Dec 2014
Posts: 371
|
Try hitting F5 to re-scan
|
|
|
06-23-2018, 12:04 PM
|
#34
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Quote:
Originally Posted by preferred.nomenclature
Try hitting F5 to re-scan
|
I did the F5 refresh, the FX browser blinked but no change.
|
|
|
06-23-2018, 12:07 PM
|
#35
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Oh wait, do I need extra components, my setup is bare minimum. Do I need runtimes and stuff?
|
|
|
06-23-2018, 12:10 PM
|
#36
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
I looked at the CCleaner Uninstaller and I see that all I have is microsoft net framework 2.0
|
|
|
06-23-2018, 12:17 PM
|
#37
|
Human being with feelings
Join Date: Jun 2009
Location: Croatia
Posts: 24,790
|
Quote:
Originally Posted by Harry Diddlebock
Oh wait, do I need extra components, my setup is bare minimum. Do I need runtimes and stuff?
|
For JS FX, no, you don't.
JS FX need to go in Reaper's resource folder, so search the action list for "resource", run the action to open the resources folder, you'll see "Effects" folder in there, put the JS FX there.
|
|
|
06-23-2018, 12:18 PM
|
#38
|
Human being with feelings
Join Date: Dec 2014
Posts: 371
|
Nope, you’re fine. Deep breaths!
Options/Show Reaper resource path in Explorer. There will be an Effects folder in there, that’s the one you should use. If it doesn’t show up after putting it there and hitting F5 you have a gremlin in your computer, or possibly missed a line or two when copy-pasting
|
|
|
06-23-2018, 12:22 PM
|
#39
|
Human being with feelings
Join Date: Dec 2012
Posts: 13,333
|
Quote:
Originally Posted by Harry Diddlebock
I have a picture but it's very blurry because file limit of 60KB. Magnify this picture:
|
Use https://stash.reaper.fm/ for all the files.
|
|
|
06-23-2018, 12:25 PM
|
#40
|
Human being with feelings
Join Date: Jun 2018
Location: At the bottom optimistically looking up.
Posts: 142
|
Yeeehah. It showed up. Okay I'm off to test if it will block the unwanted hi-hats. Be back in 15 minutes. Thanks guys.
|
|
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -7. The time now is 08:43 AM.
|