aboutsummaryrefslogtreecommitdiff
path: root/site/udo/bussing.udo
diff options
context:
space:
mode:
authorRichard <q@1bpm.net>2025-04-13 18:48:02 +0100
committerRichard <q@1bpm.net>2025-04-13 18:48:02 +0100
commit9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22 (patch)
tree291bd79ce340e67affa755a8a6b4f6a83cce93ea /site/udo/bussing.udo
downloadapps.csound.1bpm.net-9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22.tar.gz
apps.csound.1bpm.net-9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22.tar.bz2
apps.csound.1bpm.net-9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22.zip
initial
Diffstat (limited to 'site/udo/bussing.udo')
-rwxr-xr-xsite/udo/bussing.udo268
1 files changed, 268 insertions, 0 deletions
diff --git a/site/udo/bussing.udo b/site/udo/bussing.udo
new file mode 100755
index 0000000..7ac40b8
--- /dev/null
+++ b/site/udo/bussing.udo
@@ -0,0 +1,268 @@
+#ifndef UDO_BUSSING
+#define UDO_BUSSING ##
+/*
+ Bus handling
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021, 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#ifdef BUS_MAINMIXER
+gkmastervolume init 1
+#end
+
+/*
+ Get the stereo L and R names for a singular bus name
+
+ SnameL, SnameR bus_name Sbus
+
+ SnameL left bus identifier
+ SnameR right bus identifier
+
+ Sbus bus name
+*/
+opcode bus_name, SS, S
+ Sbus xin
+ xout sprintf("%sL", Sbus), sprintf("%sR", Sbus)
+endop
+
+
+/*
+ Read from a stereo bus, but do not clear it
+
+ aL, aR bus_tap Sbus
+
+ aL left channel
+ aR right channel
+ Sbus bus name
+*/
+opcode bus_tap, aa, S
+ Sbus xin
+ SbusL, SbusR bus_name Sbus
+ aL chnget SbusL
+ aR chnget SbusR
+ xout aL, aR
+endop
+
+
+/*
+ Read from a mono bus (or left channel of a stereo bus), but do not clear it
+
+ aout bus_tap Sbus
+
+ aout output audio
+ Sbus bus name
+*/
+opcode bus_tap, a, S
+ Sbus xin
+ SbusL, S_ bus_name Sbus
+ aout chnget SbusL
+ xout aout
+endop
+
+
+/*
+ Read from a stereo bus, and then clear the bus
+
+ aL, aR bus_read Sbus
+
+ aL left channel
+ aR right channel
+ Sbus bus name
+*/
+opcode bus_read, aa, S
+ Sbus xin
+ SbusL, SbusR bus_name Sbus
+ aL chnget SbusL
+ aR chnget SbusR
+ chnclear SbusL
+ chnclear SbusR
+ xout aL, aR
+endop
+
+/*
+ Read from a mono bus (or left channel of a stereo bus), and then clear the bus
+
+ aout bus_read Sbus
+
+ aout output audio
+ Sbus bus name
+*/
+opcode bus_read, a, S
+ Sbus xin
+ SbusL, S_ bus_name Sbus
+ aout chnget SbusL
+ chnclear SbusL
+ xout aout
+endop
+
+
+/*
+ Clear a stereo bus
+
+ bus_clear Sbus
+
+ Sbus bus name
+*/
+opcode bus_clear, 0, S
+ Sbus xin
+ SbusL, SbusR bus_name Sbus
+ chnclear SbusL
+ chnclear SbusR
+endop
+
+
+/*
+ Clear a mono bus (or left channel of a stereo bus)
+
+ bus_clear_mono Sbus
+
+ Sbus bus name
+*/
+opcode bus_clear_mono, 0, S
+ Sbus xin
+ SbusL, S_ bus_name Sbus
+ chnclear SbusL
+endop
+
+
+/*
+ Set to a stereo bus
+
+ bus_set Sbus, aL, aR
+
+ Sbus bus name
+ aL left channel
+ aR right channel
+*/
+opcode bus_set, 0, Saa
+ Sbus, aL, aR xin
+ SbusL, SbusR bus_name Sbus
+ chnset aL, SbusL
+ chnset aR, SbusR
+endop
+
+
+/*
+ Set to a mono bus (or left channel of a stereo bus)
+
+ bus_set Sbus, ain
+
+ Sbus bus name
+ ain input audio
+*/
+opcode bus_set, 0, Sa
+ Sbus, ain xin
+ SbusL, S_ bus_name Sbus
+ chnset ain, SbusL
+endop
+
+
+/*
+ Mix to a stereo bus
+
+ bus_mix Sbus, aL, aR
+
+ Sbus bus name
+ aL left channel
+ aR right channel
+*/
+opcode bus_mix, 0, Saa
+ Sbus, aL, aR xin
+ SbusL, SbusR bus_name Sbus
+ chnmix aL, SbusL
+ chnmix aR, SbusR
+endop
+
+
+/*
+ Mix to a mono bus (or left channel of a stereo bus)
+
+ bus_mix Sbus, ain
+
+ Sbus bus name
+ aL left channel
+ aR right channel
+*/
+opcode bus_mix, 0, Sa
+ Sbus, ain xin
+ SbusL, S_ bus_name Sbus
+ chnmix ain, SbusL
+endop
+
+
+/*
+ Mix to master bus
+
+ bus_masterout aL, aR
+
+ aL left channel
+ aR right channel
+*/
+opcode bus_masterout, 0, aa
+ aL, aR xin
+ chnmix aL, "mainL"
+ chnmix aR, "mainR"
+endop
+
+
+/*
+ Mix mono signal to master bus, equally across left and right
+
+ bus_masterout ain
+
+ ain input audio
+*/
+opcode bus_masterout, 0, a
+ ain xin
+ chnmix ain, "mainL"
+ chnmix ain, "mainR"
+endop
+
+
+/*
+ Record a bus to a wave file
+
+ bus_record Sbus, Spath
+
+ Sbus bus name
+ Spath path to file to record to
+*/
+opcode bus_record, 0, SS
+ Sbus, Spath xin
+ aL, aR bus_tap Sbus
+ fout Spath, 14, aL, aR
+endop
+
+
+/*
+ Record a mono bus (or left channel of a stereo bus) to a wave file
+
+ bus_record_mono Sbus, Spath
+
+ Sbus bus name
+ Spath path to file to record to
+*/
+opcode bus_record_mono, 0, SS
+ Sbus, Spath xin
+ asig bus_tap Sbus
+ fout Spath, 14, asig
+endop
+
+
+
+/*
+ Main output: anything mixed to the "main" bus goes to main outputs
+*/
+#ifdef BUS_MAINMIXER
+instr _mainmixer
+ aL, aR bus_read "main"
+ aL = aL * gkmastervolume
+ aR = aR * gkmastervolume
+ outs aL, aR
+endin
+schedule("_mainmixer", 0, -1)
+#end
+
+#end