Go Back   Cockos Incorporated Forums > REAPER Forums > Recording Technologies and Techniques

Reply
 
Thread Tools Display Modes
Old 05-04-2019, 05:25 PM   #1
privatesalt
Human being with feelings
 
privatesalt's Avatar
 
Join Date: Jan 2014
Location: Earth
Posts: 8
Default Alesis Nitro, EzDrummer - stuck crash cymbal choke/grab fix

Greetings,

First post here. I've been reading the Reaper forums for years. Thanks for all the great info! I ran across a fix today and hope this may help someone. I searched all over the web for months and never could find and answer. I finally gave up and bought Addictive Drums (which cymbal chokes work fine in it).


UPDATE 2: Skip this and go to next 2 post. (The solution in this post didn't work out).


Problem was when I did a crash cymbal choke (grab) on the Alesis Nitro drum kit, the choke would get stuck in EzDrummer. I would have to restart Reaper to get it unstuck. I was playing around with it again today using VSTi MIDI Converter 3, JS MIDI Examiner, and JS MIDI Logger, and happened onto this fix. I don't know exactly what Program Change it's using in the MIDI Converter, but it works great.

I found the Nitro module choke/grab sends poly aftertouch (a9 31 7F). This is on note C#2 crash on the Nitro and in EZDrummer. See in attached examiner and logger image. (This is after it is converted from a9 31 7F to c9 00 00).

The fix is to add MIDI Converter 3 on the Input FX (before EZDrummer) and set the sliders like in the attached image. It converts the Poly aftertouch to a Program Change.

I was thrilled to see it working and thought I would share it here. I think it's great REAPER has all these great tools for problems like this. I did notice in the recorded MIDI item there is a 'PC' where I grabbed the cymbal (attached). I assume this is the Program Change. It doesn't seem to cause any problems on my setup, but not sure if if it would cause problems on another system/setup if I share the MIDI or REAPER projects. I went into the MIDI editor and removed it and the cymbal stopped choking..It just rang out like no grab. So it seems to be required in the final MIDI.

If anyone knows a better solution I'd like to hear it. Using a Program Change seems a bit odd. I just know EZDrummer doesn't like 'a9 31 7F' poly aftertouch MIDI code for cymbal chokes (at least on my setup) and converting to 'ProgChg Inc' works.

Cheers!

UPDATE: I've found a problem with this solution. The Program Change will switch the drum kit back to the Basic kit when the recorded MIDI is played back. For example if you are using "Modern Vintage" kit in EZDrummer, it will switch back to "Basic" kit when it plays across the Program Change. I'm still looking for a good work around. Please post ideas if you have any knowledge on it. This will work only for the Basic kit that comes with EZDrummer (or any add on Basic kits). It also switches back to the Basic kit in the add-ons.
Attached Images
File Type: jpg VSTi.midiConverter3.JPG (62.1 KB, 615 views)
File Type: jpg JS.MIDI Logger.JPG (35.7 KB, 502 views)
File Type: jpg JS.MIDI Examiner.JPG (43.5 KB, 484 views)
File Type: jpg EZDrummer MIDI channel.JPG (27.0 KB, 513 views)

Last edited by privatesalt; 05-14-2019 at 06:53 PM. Reason: Corrected image description. Found problem in solution.
privatesalt is offline   Reply With Quote
Old 05-06-2019, 07:07 PM   #2
privatesalt
Human being with feelings
 
privatesalt's Avatar
 
Join Date: Jan 2014
Location: Earth
Posts: 8
Default

I made a JSFX script for this problem that seems to be working great.

The Alesis Nitro module sends only one Poly Aftertouch MIDI message (a9 31 7f) for the crash cymbal choke. I found that EZDrummer requires at least 2 Channel Pressure (Channel Aftertouch) messages with first value higher than 64 and second value 64 or lower. I found EZDrummer requires this by recording the crash (without grabbing it), then went into the MIDI editor and drew in the Channel Pressure to see how it works.

When the script receives the incoming Poly Aftertouch message from the Nitro, it sends 2 Channel Pressure messages out (first one with value higher than 64, and second with value 64 or lower). I also added code to remove the MIDI timing code messages that are constantly being sent from the Nitro.

When the JS script is added to the Incoming FX chain on the EZDrummer channel the cymbal choke works correctly and no longer gets stuck in the 'grab' state, and I can see where Reaper records the Channel Pressure in the lane under the MIDI notes.

I'll post the script soon (after more testing) in case anyone else runs into the same problem.

Cheers

UPDATE: The script is still coming along. Still testing and chasing down minor bugs. Also added sliders to adjust the high and low channel pressure, and the delay between the 2 messages (for setting preferred values for easier editing in the channel pressure lane after recording). Also added a slider to turn on/off the timing clock messages coming from the Nitro. I'm new at coding JSFX/MIDI so learning/coding as I go. Hope to have soon.

UPDATE 2: Timing Code slider not needed. See 3rd post with script.

Last edited by privatesalt; 05-14-2019 at 06:55 PM. Reason: Updated the 2 Channel Pressure values that EZDrumer requires.
privatesalt is offline   Reply With Quote
Old 05-14-2019, 05:46 PM   #3
privatesalt
Human being with feelings
 
privatesalt's Avatar
 
Join Date: Jan 2014
Location: Earth
Posts: 8
Default

The JSFX script is attached. If anyone else is using Alesis Nitro drum kit and has a problem with your Crash 1 cymbal getting stuck after you grab it, drop this in the Incoming FX chain (before EZDrummer).
I'm a newbie with JSFX and MIDI scripts. There may be a better way to code it, but it seems to be working great on my system. I consider this a BETA release. I haven't done extensive testing, so can't guarantee it'll work in all circumstances (or on all systems). It took a good bit of time learning/coding it and I need to get back to making music.

I may revisit it at some point to make additional functionality (and find out why some of the things I wanted to do would not work). One issue is if the Incoming MIDI is set to MIDI ALL it will not work correctly. You must have the channel set to CH10 (the channel the Nitro module outputs MIDI on).
I found that when set to CH10, the Timing Code from the Nitro is no longer incoming to the track (nothing to do with this script), so the slider to enable Timing Code ON/OFF was not needed. If incoming MIDI is set to ALL the Timing code is present again (but the script will not function).

I wish I had more time to learn/investigate but need to get back to music projects. If you try the script I'd like to hear your feedback. Let me know if it works OK for you. If you edit your MIDI after recording (and move the crash cymbal notes around), don't forget to move the Channel Pressure in the lanes. It does not move with the note.

Here's a copy/paste from notes in the script. (Some of this is repeat of previous post):

IMPORTANT: Incoming MIDI channel must be set to CH 10 for this script to work. (The Nitro outputs on CH 10). If incoming MIDI is set to ALL, this script will not work. Put this script in the Incoming FX chain on the EZDrummer channel.

The Alesis Nitro sends only one Poly Aftertouch MIDI message (a9 31 7f) for the crash cymbal 1 choke (when you grab the cymbal). EZDrummer requires at least 2 Channel Pressure (Channel Aftertouch) messages. The first one with a value higher than 64 and the second one with a value of 64 or lower. The first message chokes the cymbal and the second one resets the choke.

When this script receives incoming Poly Aftertouch message, it sends out 2 Channel Pressure MIDI messages (with values determined by the sliders). The delay between the 2 Channel Pressure messages can be set with the slider.

To install, copy it to the Reaper Effects directory and remove .txt from filename. Then Re-scan plugins or restart Reaper. (To find your Effects directory in REAPER, go to Options, Show REAPER resource path).

Cheers

Last edited by privatesalt; 05-15-2019 at 05:01 AM.
privatesalt is offline   Reply With Quote
Old 05-18-2019, 11:30 AM   #4
Mhall
Human being with feelings
 
Join Date: May 2019
Posts: 1
Default

I signed up to the website just to give thanks for someone giving of their time. I bought the Alesis Nitro about a year ago and ran into this midi problem as well - going through Reaper. Tried a couple of things and ended up buying ezdrummer and still had the same problem of course. I figured I would live with it but I wanted to do a cover of Billy Squire Lonely is the night and figured I'd try another search...and it was only just two weeks ago and you have a solution. Thanks again!
Mhall is offline   Reply With Quote
Old 05-19-2019, 12:00 PM   #5
privatesalt
Human being with feelings
 
privatesalt's Avatar
 
Join Date: Jan 2014
Location: Earth
Posts: 8
Default

Quote:
Originally Posted by Mhall View Post
I signed up to the website just to give thanks for someone giving of their time. I bought the Alesis Nitro about a year ago and ran into this midi problem as well - going through Reaper. Tried a couple of things and ended up buying ezdrummer and still had the same problem of course. I figured I would live with it but I wanted to do a cover of Billy Squire Lonely is the night and figured I'd try another search...and it was only just two weeks ago and you have a solution. Thanks again!
Hi, Thanks for the feedback! Great to hear it worked on your setup. I was hoping it would would work on other computers/interfaces (and would be no buffer/timing issues). So this is very good to hear.

I have not tested at all sample rates and buffer settings. I usually run at 48kHz sample rate and 128 buffer size and it has always worked. I even did repeated fast cymbal rolls/grabs trying to make it stick. It seems solid so far.

I think the Nitro triggering EZDrummer is a great kit for the money. I was surprised they didn't already have a cymbal grab (or choke) standard worked out for kits like this and EZDrummer. Anyway, glad we have the capabilities of REAPER and JSFX to solve problems like this!

Great song by Billy Squire BTW.

Cheers
privatesalt is offline   Reply With Quote
Old 05-20-2019, 08:06 AM   #6
brainwreck
Human being with feelings
 
Join Date: Jul 2006
Posts: 20,859
Default

Nice work privatesalt. I don't have an Alesis Nitro. Just wanted to say that it's very cool that JSFX exists, providing the toolset for users to be able to solve these kinds of problems.
__________________
It's time to take a stand against the synthesizer.
brainwreck is offline   Reply With Quote
Old 05-20-2019, 04:19 PM   #7
privatesalt
Human being with feelings
 
privatesalt's Avatar
 
Join Date: Jan 2014
Location: Earth
Posts: 8
Default

Thanks brainwreck. It is incredible REAPER has all these tools for problem solving and work flow. The more I dig into it, the more I love about it. I still have a lot to learn for sure, but this first attempt definitely gave me the bug to dive deeper into JSFX and all the other tools. Really is amazing the things you can do with them and REAPER. I have a background in mainly Perl and dabbled in a few other scripting languages (long ago), so it was fun getting back into it a little and working on something music related.

Last edited by privatesalt; 05-21-2019 at 05:29 AM.
privatesalt is offline   Reply With Quote
Old 05-28-2019, 09:04 AM   #8
floydthebarber71
Human being with feelings
 
Join Date: May 2019
Posts: 3
Default

First of all, awesome work and thank you!! I'm going to need more help though because I must be a moron. I don't understand how to "drop the script" in the input fx of the ezdrummer track. I've placed the file in the Reaper Effects folder and re scanned the plugins. But I'm not sure what to look for under fx? Do I need MIDI Converter 3? What is the fx name?

I've also got a Crash 2 with my Alesis, would you be able to amend your script to add the same code for Crash 2? I've taken a look at the coding and can't figure that out for the life of me

Let me know if you can help! Thanks!
floydthebarber71 is offline   Reply With Quote
Old 06-01-2019, 11:38 AM   #9
privatesalt
Human being with feelings
 
privatesalt's Avatar
 
Join Date: Jan 2014
Location: Earth
Posts: 8
Default

Hi floydthebarber71,

MIDI Converter 3 isn't needed. Only the JSFX script. It should show up in the JS plugins folder as "JS: Alesis Nitro to EZDrummer..." (see attached image 'JS FX Folder'). Or search all plugins for 'Alesis' using the filter.

The Input FX button should be visible on the mixer (on the EZDrummer track), right beside the normal FX button. (See attached 'Input FX Button'). The image has the default theme.

When adding the EZDrummer track, in the top menu click 'Insert' then click 'virtual instrument on new track...'. Add EZDrummer and the Input FX button should be visible. If you add a normal track I don't think the button is visible.

Hope that helps and hope it works with your setup. I'll look into adding the Crash 2. I don't have the 2nd Crash cymbal but this may be a good excuse to get one. I need to find out what note it sends when you hit it and what poly aftertouch it sends when you grab it.

Cheers
Attached Images
File Type: jpg Input-FX-Button.jpg (18.8 KB, 502 views)
File Type: jpg Input-FX-chain-JS Alesis-to-EZDrummer.JPG (41.8 KB, 505 views)
File Type: jpg JS-FX-folder.jpg (40.9 KB, 545 views)

Last edited by privatesalt; 06-01-2019 at 04:24 PM.
privatesalt is offline   Reply With Quote
Old 06-01-2019, 11:56 AM   #10
floydthebarber71
Human being with feelings
 
Join Date: May 2019
Posts: 3
Default

Ah perfect, thanks! It works like a charm!

What's curious is that choking the crash also chokes the ride, if it is ringing

I can find out what note it sends for Crash 2, how can I check this for you? Or alternatively you could connect your current crash to the Crash 2 expansion slot using a stereo cable to activate it to see the notes...

Let me know how I can help with that! Would be cool if you got that in the script

Thanks so much for this, wish the Toontrack devs had sorted this out years ago?!
floydthebarber71 is offline   Reply With Quote
Old 06-01-2019, 04:10 PM   #11
privatesalt
Human being with feelings
 
privatesalt's Avatar
 
Join Date: Jan 2014
Location: Earth
Posts: 8
Default

Quote:
Originally Posted by floydthebarber71 View Post
Ah perfect, thanks! It works like a charm!

What's curious is that choking the crash also chokes the ride, if it is ringing

I can find out what note it sends for Crash 2, how can I check this for you? Or alternatively you could connect your current crash to the Crash 2 expansion slot using a stereo cable to activate it to see the notes...

Let me know how I can help with that! Would be cool if you got that in the script

Thanks so much for this, wish the Toontrack devs had sorted this out years ago?!

Great to hear its working. Try this one attached. Let me know if it works for Crash 2. I found the note # in the Alesis manual. I also ordered a Crash 2 today.

This one 'should' work, but of course I don't have the cymbal yet to test how the 2 crash cymbals interact with each other. It still works fine on my kit for Crash 1.

Good find on the ride cymbal choking. I didn't even notice that. I confirmed it on mine too. There may not be a workaround since it's EZDrummer that is choking the ride when it sees the Channel Pressure (or Channel Aftertouch). We may find that is the case with the crash cymbals also (grab one and both choke). It's Channel Pressure so it isn't note specific. I'll give it some more thought, but don't see a workaround at the moment. I guess one upside is you don't have to grab all the cymbals to silence them.

I did find out one more thing while testing today. You will need to put the JSFX in the Input FX chain (instead of in the FX chain ahead of EZDrummer). If it is NOT put in the Input FX chain, the recorded MIDI will be the Poly Aftertouch from the Nitro instead of the Channel Pressure from the script. It still works with it in the EZDrummer FX chain, but if you edit the MIDi afterward, I don't think there is a way to move the poly aftertouch (there is no lane for it). Only Channel Pressure has a lane as far as I know.

To install, just delete the other file in the Reaper Effects folder and put this one in its place (remove .txt from the end). You may need to re-scan the plugins.
Cheers

Last edited by privatesalt; 06-01-2019 at 05:53 PM.
privatesalt is offline   Reply With Quote
Old 06-02-2019, 01:44 AM   #12
floydthebarber71
Human being with feelings
 
Join Date: May 2019
Posts: 3
Default

Ah excellent! I tested Crash 2 and it works. My physical crash 2 is still in the mail as well, but I just plugged my crash 1 into the crash 2 expansion slot and it works perfectly.

Thanks so much, epic work!!
floydthebarber71 is offline   Reply With Quote
Old 12-08-2020, 06:28 PM   #13
traynor_garnet
Human being with feelings
 
Join Date: Jan 2020
Posts: 7
Default

I was so excited to read this as my Nitro ride cymbal is constantly choked through ezdrummer2. I have followed the instructions but, alas, the script isn't working for me. One weird thing, the file name doesn't have txt in it so I couldn't "remove .txt from filename." It is showing up in Reaper, I have it loaded before Ez drummer, but my ride is choked.

FWIW, I too have two crash cymbals and a ride.

TG

EDIT: It seems to be working on Crash 1 but my ride is almost always stuck and my crash 2 sticks as soon as I choke once.

Last edited by traynor_garnet; 12-08-2020 at 06:56 PM.
traynor_garnet is offline   Reply With Quote
Old 05-28-2023, 04:24 PM   #14
sonosaurus
Human being with feelings
 
Join Date: May 2023
Posts: 1
Default

Inspired by privatesalt's script, I have attached a simplified version that works for all choke events sent from an Alesis Nitro (etc), and also will filter out midi beat clock messages as well (just in case). There doesn't seem to be any need for delay, or a specific note condition, and it should stay as poly aftertouch so the correct cymbal is choked. Basically this just sends out an additional poly aftertouch with value 0 (or whatever low value you like) immediately after the high value one that does the choke.

This seems to work fine for EZDrummer and others set up to handle poly-aftertouch for cymbal chokes... fixing the broken behavior from the Alesis kits.
Attached Files
File Type: txt midi_Alesis_Nitro_stuck_cymbal_choke_fix.txt (2.2 KB, 102 views)
sonosaurus 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 01:40 AM.


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