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