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))