In [ ]:
import os, sys
import numpy as np
import random
from TimeFreqAuditoryScene import *
from Chambers import *
from IPython.display import Audio, display, clear_output
from IPython.html import widgets
from IPython.html.widgets import interactive
%matplotlib inline
In [ ]:
# Generating Sequences of Shepard Tones with missing pure tones
# - random dropout: X per shepard tone
# - structured dropout (every other two)
fs = 44100.
tone_duration = 0.3
n_tones = 10
inter_tone_interval = 0.1
genv = GaussianSpectralEnvelope(mu=960.,sigma_oct=2.)
bias = random.choice(['up','down'])
In [ ]:
# Starting from Complete sequence of tones
ctx1 = Context(n_tones=n_tones,
inter_tone_interval=inter_tone_interval,
env=genv,
bias=bias,
fb_T1=1.,
type="chords")
ctx2 = Context(n_tones=n_tones,
inter_tone_interval=inter_tone_interval,
env=genv,
bias=bias,
fb_T1=1.,
type="streams")
items = [ctx1,ctx2]
scene1 = Scene()
scene1.add(ctx1)
scene2 = Scene()
scene2.add(ctx2)
In [ ]:
# Random dropout: N per shepard tone
# make drop-out probability proportional to amplitude
ctx3 = RandomDropOutContext(n_tones=n_tones,
n_drop=2,
inter_tone_interval=inter_tone_interval,
env=genv,
bias=bias,
fb_T1=1.)
scene3 = Scene()
scene3.add(ctx3)
x = scene3.generate(fs)
display(Audio(x, rate=fs, autoplay=True))
sd = SceneDrawer()
sd.draw(scene3)
plt.show()
print ctx3.drop
In [ ]:
# Structured dropout: N per shepard tone
ctx4 = StructuredDropOutContext(n_tones=n_tones,
n_drop=2,
inter_tone_interval=inter_tone_interval,
env=genv,
bias=bias,
fb_T1=1.)
scene4 = Scene()
scene4.add(ctx4)
sd = SceneDrawer()
sd.draw(scene4)
plt.show()
x = scene4.generate(fs)
display(Audio(x, rate=fs, autoplay=True))
plt.show()