You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

247 lines
6.6 KiB

; New microcode
name "VCO2Pole";
copyright "Copyright (c) 2004.";
created "04/14/2009";
engine "kX";
; comment "";
guid "df2be9af-4c1d-4098-88dd-066501f28940";
; -- generated GUID
; itramsize 0
; xtramsize 0
; code
const Zero=0.0
const One=1.0
const Quarter=0.25
control Waveform
control Shape
temp Delta
temp Diff
temp sawshape
temp Pulsewidth
static FilterIn
static FilterOut
static Phase
static filteroutput
static filterinput
static filterintermediate1
static filterintermediate2
static state1
static state2
static Offset
static ShapeNormalize
static Sawtooth
static Square
static Triangle
static lastsync
input CV
input Sync
input PWM
output Out
const FilterB1 = 0.0045144297182559967000
const FilterB2 = 0.0090288594365119934000
const FilterB3 = 0.0045144297182559967000
const FilterA2 = 0.0693267993628978730000
const FilterA3 = -0.0248845182359218600000
const FilterFactor=16
;const cv2deltak1=0.318147143048582
;const cv2deltak2=0.752819169984960
const aquarter=0.25
static omask=0xf0000000
static subomask=0x0fffffff
static four=0x4
static eight=0x8
const half=0.5
const k0=0.293301307822602
const k1=0.408589772592175
const k2=0.263353125733898
const k3=0.185587841332716
temp a
temp b
andxor a,CV,subomask,zero
macints a,zero,a,four ; So sub-octave 0<=a<0.5
macs delta,k0,a,k1 ; Polynomial
macs b,zero,a,a
macs delta,delta,b,k2
macs a,zero,a,b
macs delta,delta,a,k3 ; So 0.293333<=delta<0.586666666
andxor a,CV,omask,zero
macs a,eight,a,eight ; So 0<=a<=15
skip ccr,ccr,0x7fffffff,a
macs delta,zero,delta,half
macs delta,zero,delta,half
macs delta,zero,delta,half
macs delta,zero,delta,half
macs delta,zero,delta,half
macs delta,zero,delta,half
macs delta,zero,delta,half
macs delta,zero,delta,half
macs delta,zero,delta,half
macs delta,zero,delta,half
macs delta,zero,delta,half
macs delta,zero,delta,half
macs delta,zero,delta,half
macs delta,zero,delta,half
acc3 a,zero,zero,zero ; (nop)
acc3 Pulsewidth,Shape,PWM,0.0
;Oscillator
macw Phase,Phase,Delta,One
;Sync
andxor lastsync,lastsync,sync,zero
skip ccr,ccr,0x8,1
acc3 Phase,zero,zero,zero
andxor lastsync,sync,0x80000000,0x80000000
;Wave Shaper
interp sawshape,1.0,Pulsewidth,0.0
macs Sawtooth,zero,phase,one
tstneg Square,Sawtooth,One,Pulsewidth
tstneg Triangle,Sawtooth,Sawtooth,SawShape
macsn Square,Zero,Square,0.25
interp Offset,-0.5,SawShape,0
macs Triangle,Offset,Triangle,One
interp ShapeNormalize,One,SawShape,0.25
macs Triangle,zero,Triangle,ShapeNormalize
;Mixer
interp FilterInput,Square,Waveform,Triangle
;Filter
macs Filteroutput,State1,FilterInput,FilterB1
macints Filteroutput,zero,Filteroutput,FilterFactor
macs FilterIntermediate1,zero,FilterInput,FilterB2
macs FilterIntermediate2,zero,FilterOutput,FilterA2
acc3 State1,State2,FilterIntermediate1,FilterIntermediate2
macs FilterIntermediate1,zero,FilterInput,FilterB3
macs FilterIntermediate2,zero,FilterOutput,FilterA3
acc3 State2,zero,FilterIntermediate1,FilterIntermediate2
;Oscillator
macw Phase,Phase,Delta,One
;Sync
andxor lastsync,lastsync,sync,zero
skip ccr,ccr,0x8,1
acc3 Phase,zero,zero,zero
andxor lastsync,sync,0x80000000,0x80000000
;Wave Shaper
interp sawshape,1.0,Pulsewidth,0.0
macs Sawtooth,zero,phase,one
tstneg Square,Sawtooth,One,Pulsewidth
tstneg Triangle,Sawtooth,Sawtooth,SawShape
macsn Square,Zero,Square,0.25
interp Offset,-0.5,SawShape,0
macs Triangle,Offset,Triangle,One
interp ShapeNormalize,One,SawShape,0.25
macs Triangle,zero,Triangle,ShapeNormalize
;Mixer
interp FilterInput,Square,Waveform,Triangle
;Filter
macs Filteroutput,State1,FilterInput,FilterB1
macints Filteroutput,zero,Filteroutput,FilterFactor
macs FilterIntermediate1,zero,FilterInput,FilterB2
macs FilterIntermediate2,zero,FilterOutput,FilterA2
acc3 State1,State2,FilterIntermediate1,FilterIntermediate2
macs FilterIntermediate1,zero,FilterInput,FilterB3
macs FilterIntermediate2,zero,FilterOutput,FilterA3
acc3 State2,zero,FilterIntermediate1,FilterIntermediate2
;Oscillator
macw Phase,Phase,Delta,One
;Sync
andxor lastsync,lastsync,sync,zero
skip ccr,ccr,0x8,1
acc3 Phase,zero,zero,zero
andxor lastsync,sync,0x80000000,0x80000000
;Wave Shaper
interp sawshape,1.0,Pulsewidth,0.0
macs Sawtooth,zero,phase,one
tstneg Square,Sawtooth,One,Pulsewidth
tstneg Triangle,Sawtooth,Sawtooth,SawShape
macsn Square,Zero,Square,0.25
interp Offset,-0.5,SawShape,0
macs Triangle,Offset,Triangle,One
interp ShapeNormalize,One,SawShape,0.25
macs Triangle,zero,Triangle,ShapeNormalize
;Mixer
interp FilterInput,Square,Waveform,Triangle
;Filter
macs Filteroutput,State1,FilterInput,FilterB1
macints Filteroutput,zero,Filteroutput,FilterFactor
macs FilterIntermediate1,zero,FilterInput,FilterB2
macs FilterIntermediate2,zero,FilterOutput,FilterA2
acc3 State1,State2,FilterIntermediate1,FilterIntermediate2
macs FilterIntermediate1,zero,FilterInput,FilterB3
macs FilterIntermediate2,zero,FilterOutput,FilterA3
acc3 State2,zero,FilterIntermediate1,FilterIntermediate2
;Oscillator
macw Phase,Phase,Delta,One
;Sync
andxor lastsync,lastsync,sync,zero
skip ccr,ccr,0x8,1
acc3 Phase,zero,zero,zero
andxor lastsync,sync,0x80000000,0x80000000
;Wave Shaper
interp sawshape,1.0,Pulsewidth,0.0
macs Sawtooth,zero,phase,one
tstneg Square,Sawtooth,One,Pulsewidth
tstneg Triangle,Sawtooth,Sawtooth,SawShape
macsn Square,Zero,Square,0.25
interp Offset,-0.5,SawShape,0
macs Triangle,Offset,Triangle,One
interp ShapeNormalize,One,SawShape,0.25
macs Triangle,zero,Triangle,ShapeNormalize
;Mixer
interp FilterInput,Square,Waveform,Triangle
;Filter
macs Filteroutput,State1,FilterInput,FilterB1
macints Filteroutput,zero,Filteroutput,FilterFactor
macs FilterIntermediate1,zero,FilterInput,FilterB2
macs FilterIntermediate2,zero,FilterOutput,FilterA2
acc3 State1,State2,FilterIntermediate1,FilterIntermediate2
macs FilterIntermediate1,zero,FilterInput,FilterB3
macs FilterIntermediate2,zero,FilterOutput,FilterA3
acc3 State2,zero,FilterIntermediate1,FilterIntermediate2
macs Out,Zero,FilterOutput,quarter
end