Tuesday, July 11, 2017

ex1C02. RMS Feedback System

This uses many different kinds of opcodes best understood in isolation without dealing with interactions. I will do that over the next three Examples. However, this example is important to understand what csound could do with only a few lines of code.


# ex1C02.py
# RMS Feedback System

from moduleCsound import *

tags(1)

header(ksmps=32)

# global sine table with 1024 points
add("giSine    ftgen     0, 0, 2^10, 10, 1 ;table with a sine wave")

# delayr is used to create a delay line of 1 second
# We may use any number of taps, <=1, such as 0.5.
# delayw will write to delay line some sound
# Here that sound is initial input (asnd) and a feedback
# We only use taps at ade1+0.1 (audio a1) and ade2+0.1 (audio a2)
# We do not use a0, in the example.
# Only a1 is used to create signal for the outs opcode.

add("""
instr 1
a3        init      0
kamp      linseg    0, 1.5, 0.2, 1.5, 0        ;envelope for initial input
asnd      poscil    kamp, 440, giSine          ;initial input
if p4 == 1 then                                ;choose between two sines ...
 adel1     poscil    0.0523, 0.023, giSine
 adel2     poscil    0.073, 0.023, giSine,.5
else                                           ;or a random movement for the delay lines
 adel1     randi     0.05, 0.1, 2
 adel2     randi     0.08, 0.2, 2
endif
a0        delayr    1                          ;delay line of 1 second
a1        deltapi   adel1 + 0.1                ;first reading
a2        deltapi   adel2 + 0.1                ;second reading
krms      rms       a3                         ;rms measurement
          delayw    asnd + exp(-krms) * a3     ;feedback depending on rms
a3        reson     -(a1+a2), 3000, 7000, 2    ;calculate a3
aout      linen     a1/3, 1, p3, 1             ;apply fade in and fade out
          outs      aout, aout
endin
""")

tags(2)

add("""
i 1 0 60 1          ;two sine movements of delay with feedback
i 1 61 . 2          ;two random movements of delay with feedback
""")

tags(3)

writeRun(__file__)

No comments:

Post a Comment

ex3A05. Audio Vector