|
|
|
03-06-2007, 10:38 AM
|
#1
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
|
IX JS Collection
All of the plugins below are now included in the Reaper installer.
IX Channel Utils:
Documentation for the audio utilities will be uploaded to the wiki sometime in the not too distant future but is still available as an ASCII text download.
- Switcher - takes four stereo inputs and lets you choose which one you listen to.
- Switcher2 - As Switcher but has level faders to match up the gain of different sources.
- SwixMitch - takes four stereo inputs, mixes them into two buses and lets you crossfade the buses.
- Mixer_8xS-1xS - takes 8 stereo inputs and mixes them to one stereo pair.
- Mixer_8xM-1xS - takes 8 mono inputs and mixes them to a stero pair.
- StereoPhaseInvert - inverts either left, right or both channels of a single stereo input.
- PhaseAdjustingRouter - same as StereoPhaseInvert but has selectable I/O channels, which may be handy.
IX MIDI Utils
Documentation for the MIDI utilities can be found on the Cockos Wiki.
- MIDI_Tool - Does interesting and fun things to note events.
- MIDI_Tool II - Does even more interesting and fun things to note events.
- MIDI_CCRider - LFO Controlled CC generator.
- MIDI_Wobulator - LFO Controlled automatic pitch wobulator.
- MIDI_Router - Routes events from one channel to another.
- MIDI_DuplicateFilter - Blocks duplicate notes.
- MIDI_Velocifier II - Pattern based velocity modifier
- MIDI_Variant - Pattern based, musically aware, randomification monster.
- MIDI_KeySnap - A good cheat for bad pianists.
- MIDI_KeyMap - Key mapping utility.
----------------------------------------------------------------------
Last edited by IXix; 12-19-2007 at 03:43 AM.
|
|
|
03-06-2007, 10:40 AM
|
#2
|
Human being with feelings
Join Date: Jun 2006
Posts: 22,572
|
totally appreciated, thank you!!!!!!!!!!!
|
|
|
03-06-2007, 12:09 PM
|
#3
|
Human being with feelings
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,754
|
Yes, thank you !
|
|
|
03-06-2007, 01:31 PM
|
#4
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
|
Cheers guys. For some reason I actually enjoy making these things. It's like solving a puzzle.
|
|
|
03-06-2007, 03:11 PM
|
#5
|
Human being with feelings
Join Date: Jun 2006
Posts: 1,167
|
DAMN, I missed these the first time, what great simple powerful tools here, we can do parallel processing MEGA easy now. I knew it was possibly before, but this just makes it stupid sexy
Also very helpful MIDI utils
|
|
|
03-06-2007, 03:15 PM
|
#6
|
Human being with feelings
Join Date: Jun 2006
Posts: 1,167
|
I like to add a final "Mix" slider at the end, just for convenience (so it's on the same plug), and put each "Pan" underneath each "Volume" slider... simple changes you might want to include, maybe not... it's all good
|
|
|
03-06-2007, 03:23 PM
|
#7
|
Human being with feelings
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,754
|
IXix, you seem to be a midi plugin guru now, so i'd have some little questions :
Is it possible with the JS efx coding system to make some more midi plugins ?
I am thinking about 3 things that could make my life (and for toher people too i hope !) easier & funnnier :
1- a "delete duplicate" plugin : quite useufl for erasing duplictaed notes while recording in overdub mode. It has no sense for single one pass takes, but while doing multitake it can be quite handy, and make the handling of notes easier. I like this feature in Ext.
2- a "midi quantize" plugin : same here : of course the notes can not be quantized on the first pass of the overdub, but it could work that way : the user insert the plugin, specifies a grid (1/8, 1/32, 1/2, or whatever), and the plugin would make hand the recorded notes automatically fit to the grid... Is it possible to do this in pseudo realtime (i mean without stopping the recording) ?
3- a randomizer plugin (in fact, just similar to the one in A_leton Liv_.. eheh. it would add random notes (in a given key or range, with user customizable random & probability rate). Very nice for small or drastic variation from a single clip...
(I know i have already suggested these 3 things here and there, but i can't find where...)
Thanks again for your work, i hope it will get integrated into the "official" reaper package soon !
|
|
|
03-06-2007, 03:39 PM
|
#8
|
Human being with feelings
Join Date: Jun 2006
Posts: 1,167
|
One thing I'm interested in is making a JS plug to control other plugins by use of MIDI CC... not sure if it's possible yet (I'm trying though)
|
|
|
03-07-2007, 05:03 AM
|
#9
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
|
Quote:
Originally Posted by gregh
statPitch = 14 * 16, what does this value mean, how did you derive it?
|
Hi gregh. The 'status' byte of a midi message consists of the message type and the channel. The 14 is the message type (pitch bend), the *16 just puts it in the high four bits of the 8 bit status byte. The low four bits are the channel, starting at 0. So the 14*16 gives you 11100000 in binary and I just store it in the variable statPitch for quick and easy comparisons.
Quote:
midisend(offset,statPitch+channel,value*2); I am not sure what the parameters are looking for - I guess that the final parameter is for setting pitch. In midi_velocity control this final paramter seems to be sending velocity information. I can't find anything in the code that seems to specify that this time paramter three is velocity and next time it's pitch etc. Must be there somewhere, but I'm struggling. I have looked on the JS site and not been able to fully understand ---lots.
|
The midi functions take three arguments: offset, msg1, msg23. The receive function fills them, the send function wants you to specify them.
offset is the offset in samples into the current sample block. So if a midi note arrives at a point 100 samples into the block, the offset will show 100. If you specify a value for offset in a send, the message should be sent offset samples into the block. I think. I could be wrong. It doesn't seem to be much use anyway, unless you need super-exact midi timing.
msg1 is the 'status' byte as discussed above.
msg23 is a two byte general purpose container. What the data means depends on what the status byte is. For pitch wheel, the full two bytes are used for the wheel position. For most other CCs, the first byte is the CC number (0-127) and the second is the value (0-127). You have to do some crazy stuff to get and set the two values properly.
By the way, that midisend(offset,statPitch+channel,value*2), I meant to get rid of that *2. It's a compensation kludge leftover from when I was figuring it all out. The Wobulater handles pitch bends properly. I think.
A good explanation of the MIDI spec can be found here
I'm no expert on this stuff. I may be wrong about any of the above. Good luck.
|
|
|
03-07-2007, 05:18 AM
|
#10
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
|
Quote:
Originally Posted by sinkmusic
you seem to be a midi plugin guru now
|
Nope! Enthusiastic amateur!
Quote:
1- a "delete duplicate" plugin : quite useufl for erasing duplictaed notes while recording in overdub mode. It has no sense for single one pass takes, but while doing multitake it can be quite handy, and make the handling of notes easier. I like this feature in Ext.
|
You could maybe have a blocker that would stop duplicate notes passing through the effect within a certain amount of time. Couldn't actually delete anything from a midi part though.
Quote:
2- a "midi quantize" plugin : same here : of course the notes can not be quantized on the first pass of the overdub, but it could work that way : the user insert the plugin, specifies a grid (1/8, 1/32, 1/2, or whatever), and the plugin would make hand the recorded notes automatically fit to the grid... Is it possible to do this in pseudo realtime (i mean without stopping the recording) ?
|
Yes and no I think. You could only snap notes to the next position along ie. quantize forwards only.
Quote:
3- a randomizer plugin (in fact, just similar to the one in A_leton Liv_.. eheh. it would add random notes (in a given key or range, with user customizable random & probability rate). Very nice for small or drastic variation from a single clip...
|
I haven't forgotten about that. It's something I'd like myself but I haven't figured out the way to do it yet. In fact I'd find all three of those useful. I'll tackle them sooner or later, or maybe LOSER will get the midi bug.
|
|
|
03-07-2007, 05:19 AM
|
#11
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
|
Quote:
Originally Posted by Youn
I like to add a final "Mix" slider at the end, just for convenience (so it's on the same plug), and put each "Pan" underneath each "Volume" slider... simple changes you might want to include, maybe not... it's all good
|
Good idea. That's an easy one! I'll do it!
|
|
|
03-07-2007, 05:25 AM
|
#12
|
Scribe
Join Date: Jan 2007
Location: Van Diemen's Land
Posts: 12,204
|
IXix -
Wow! I love those mixers. I think I'll add a sub-section in the next revision of the User Guide.
Is there a URL I can include for future downloads? Or should I use the forum attachment one?
|
|
|
03-07-2007, 06:18 AM
|
#13
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
|
UPDATE ALERT! See top of thread for changes.
Quote:
Originally Posted by nicholas
IXix -
Wow! I love those mixers. I think I'll add a sub-section in the next revision of the User Guide.
Is there a URL I can include for future downloads? Or should I use the forum attachment one?
|
Thanks! I'll be keeping all the plugs I make in this thread rather than starting new ones all the time and the zip names won't change, regardless of updates so it should be safe to link these. I'd check with the Cockos boys first though. Maybe I should put some sort of disclaimer in the scripts?
Quote:
Originally Posted by gregh
thanks for this - i'll look up the spec and start struggling away - hopefully in the end i can come up with something both fun and useful
|
You're welcome. If you hit a wall, feel free to ask. Us noobs should stick together!
|
|
|
03-07-2007, 07:24 AM
|
#14
|
Human being with feelings
Join Date: Jul 2006
Location: Antipodes
Posts: 1,190
|
You are so smart
86: "You are way smarter than me 99"
|
|
|
03-07-2007, 07:42 AM
|
#15
|
Human being with feelings
Join Date: May 2006
Location: Skellefteå, Sweden
Posts: 378
|
Thanks IXix for the midi router!!! I thought about making one myself but here it is. Perfect for extracting certain drum notes.
|
|
|
03-07-2007, 12:50 PM
|
#16
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
|
Thanks all!
Quote:
Originally Posted by Youn
One thing I'm interested in is making a JS plug to control other plugins by use of MIDI CC... not sure if it's possible yet (I'm trying though)
|
This afternoon I controlled a ReaEQ with CCRider. Used MIDI Ox and MIDI Yoke to route the CCs out of Reaper (on Yoke 2) and back in again (on Yoke 1) so MIDI Learn could hear them! It was beautiful, watching the sliders move up and down on their own. I'm gonna expand CCRider with different LFO shapes as soon as I can.
|
|
|
03-16-2007, 03:59 PM
|
#17
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
|
Ker-BUMP! Update alert.
New treats for you lucky MIDI junkies. You'll LOVE these!
MIDI_DuplicateFilter - Blocks duplicate notes.
MIDI_Velocifier II - Pattern based velocity modifier.
MIDI_Variant - Pattern based, musically aware, randomification monster.
MIDI_KeySnap - A good cheat for bad pianists.
All except the duplicate filter use extra data files. See the readme for installation info. The extra files are scales and sequences to help you do fun things. I've included some of the more common scales and some simple sequences but you can make your own very easily. See scales.doc and sequences.doc in the relevant folders for instructions.
Enjoy!
|
|
|
03-16-2007, 04:56 PM
|
#18
|
Human being with feelings
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,754
|
Quote:
Originally Posted by IXix
Ker-BUMP! Update alert.
New treats for you lucky MIDI junkies. You'll LOVE these!
MIDI_DuplicateFilter - Blocks duplicate notes.
MIDI_Velocifier II - Pattern based velocity modifier.
MIDI_Variant - Pattern based, musically aware, randomification monster.
MIDI_KeySnap - A good cheat for bad pianists.
All except the duplicate filter use extra data files. See the readme for installation info. The extra files are scales and sequences to help you do fun things. I've included some of the more common scales and some simple sequences but you can make your own very easily. See scales.doc and sequences.doc in the relevant folders for instructions.
Enjoy!
|
yeaaaah !
|
|
|
03-20-2007, 02:32 PM
|
#19
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
|
Update again.
Schwa felt that including his humanizer with my midi utils would help more people find it, so that's what I've done. He and I also made essentially the same key mapping plugin at the same time. My version had a couple more features and a more readable mapping file so that's here too.
schwa's midi_humanizer adds a user-defined amount of normally distributed error to the velocity and timing of a piano-rolled midi performance
MIDI_KeyMap - Replaces incoming notes with user defined note values defined in a user editable text file. If you need F#6 on your keyboard to trigger D2 on your sampler then this is the effect for you.
|
|
|
03-20-2007, 03:03 PM
|
#20
|
Human being with feelings
Join Date: Nov 2006
Posts: 150
|
Great stuff. Thanks so much.
Would it be possible for you to add tempo sync to CC Rider?
|
|
|
03-20-2007, 03:21 PM
|
#21
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
|
Quote:
Originally Posted by JPV
Great stuff. Thanks so much.
Would it be possible for you to add tempo sync to CC Rider?
|
Yeah, easy I think. I've been meaning to add different LFO shapes to that one so I'll stick tempo sync in too when I get round to it.
|
|
|
03-20-2007, 03:31 PM
|
#22
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
|
Quote:
Originally Posted by gregh
here is a tiny variation to the humanizer that allows for biasing the randomisation to before or after the beat
|
Thanks gregh.
|
|
|
03-21-2007, 09:48 PM
|
#23
|
Administrator
Join Date: Mar 2007
Location: NY
Posts: 15,823
|
Here's an updated version of the humanizer with some finer tuned settings, and a realtime readout of how much humanization is being added. Gregh, I kept your bias adjustment in there, it's a nice way to make the beat a little bit jumpy or lazy, thanks for that.
I tweaked on this because I used it in a mix tonight.
IX, if you pick this file up to replace the one in your package, drop me a pm and I'll remove it here. Thanks!
[ Edit: humanizer can be found here. ]
Last edited by schwa; 03-27-2007 at 11:54 AM.
Reason: link to humanizer effect
|
|
|
03-21-2007, 09:53 PM
|
#24
|
Human being with feelings
Join Date: Nov 2006
Posts: 150
|
Quote:
Originally Posted by IXix
Yeah, easy I think. I've been meaning to add different LFO shapes to that one so I'll stick tempo sync in too when I get round to it.
|
Cool, thanks for considering that. I'm very big on using tempo synced modulation and this plug looks to be a godsend in that regard.
|
|
|
03-21-2007, 11:09 PM
|
#25
|
Administrator
Join Date: Jan 2005
Location: NYC
Posts: 15,746
|
ixix, you want these included with REAPER? let me know
|
|
|
03-22-2007, 01:39 PM
|
#26
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
|
Quote:
Originally Posted by Justin
ixix, you want these included with REAPER? let me know
|
An honour. I'd like to do a little bit of work on some of them before they go in the pack though so I'll message you when they're ready. I'll write up some documentation for the wiki too.
Should I put some sort of disclaimer in the files saying that you're not responsible if my effects screw things up?
Quote:
Originally Posted by JPV
Cool, thanks for considering that.
|
You're welcome. Tempo sync version will be available soon. The different LFO shapes are frying my brain though, so that may take a little longer.
Quote:
Originally Posted by schwa
IX, if you pick this file up to replace the one in your package, drop me a pm and I'll remove it here.
|
Will do. Don't suppose you know anything about generating different LFO shapes in the @block section? I'm no hotshot coder, I'm just a drummer
|
|
|
03-22-2007, 02:54 PM
|
#27
|
Administrator
Join Date: Jan 2005
Location: NYC
Posts: 15,746
|
Quote:
Originally Posted by IXix
An honour. I'd like to do a little bit of work on some of them before they go in the pack though so I'll message you when they're ready. I'll write up some documentation for the wiki too.
Should I put some sort of disclaimer in the files saying that you're not responsible if my effects screw things up?
|
Awesome.. no need to do a disclaimer, but I'd suggest putting a license description in the code (i.e. BSD or GPL or whatnot, like what Scott does)...
Thanks!
-Justin
|
|
|
04-03-2007, 06:24 PM
|
#28
|
Human being with feelings
Join Date: Nov 2006
Posts: 150
|
Quote:
Originally Posted by JPV
Cool, thanks for considering that. I'm very big on using tempo synced modulation and this plug looks to be a godsend in that regard.
|
Quote:
Originally Posted by IXix
You're welcome. Tempo sync version will be available soon. The different LFO shapes are frying my brain though, so that may take a little longer.
|
Another request, I frequently like using LFOs for very long filter sweeps. Would it be possible to add longer sync times?
Last edited by JPV; 04-03-2007 at 06:46 PM.
|
|
|
04-03-2007, 07:02 PM
|
#29
|
Human being with feelings
Join Date: Nov 2006
Posts: 150
|
Ok, I did my own mod to CCMIDI_CCRider in order to get longer LFO times.
Can someone tell me if I did right?
I changed...
slider7:1<0,32,0.1>LFO Frequency
to...
slider7:1<0,128,0.1>LFO Frequency
and...
slider7 < 0 ? slider7 = 0; slider7 > 50 ? slider7 = 256;
to...
slider7 < 0 ? slider7 = 0; slider7 > 128 ? slider7 = 256;
It seems to work ok.
Last edited by JPV; 04-03-2007 at 07:04 PM.
|
|
|
04-04-2007, 04:31 AM
|
#30
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
|
Quote:
Originally Posted by JPV
slider7 < 0 ? slider7 = 0; slider7 > 50 ? slider7 = 256;
to...
slider7 < 0 ? slider7 = 0; slider7 > 128 ? slider7 = 256;
|
That's the important bit. The slider statements just control the range of the slider itself, you can type larger/smaller values into the boxes. Is tempo sync working okay for you?
|
|
|
04-04-2007, 04:37 AM
|
#31
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
|
Quote:
Originally Posted by gregh
i made a version of cc rider with a square wave that you can modulate. can't find it but will make another in the next few days if i get time. it works by thresholding the sine wave - if above half way output 1 else output 0. you modulate the duty cycle by changing the threshold value
|
Nice one gregh. Send it to me and I'll incorporate it into the new version. Or you could do it yourself, there's now a selector for LFO shape that corresponds to an 'if' statement (a pair of 'if's actually) in the main body of the code, so adding new LFO code is just a matter of adding another 'if' block. So far there's only boring old sine
|
|
|
04-04-2007, 12:16 PM
|
#32
|
Human being with feelings
Join Date: Nov 2006
Posts: 150
|
Quote:
Originally Posted by IXix
Is tempo sync working okay for you?
|
Thanks for adding that in! The Tempo sync is great. It seems to be working just fine.
BTW, is there a way to modify it so that the LFO stops when the sequencer stops? It resets just fine when started again so it's really not much of an issue actually, but I was just curious about it.
Quote:
Originally Posted by IXix
Quote:
Originally Posted by JPV
slider7 < 0 ? slider7 = 0; slider7 > 50 ? slider7 = 256;
to...
slider7 < 0 ? slider7 = 0; slider7 > 128 ? slider7 = 256;
|
That's the important bit. The slider statements just control the range of the slider itself, you can type larger/smaller values into the boxes.
|
So this is OK then?
BTW, what does the number 256 represent in this statement?
|
|
|
04-05-2007, 04:18 AM
|
#33
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
|
Quote:
Originally Posted by JPV
is there a way to modify it so that the LFO stops when the sequencer stops?
|
As far as I know there's no way for JS to know anything about the sequencer's state other than the current tempo so no, not yet. I'm hoping that JS integration into Reaper will be stepped up when version 2 gets here.
Oops, not quite! Didn't read it properly. My original is wrong! [shame, guilt]
This:
slider7 < 0 ? slider7 = 0; slider7 > 50 ? slider7 = 256;
should be:
slider7 < 0 ? slider7 = 0; slider7 > 256 ? slider7 = 256;
That's what late night coding gets you! I'll have to fix that and check the others too
The 256 is just a clamp on the upper limit. If you type anything more than 256 into the box it gets clamped to 256, or it would if I'd done it right.
[sigh]
|
|
|
04-05-2007, 04:49 AM
|
#34
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
|
Fixed that mistake. Found a few others in the MIDI utils too but nothing drastic. Haven't checked the audio stuff yet.
|
|
|
04-05-2007, 05:17 AM
|
#35
|
Human being with feelings
Join Date: Feb 2007
Posts: 632
|
Quote:
Originally Posted by IXix
As far as I know there's no way for JS to know anything about the sequencer's state other than the current tempo so no, not yet. I'm hoping that JS integration into Reaper will be stepped up when version 2 gets here.
|
Tighter integration - ooooooerrrrr - that would be awesome!
Regards
Caleb
__________________
Happiness is the hidden behind the obvious.
|
|
|
05-02-2007, 03:13 PM
|
#36
|
Human being with feelings
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
|
Update: Added a couple of features to MIDI_Tool. I've given it a new name to avoid breaking projects using the existing version so now you've got MIDI_Tool II.
New features are velocity scaling in percent and velocity range which is like note range (notes outside the range are unaffected.) Opens up some very interesting possibilities.
|
|
|
05-02-2007, 05:42 PM
|
#37
|
Human being with feelings
Join Date: May 2006
Posts: 1,605
|
Just to say thanks IX for the very useful plugins collection plus the fine updates. Highly appreciated!
|
|
|
05-02-2007, 06:14 PM
|
#38
|
Human being with feelings
Join Date: Jan 2007
Posts: 78
|
+1
These plugs are getting some use here to.
Thanks IX,
Gary
|
|
|
05-14-2007, 11:18 AM
|
#39
|
Human being with feelings
Join Date: May 2007
Location: New York
Posts: 30
|
thank you!
man that was very cool of you.
cheers!
-James-
__________________
"Relive the Universe of Reaper"
Long live Reaper!
|
|
|
05-14-2007, 12:18 PM
|
#40
|
Human being with feelings
Join Date: Jan 2007
Location: in the middle of the icecube.
Posts: 7,403
|
these put a smile on a midi jock's face.
cheers.
|
|
|
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 05:08 PM.
|