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
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
|