Skip to content

Instantly share code, notes, and snippets.

@jacobjoaquin
Created March 29, 2012 22:55
Show Gist options
  • Save jacobjoaquin/2244631 to your computer and use it in GitHub Desktop.
Save jacobjoaquin/2244631 to your computer and use it in GitHub Desktop.
Swing transfer function
<CsoundSynthesizer>
<CsInstruments>
sr = 44100
kr = 44100
ksmps = 1
nchnls = 2
0dbfs = 1.0
instr 1
p3 = 0.35
idur = p3
iamp = p4 * 0.478
kenv1 expseg 900, 0.01, 50, idur - 0.01, 44
asig1 oscil3 1, kenv1, 1
kenv2 line 1, idur, 0
asig1 = asig1 * kenv2
asig2 gauss 1
kenv5 expseg 800, 0.1, 50, idur - 0.1, 44
asig2 tone asig2, kenv5
amix = asig1 + asig2
kenv5 expseg 500, 0.05, 60, idur - 0.05, 44
amix rezzy amix, kenv5, 10
kenv6 linseg 55, idur, 44
aosc oscil3 1, kenv6, 1
kenv4 expon 2, idur, 1
kenv4 = kenv4 - 1
amix = (amix * 0.8 + aosc * 1.2) * kenv4 * iamp
outs amix, amix
endin
instr 2
p3 = 0.15
idur = p3
iamp = p4 * 0.358
ivalue = p4 * 0.308
atri oscil3 1, 111 + ivalue * 5, 2
areal, aimag hilbert atri
ifshift = 175
asin oscil3 1, ifshift, 1
acos oscil3 1, ifshift, 1, .25
amod1 = areal * acos
amod2 = aimag * asin
ashift1 = (amod1 + amod2) * 0.7
ifshift2 = 224
asin oscil3 1, ifshift2, 1
acos oscil3 1, ifshift2, 1, .25
amod1 = areal * acos
amod2 = aimag * asin
ashift2 = (amod1 + amod2) * 0.7
kenv1 line 1, 0.15, 0
ashiftmix = (ashift1 + ashift2) * kenv1
aosc1 oscil3 1, 180, 1
aosc2 oscil3 1, 330, 1
kenv2 linseg 1, 0.08, 0, idur - 0.08, 0
aoscmix = (aosc1 + aosc2) * kenv2
anoise gauss 1
anoise butterhp anoise, 2000
anoise butterlp anoise, 3000 + ivalue * 3000
anoise butterbr anoise, 4000, 200
kenv3 expon 2, 0.15, 1
anoise = anoise * (kenv3 - 1)
amix = aoscmix + ashiftmix + anoise * 4
amix = amix * iamp
out amix, amix
endin
instr 3
p3 = 0.07
idur = p3
iamp = p4
ivalue = p4
ifreq = 125 + ( 2 * ivalue )
a1 oscil 1, ifreq * 1, 5
a2 oscil 1, ifreq * 2.333, 5
a3 oscil 1, ifreq * 3.578, 5
a4 oscil 1, ifreq * 5.123, 5
a5 oscil 1, ifreq * 7.632, 5
a6 oscil 1, ifreq * 9.843, 5
amix1 = a1 + a2 + a5
amix2 = a3 + a4 + a6
idecay1 = 0.08 + (0.03 * (1 - ivalue))
kenv1 expseg 2, 0.01, 2, 0, 1.6, idecay1, 1, idur - idecay1 - 0.01, 1
kenv1 = kenv1 - 1
amix1 = amix1 * kenv1
amix2 = amix2 * kenv1
idecay2 = 0.11 + 0.05 * ivalue
kenv2 linseg 1, idecay2, 0, idur - idecay2, 0
anoise gauss 1
amix1 = (anoise * kenv2) + amix1 * 0.5
amix1 butterhp amix1, 7000
amix1 butterlp amix1, 9000 + ivalue * 3000
amix2 = (anoise * kenv2) + amix2 * 0.5
amix2 butterhp amix2, 7000
amix2 butterlp amix2, 9000 + ivalue * 3000
amix1 = amix1 * iamp
amix2 = amix2 * iamp
out amix1, amix2
endin
</CsInstruments>
<CsScore bin="./pysco.py">
# Import choice from python library
from random import choice
from math import sin
from math import pi
# Create wrapper functions for instruments.
def kick(amp=0.25): score('i 1 0 1 %f' % amp)
def snare(amp=0.25): score('i 2 0 1 %f' % amp)
def hat(amp=0.15): score('i 3 0 1 %f' % amp)
def pattern_1():
'''Simple drum pattern'''
with t(0): kick()
with t(1): snare()
with t(2.5): kick()
with t(3): snare()
for i in range(8):
amp = i % 2 * 0.1 + 0.05
with t(i * 0.5): hat(amp)
def pattern_2(r=0.5):
'''pattern_ plus extra random notes'''
times = [0.5, 0.75, 1.5, 2, 3.5, 3.75]
instrs = [kick, snare]
# Play pattern_1
pattern_1()
for time in times:
if random() < r:
with t(time):
instr = choice(instrs)
instr(random() * 0.25)
def section_1():
'''A 4-bar section'''
with t(0): pattern_1()
with t(4): pattern_2(0.25)
with t(8): pattern_1()
with t(12): pattern_2(0.9)
def swing_test(x):
int, frac = divmod(x, 1)
return int + sin(frac * (pi / 2.0))
# f-tables and tempo
score('''
f 1 0 [2^16+1] 10 1
f 2 0 8192 -7 -1 4096 1 4096 -1
f 5 0 8192 -7 1 200 1 0 -1 7912 -1
t 0 120
''')
# Same, except using the section
for i in range(0, 64, 16):
with t(i): section_1()
# "Turn it up!" - Abe Simpson
# Process amplitudes for instruments 1, 2, and 3.
pmap('i', [1], 4, lambda x: x * 2.5)
pmap('i', [2], 4, lambda x: x * 2.0)
pmap('i', [3], 4, lambda x: x * 1.5)
# Swing it!
pmap('i', [1, 2, 3], 2, swing_test)
</CsScore>
</CsoundSynthesizer>
<CsoundSynthesizer>
<CsInstruments>
sr = 44100
kr = 44100
ksmps = 1
nchnls = 2
0dbfs = 1.0
instr 1
p3 = 0.35
idur = p3
iamp = p4 * 0.478
kenv1 expseg 900, 0.01, 50, idur - 0.01, 44
asig1 oscil3 1, kenv1, 1
kenv2 line 1, idur, 0
asig1 = asig1 * kenv2
asig2 gauss 1
kenv5 expseg 800, 0.1, 50, idur - 0.1, 44
asig2 tone asig2, kenv5
amix = asig1 + asig2
kenv5 expseg 500, 0.05, 60, idur - 0.05, 44
amix rezzy amix, kenv5, 10
kenv6 linseg 55, idur, 44
aosc oscil3 1, kenv6, 1
kenv4 expon 2, idur, 1
kenv4 = kenv4 - 1
amix = (amix * 0.8 + aosc * 1.2) * kenv4 * iamp
outs amix, amix
endin
instr 2
p3 = 0.15
idur = p3
iamp = p4 * 0.358
ivalue = p4 * 0.308
atri oscil3 1, 111 + ivalue * 5, 2
areal, aimag hilbert atri
ifshift = 175
asin oscil3 1, ifshift, 1
acos oscil3 1, ifshift, 1, .25
amod1 = areal * acos
amod2 = aimag * asin
ashift1 = (amod1 + amod2) * 0.7
ifshift2 = 224
asin oscil3 1, ifshift2, 1
acos oscil3 1, ifshift2, 1, .25
amod1 = areal * acos
amod2 = aimag * asin
ashift2 = (amod1 + amod2) * 0.7
kenv1 line 1, 0.15, 0
ashiftmix = (ashift1 + ashift2) * kenv1
aosc1 oscil3 1, 180, 1
aosc2 oscil3 1, 330, 1
kenv2 linseg 1, 0.08, 0, idur - 0.08, 0
aoscmix = (aosc1 + aosc2) * kenv2
anoise gauss 1
anoise butterhp anoise, 2000
anoise butterlp anoise, 3000 + ivalue * 3000
anoise butterbr anoise, 4000, 200
kenv3 expon 2, 0.15, 1
anoise = anoise * (kenv3 - 1)
amix = aoscmix + ashiftmix + anoise * 4
amix = amix * iamp
out amix, amix
endin
instr 3
p3 = 0.07
idur = p3
iamp = p4
ivalue = p4
ifreq = 125 + ( 2 * ivalue )
a1 oscil 1, ifreq * 1, 5
a2 oscil 1, ifreq * 2.333, 5
a3 oscil 1, ifreq * 3.578, 5
a4 oscil 1, ifreq * 5.123, 5
a5 oscil 1, ifreq * 7.632, 5
a6 oscil 1, ifreq * 9.843, 5
amix1 = a1 + a2 + a5
amix2 = a3 + a4 + a6
idecay1 = 0.08 + (0.03 * (1 - ivalue))
kenv1 expseg 2, 0.01, 2, 0, 1.6, idecay1, 1, idur - idecay1 - 0.01, 1
kenv1 = kenv1 - 1
amix1 = amix1 * kenv1
amix2 = amix2 * kenv1
idecay2 = 0.11 + 0.05 * ivalue
kenv2 linseg 1, idecay2, 0, idur - idecay2, 0
anoise gauss 1
amix1 = (anoise * kenv2) + amix1 * 0.5
amix1 butterhp amix1, 7000
amix1 butterlp amix1, 9000 + ivalue * 3000
amix2 = (anoise * kenv2) + amix2 * 0.5
amix2 butterhp amix2, 7000
amix2 butterlp amix2, 9000 + ivalue * 3000
amix1 = amix1 * iamp
amix2 = amix2 * iamp
out amix1, amix2
endin
</CsInstruments>
<CsScore>
f 1 0 [2^16+1] 10 1
f 2 0 8192 -7 -1 4096 1 4096 -1
f 5 0 8192 -7 1 200 1 0 -1 7912 -1
t 0 120
i 1 0.0 1 0.625
i 2 1.0 1 0.5
i 1 2.70710678119 1 0.625
i 2 3.0 1 0.5
i 3 0.0 1 0.075
i 3 0.707106781187 1 0.225
i 3 1.0 1 0.075
i 3 1.70710678119 1 0.225
i 3 2.0 1 0.075
i 3 2.70710678119 1 0.225
i 3 3.0 1 0.075
i 3 3.70710678119 1 0.225
i 1 4.0 1 0.625
i 2 5.0 1 0.5
i 1 6.70710678119 1 0.625
i 2 7.0 1 0.5
i 3 4.0 1 0.075
i 3 4.70710678119 1 0.225
i 3 5.0 1 0.075
i 3 5.70710678119 1 0.225
i 3 6.0 1 0.075
i 3 6.70710678119 1 0.225
i 3 7.0 1 0.075
i 3 7.70710678119 1 0.225
i 2 7.92387953251 1 0.27617
i 1 8.0 1 0.625
i 2 9.0 1 0.5
i 1 10.7071067812 1 0.625
i 2 11.0 1 0.5
i 3 8.0 1 0.075
i 3 8.70710678119 1 0.225
i 3 9.0 1 0.075
i 3 9.70710678119 1 0.225
i 3 10.0 1 0.075
i 3 10.7071067812 1 0.225
i 3 11.0 1 0.075
i 3 11.7071067812 1 0.225
i 1 12.0 1 0.625
i 2 13.0 1 0.5
i 1 14.7071067812 1 0.625
i 2 15.0 1 0.5
i 3 12.0 1 0.075
i 3 12.7071067812 1 0.225
i 3 13.0 1 0.075
i 3 13.7071067812 1 0.225
i 3 14.0 1 0.075
i 3 14.7071067812 1 0.225
i 3 15.0 1 0.075
i 3 15.7071067812 1 0.225
i 2 12.7071067812 1 0.306666
i 1 12.9238795325 1 0.4580325
i 1 13.7071067812 1 0.57898
i 2 14.0 1 0.045504
i 1 15.7071067812 1 0.2135725
i 2 15.9238795325 1 0.458144
i 1 16.0 1 0.625
i 2 17.0 1 0.5
i 1 18.7071067812 1 0.625
i 2 19.0 1 0.5
i 3 16.0 1 0.075
i 3 16.7071067812 1 0.225
i 3 17.0 1 0.075
i 3 17.7071067812 1 0.225
i 3 18.0 1 0.075
i 3 18.7071067812 1 0.225
i 3 19.0 1 0.075
i 3 19.7071067812 1 0.225
i 1 20.0 1 0.625
i 2 21.0 1 0.5
i 1 22.7071067812 1 0.625
i 2 23.0 1 0.5
i 3 20.0 1 0.075
i 3 20.7071067812 1 0.225
i 3 21.0 1 0.075
i 3 21.7071067812 1 0.225
i 3 22.0 1 0.075
i 3 22.7071067812 1 0.225
i 3 23.0 1 0.075
i 3 23.7071067812 1 0.225
i 2 20.9238795325 1 0.170106
i 1 24.0 1 0.625
i 2 25.0 1 0.5
i 1 26.7071067812 1 0.625
i 2 27.0 1 0.5
i 3 24.0 1 0.075
i 3 24.7071067812 1 0.225
i 3 25.0 1 0.075
i 3 25.7071067812 1 0.225
i 3 26.0 1 0.075
i 3 26.7071067812 1 0.225
i 3 27.0 1 0.075
i 3 27.7071067812 1 0.225
i 1 28.0 1 0.625
i 2 29.0 1 0.5
i 1 30.7071067812 1 0.625
i 2 31.0 1 0.5
i 3 28.0 1 0.075
i 3 28.7071067812 1 0.225
i 3 29.0 1 0.075
i 3 29.7071067812 1 0.225
i 3 30.0 1 0.075
i 3 30.7071067812 1 0.225
i 3 31.0 1 0.075
i 3 31.7071067812 1 0.225
i 2 28.7071067812 1 0.233624
i 1 28.9238795325 1 0.0371225
i 1 29.7071067812 1 0.05734
i 2 30.0 1 0.473622
i 1 31.7071067812 1 0.1254675
i 1 32.0 1 0.625
i 2 33.0 1 0.5
i 1 34.7071067812 1 0.625
i 2 35.0 1 0.5
i 3 32.0 1 0.075
i 3 32.7071067812 1 0.225
i 3 33.0 1 0.075
i 3 33.7071067812 1 0.225
i 3 34.0 1 0.075
i 3 34.7071067812 1 0.225
i 3 35.0 1 0.075
i 3 35.7071067812 1 0.225
i 1 36.0 1 0.625
i 2 37.0 1 0.5
i 1 38.7071067812 1 0.625
i 2 39.0 1 0.5
i 3 36.0 1 0.075
i 3 36.7071067812 1 0.225
i 3 37.0 1 0.075
i 3 37.7071067812 1 0.225
i 3 38.0 1 0.075
i 3 38.7071067812 1 0.225
i 3 39.0 1 0.075
i 3 39.7071067812 1 0.225
i 2 36.9238795325 1 0.378592
i 2 38.0 1 0.314172
i 2 39.9238795325 1 0.130474
i 1 40.0 1 0.625
i 2 41.0 1 0.5
i 1 42.7071067812 1 0.625
i 2 43.0 1 0.5
i 3 40.0 1 0.075
i 3 40.7071067812 1 0.225
i 3 41.0 1 0.075
i 3 41.7071067812 1 0.225
i 3 42.0 1 0.075
i 3 42.7071067812 1 0.225
i 3 43.0 1 0.075
i 3 43.7071067812 1 0.225
i 1 44.0 1 0.625
i 2 45.0 1 0.5
i 1 46.7071067812 1 0.625
i 2 47.0 1 0.5
i 3 44.0 1 0.075
i 3 44.7071067812 1 0.225
i 3 45.0 1 0.075
i 3 45.7071067812 1 0.225
i 3 46.0 1 0.075
i 3 46.7071067812 1 0.225
i 3 47.0 1 0.075
i 3 47.7071067812 1 0.225
i 2 44.7071067812 1 0.067014
i 2 44.9238795325 1 0.01481
i 2 45.7071067812 1 0.38608
i 1 46.0 1 0.2299675
i 2 47.7071067812 1 0.445666
i 1 47.9238795325 1 0.542735
i 1 48.0 1 0.625
i 2 49.0 1 0.5
i 1 50.7071067812 1 0.625
i 2 51.0 1 0.5
i 3 48.0 1 0.075
i 3 48.7071067812 1 0.225
i 3 49.0 1 0.075
i 3 49.7071067812 1 0.225
i 3 50.0 1 0.075
i 3 50.7071067812 1 0.225
i 3 51.0 1 0.075
i 3 51.7071067812 1 0.225
i 1 52.0 1 0.625
i 2 53.0 1 0.5
i 1 54.7071067812 1 0.625
i 2 55.0 1 0.5
i 3 52.0 1 0.075
i 3 52.7071067812 1 0.225
i 3 53.0 1 0.075
i 3 53.7071067812 1 0.225
i 3 54.0 1 0.075
i 3 54.7071067812 1 0.225
i 3 55.0 1 0.075
i 3 55.7071067812 1 0.225
i 2 52.7071067812 1 0.353484
i 2 52.9238795325 1 0.197384
i 1 56.0 1 0.625
i 2 57.0 1 0.5
i 1 58.7071067812 1 0.625
i 2 59.0 1 0.5
i 3 56.0 1 0.075
i 3 56.7071067812 1 0.225
i 3 57.0 1 0.075
i 3 57.7071067812 1 0.225
i 3 58.0 1 0.075
i 3 58.7071067812 1 0.225
i 3 59.0 1 0.075
i 3 59.7071067812 1 0.225
i 1 60.0 1 0.625
i 2 61.0 1 0.5
i 1 62.7071067812 1 0.625
i 2 63.0 1 0.5
i 3 60.0 1 0.075
i 3 60.7071067812 1 0.225
i 3 61.0 1 0.075
i 3 61.7071067812 1 0.225
i 3 62.0 1 0.075
i 3 62.7071067812 1 0.225
i 3 63.0 1 0.075
i 3 63.7071067812 1 0.225
i 2 60.7071067812 1 0.229802
i 2 60.9238795325 1 0.033852
i 1 61.7071067812 1 0.1626825
i 1 62.0 1 0.327645
i 1 63.7071067812 1 0.516445
i 2 63.9238795325 1 0.157812
</CsScore>
</CsoundSynthesizer>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment