Sound and Music Computing Conference
Sound and Music Computing Conference
Sound and Music Computing Conference
SMC2017-415
Proceedings of the 14th Sound and Music Computing Conference, June 5-8, Espoo, Finland
SMC2017-416
Proceedings of the 14th Sound and Music Computing Conference, June 5-8, Espoo, Finland
SMC2017-417
Proceedings of the 14th Sound and Music Computing Conference, June 5-8, Espoo, Finland
typically accepts an input data as some parameters and out- 1-pole LP filter and an Output module. We give this ex-
puts the result, our zak-based UDOs do not have any out- tremely primitive patch not for the purposes of timbre dis-
puts. cussion but rather to present a clear example of how our
In more practical view, the typical Csound opcode/UDO converter works.
is applied like this: The converter default output file is test.csd in the program
directory. Comments are given after semicolons.
aOut1 SomeOpcode aIn1, aP1, kP2 [, ...] The algorithm detects three different types of modules
and take their UDO definitions from the library.
where aIn1 is an input of audio type, aP1 is an a-rate
parameter, kP2 is a k-rate parameter, and aOut1 is an a- sr = 96000 ; audio sampling rate
rate output. ksmps = 16 ; times k-rate lower than a-rate
In our system we have nchnls = 2 ; number of output channels
0dbfs = 1.0 ; relative amplitude level
SomeOpcode aP1, kP2 [, ...], kIn1, kOut1
zakinit 4, 3 ; Init zak-space
where aP1 is an a-rate parameter, kP2 is a k-rate parame- opcode Noise, 0, kkk ;White Noise generator
ter, kIn1 is a number of some k- or a-rate bus to read input kColor, kMute, kOut xin
data from, and kOut1 is a number of some k- or a-rate bus if kMute!=0 goto Mute ;mutes sound if Mute is On
to send data to. aout rand 0.5, 0.1 ; seed value 0.1
After parameter field our UDOs have IO field, in which aout tone aout, kColor ; Csound simple LP filter
zaw aout, kOut
the numbers of buses in zak space are listed. Using de- Mute:
scribed approach we are free to list the opcodes in any or- endop
der, just like Nord Modular user can add the modules in
arbitrary order. So the first indexed module can be easily opcode FltLP, 0, kikkkkk ;One-pole LP filter
the last one in the audio chain. ; Keyboard Tracking has not been implemented yet
kKBT, iOrder, kMod, kCF, kIn, kModIn, kOut xin
Another important aspect to be described here is map- ain zar kIn
ping. Nord modules have several different controllers of a kmod zkr kModIn
lot of ranges, i.e. audio frequency range, amplitude range, aout tonex ain, kCF+kmod*kMod, iOrder
normalized values in the range from 0 to 1, delay time zaw aout, kOut
ranges, envelope stage durations, etc. The real values of endop
the controllers can be seen only when using editor. The opcode Out2, 0, kkkkk; Output module
patch file stores 7 bit MIDI values without any reference ; Only stereo output has been implemented
to appropriate range. It made us to manually fill the table kTarget, kMute, kPad, kL, kR xin
with data types, ranges and values. Special mapping files if kMute!=0 goto Mute:
of pch2csd project contain numbers of tables to be used for aL zar kL
aR zar kR
each parameter of each module. outs aL*kPad, aR*kPad
I.e Module #112 (LevAdd module) table contains follow- Mute:
ing lines: endop
SMC2017-418
Proceedings of the 14th Sound and Music Computing Conference, June 5-8, Espoo, Finland
SMC2017-419
Proceedings of the 14th Sound and Music Computing Conference, June 5-8, Espoo, Finland
SMC2017-420
Proceedings of the 14th Sound and Music Computing Conference, June 5-8, Espoo, Finland
SMC2017-421