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!!!!
You might check out the translate object. It'll do a lot of what your javascript is doing.
Nice!
Can you add the repeat button and the mod capability too??

See an example here:
https://www.youtube.com/watch?v=-DdFq5RdK7w

Cheers!
cool!
instantly creates a huge undo history!

Login to comment on this device.

Browse the full library