In [ ]:
import os, sys
import numpy as np
import random
from TimeFreqAuditoryScene import *
from Chambers import *
from IPython.display import Audio, display, clear_output
%matplotlib inline
In [ ]:
fs = 44100
# Shepard tones tritone
sp_st = 12*np.random.rand() #int(np.random.randint(12))
fb1 = 2.**(sp_st/12.) # base frequency chosen randomly uniformly on log-octave range
# declare gaussian envelope on log frequency
genv = GaussianSpectralEnvelope(mu=960, sigma_oct=2)
nb_tones_clear = 3
nb_sp_ctx = 3
duration_tone_clr = 0.2
duration_sp_ctx = 0.2
duration_sp_trt = 0.2
delay_inter_sp_ctx = 0.05
delay_inter_sp_trt = 0.05
delay_clear_ctx = 0.2
delay_ctx_tritone = 0.2
condition = random.choice(['up','down'])
scene = Scene()
run_time = 0
clearing = Clearing(n_tones=nb_tones_clear,
tone_duration=duration_tone_clr,
inter_tone_interval=delay_inter_sp_ctx,
env=genv,
delay=run_time)
run_time += clearing.getduration() + delay_clear_ctx
context = Context(n_tones=nb_sp_ctx,
tone_duration=duration_sp_ctx,
inter_tone_interval=delay_inter_sp_ctx,
env=genv,
fb_T1=fb1,
range_st=[2,4],
type="chords", # chords or streams
bias=condition,
delay=run_time)
run_time += context.getduration() + delay_ctx_tritone
tritone = Tritone(fb=fb1,
env=genv,
delay=run_time,
duration_sp=duration_sp_trt,
delay_sp=delay_inter_sp_trt)
clearing.draw_bbox=True
context.draw_bbox=True
tritone.draw_bbox=True
scene.add( [clearing ,context, tritone])
sd = SceneDrawer()
sd.draw(scene)
plt.show()
x = scene.generate(fs)
display(Audio(x, rate=fs, autoplay=True))