Device Details
Overview
Name | Version: | OCD43 Delay 0.4 |
Author: | willum070 |
Device Type: | Audio Effect |
Description: | Updated with some minor tweax, plus see the JavaScript below which is critical for this to work. The OCD43 is my attempt to reverse engineer the wonderful Lexicon PSP42 delay effect. I used the PSP Audio plugin as a guide, as well as the PCM42 hardware unit owner's manual. This was more of a learning experience than an attempt to create a carbon copy of the original. I intentionally left a lot of settings "under the hood", such as the overdrive, much of the LFO subsystem, the filters. Also I didn't implement phase inversion as is present on the PSP42. You can always open it up and change stuff if you don't like it, it IS MaxMSP after all! You can get all kinds of great delay sounds, from saturated dub echoes to flanger-like effects (set up the LFO on sine wave and try shorter delay times). Increasing the overdrive level will also boost the feedback. I constrained the input values to try and keep everything coherent. If you make any changes or have any ideas, please let me know! Some notes: there is a limiter on the output channel. The "wave" knob in the LFO section fades between the two selected waveforms. Some of the UI elements use the Envy Code R font (http://www.fontsquirrel.com/fonts/Envy-Code-R). the .JS file needs to be in your Max path. Copy the following code, save it someplace in your Max path as converter.js: var tempo = 0; var msv = 0; var sDivU = 0; var sDivL = 0; var div = .25; function list() { var a = arrayfromargs(arguments); tempo = a[0]; sDivU = a[1]; sDivL = a[2]; //post(a[0] + ", " + a[1] + ", " + a[2] /n); calculateTime(); } function calculateTime(){ if(!tempo || !div || !sDivU || !sDivL)return; var dTime=(60.0*1000.0*parseFloat(sDivU))/(parseFloat(tempo)*div*parseFloat(sDivL)) dTime=roundOff(dTime,2) msv=dTime bang(); } function roundOff(x,nrDec){ fact=Math.pow(10,nrDec) x=Math.round(x*fact) return(x/fact) } function calcTuplet(myForm){ var tuplet=myForm.selectTuplet[myForm.selectTuplet.selectedIndex].value var nr=myForm.number[myForm.number.selectedIndex].value var noemer=tuplet.substring(tuplet.indexOf("/")+1,tuplet.length) myForm.subdivisionLower.value=noemer myForm.subdivisionUpper.value=nr myForm.division.options[2].selected=true calculateTime(myForm) } function bang() { outlet(0, msv); } This is the Max abstraction that you can use with the script: <pre><code> ----------begin_max5_patcher---------- 1013.3oc6X0rbaCBD9ryL8cfwmc8Hjr9w8Vam9BzqYxjAKgSHQBzHgcSZl9t WXQRFEiRjicRyz1CFD6hWs7se6BnG9vYSltRbGsdJ5SnyQSl7fRxDPlVxjVA SlVPtKMmTCSbJm9CwpalNqQmjdmDjWRRuEgQ9nfNcqEbImTPA8ethQx6TURj oWy3WcYEMUZbfH+34dyP9ltnHXf2bOzE11ql8SvdXek9F47MELdNUBNXfkTw FYqXbqXVF3Np0vGiB67GyLk2WRMNyzonK.U+5Cmo6UcyNZH5lZTpfukVIoUG IHEpW9n3fWHHgO.Px+0AjxYaoyKn7McleKopCH5zdN9B2P023auG8UQFE88Q .X3X.vBLrpE1.VYEslxkDISv6ABkjJ0KSEqtjxIqxo8TtRTkQqRE4hJyKBCu F6l9wj0jTvBdNCTIGVfpijKqXizGHoRElt5Jqo6omztldS2hAf85.3qyk89+ IgII9Kl47odlqjkJ2T0VqYmbctwiW.C3Q1wIq.rO1aWj0U7ceV6Lyu04BhxH cSrlrklcIQpvzUajzcOU2viaIxZpZ9FpXcq7NE1jlZIsr1Nh2SKiukUyZXUN mgh7Wz3wXs6FnaB0Mw5lk6779+s6JEbENArm4NsLgyEM3XW5zTWSbCmIqk22 P8cZqBURsoTS77Al.CRq7bqtMt36FjXRUAQq7Om1n9ZQkb+RGNWREhrmyiyE 7qbTHx+hAM3StByY7a0laXtf1DpBYOAWYs3YBRCqFpSMnoynqeBs0kTZVNqn gK0Lilp86d3Ur7+wU6O16+09OxZ+32009CC92n1ue2F.KzMQ5lDcCFzfAA9f t.PxBPaDHYYzeGaUzrafAWrCyGyFJ3+banD7+MTNgannxn0IMCesJzWD4Yi4 tUwPWnoJTxf2sx6vJa66n5ZxxguakoBkJ8cEge0wbQKUULoZ2sQbGI7h1qS9 3KU9Ru7X7Sb4wiccMzsrU3VFX6imJDuDXBgmVlfSfJ3sGnjUDdcopR2I.ovK fchSdoIM9tgpkt9fDdCCULNjxzz0kBs+Ctl09XrYQnJYy26qjAPgVwiP9Zwl pzV2o8iLgrfiLZsjw6Nw4469JK1y5ZVVFk26LiErrRgxm6NG0vDhQ6b5i2gv OqyoWB9GhyEkj.EQLUThRBlG1L5z31di1swGjauHz1si75FcRbaMyEsXTt8A QEhhhsca0AgOon8i4ltca8dYuaYvwGb5UKC1C5hvA6OB6szBugQmjkT7nvaf L81i25MpddmK1+cryATlCiLXBwKMwa3qp2e.NxPLTGXHrYza4Bx6UaA0vsOY KnwU49EjtZpbiWFYmf1ezHRW0BTc+FrbUzPI -----------end_max5_patcher----------- </code></pre> |
Details
Live Version Used: | 8.2.1 |
Max Version Used: | 5.1.7 |
Date Added: | Dec 30 2010 02:56:59 |
Date Last Updated: | Jan 21 2012 15:29:46 |
Downloads: | 1829 |
ⓘ License: | None |
Average Rating
(1) Log in to rate this device |
4 |
Files
Device File: | OCD43_04.amxd |
Comments
OCD43 in 2011! WOOOOOO!!!!
Posted on January 01 2011 by willum070 |
Report Issue
You might check out the translate object. It'll do a lot of what your javascript is doing.
Posted on April 10 2012 by PeterMcCulloch |
Report Issue
Nice!
Can you add the repeat button and the mod capability too??
See an example here:
https://www.youtube.com/watch?v=-DdFq5RdK7w
Cheers!
Can you add the repeat button and the mod capability too??
See an example here:
https://www.youtube.com/watch?v=-DdFq5RdK7w
Cheers!
Posted on February 17 2013 by zeep |
Report Issue
cool!
Posted on July 20 2013 by Dreadonator |
Report Issue
instantly creates a huge undo history!
Posted on June 18 2015 by redhexagonal |
Report Issue
Login to comment on this device.
Browse the full library