コード例 #1
0
def test_signal():
    pathdir_out = "chap1_out"
    signal = (SinSignal(freq=400, amp=1.0) + SinSignal(freq=600, amp=0.5) +
              SinSignal(freq=800, amp=0.25))
    signal.plot()

    wave2 = signal.make_wave(duration=1)
    wave2.apodize()
    wavfilename = pathdir_out + "/wave_400_600_800.wav"
    wave2.write(wavfilename)

    spectrum = wave2.make_spectrum()
    #spectrum.plot(high=2000)
    fig1 = pathdir_out + "/wave_400_600_800.jpg"
    spectrum.plot_writefile(high=2000, filename=fig1)
コード例 #2
0
def test_leak():
    signal = SinSignal(freq=440)
    duration = signal.period * 30
    wave = signal.make_wave(duration)
    #wave.plot()
    #decorate(xlabel='Time (s)')

    spectrum = wave.make_spectrum()
    #spectrum.plot(high=880)
    #decorate(xlabel='Frequency (Hz)', ylabel='Amplitude')

    duration2 = signal.period * 30.25
    wave2 = signal.make_wave(duration2)
    #wave2.plot()
    #decorate(xlabel='Time (s)')

    spectrum2 = wave2.make_spectrum()


    #plot all you need in on figure
    plt.figure()
    plt.subplot(3, 2, 1)
    plt.plot(wave.ts, wave.ys)

    plt.subplot(3, 2, 2)
    i = find_index(880, spectrum.fs)
    plt.plot(spectrum.fs[:i], spectrum.amps[:i])

    plt.subplot(3, 2, 3)
    plt.plot(wave2.ts, wave2.ys)

    plt.subplot(3, 2, 4)
    i = find_index(880, spectrum2.fs)
    plt.plot(spectrum2.fs[:i], spectrum2.amps[:i])

    wave2.hamming()
    spectrum2 = wave2.make_spectrum()

    plt.subplot(3, 2, 5)
    plt.plot(wave2.ts, wave2.ys)

    plt.subplot(3, 2, 6)
    i = find_index(880, spectrum2.fs)
    plt.plot(spectrum2.fs[:i], spectrum2.amps[:i])
    plt.show()
import sys
sys.path.insert(1, "dsp-modulo")

from thinkdsp import SinSignal
from thinkdsp import decorate
from thinkdsp import read_wave

import matplotlib.pyplot as plt

sonido = SinSignal(freq=440, amp=1, offset=0)
wave_sonido = sonido.make_wave(duration=1.0, start=0, framerate=44100)

decorate(xlabel="Tiempo (s)")
decorate(ylabel="Amplitud")

#wave_sonido.plot()
#plt.show()

wave_sonido.write("sonido_original.wav")

print(type(wave_sonido))
print("Inicio: " + str(wave_sonido.start))
print("Duracion: " + str(wave_sonido.duration))
print("Frecuencia: " + str(wave_sonido.framerate))

wave_sonido.framerate = wave_sonido.framerate / 2

wave_sonido.write("sonido_modificado.wav")

print("Frecuencia de muestreo modificada: " + str(wave_sonido.framerate))
コード例 #4
0
ファイル: test2-3.py プロジェクト: Lpy13736373525/LPY1
from thinkdsp import TriangleSignal, SquareSignal
from thinkdsp import decorate
import matplotlib.pyplot as plt
import numpy as np

square = SquareSignal(1100)
cysquare = square.make_wave(duration=2, framerate=10000)
cysquare.play('temp11.wav')
square = square.make_wave(duration=0.5, framerate=10000)
square.make_spectrum().plot()
decorate(xlabel='Frequency (Hz)')

from thinkdsp import SinSignal

sin = SinSignal(500).make_wave(duration=2, framerate=10000)
sin.play('temp22.wav')
plt.show()
コード例 #5
0
import sys

sys.path.insert(1, 'dsp-modulo')

from thinkdsp import SinSignal
from thinkdsp import CosSignal
from thinkdsp import decorate

from thinkdsp import read_wave
from thinkdsp import play_wave

import matplotlib.pyplot as plt

seno = SinSignal(freq=440, amp=1, offset=0)
seno2 = SinSignal(freq=340, amp=1, offset=0)
seno3 = SinSignal(freq=600, amp=0.7, offset=0)

waveSeno = seno.make_wave(duration=1, start=0, framerate=44100)
waveSeno2 = seno2.make_wave(duration=1, start=1, framerate=44100)
waveSeno3 = seno3.make_wave(duration=1, start=2, framerate=44100)

resultante = waveSeno + waveSeno2 + waveSeno3

decorate(xlabel="Tiempo (s)")
decorate(ylabel="Amplitud")

resultante.plot()

resultante.write("sonido.wav")

plt.show()
コード例 #6
0
ファイル: test1-3.py プロジェクト: mooWw/moo.github.io
from thinkdsp import CosSignal, SinSignal
from thinkdsp import decorate
import matplotlib.pyplot as plt
cos_sig = CosSignal(freq=440, amp=1.0, offset=0)
sin_sig = SinSignal(freq=880, amp=0.5, offset=0)

mix = sin_sig + cos_sig
wave = mix.make_wave(duration=0.01, start=0, framerate=11025)
wave.play('test3.wav')
wave.normalize()
wave.make_audio()
plt.subplot(2, 1, 1)
wave.plot()
spectrum = wave.make_spectrum()
plt.subplot(2, 1, 2)
spectrum.plot(high=5000)
decorate(xlabel='Frequency (Hz)')
plt.show()
コード例 #7
0
ファイル: 1-2和1-4.py プロジェクト: qqqmmy/qiu
wave=spectrum.make_wave()
audio = Audio(data=wave.ys, rate=wave.framerate)
audio

# 带阻
segment = wave.segment()
spectrum = segment.make_spectrum()
spectrum.band_stop(1000,3000)
spectrum.plot()
decorate(xlabel='Frequency (Hz)')
wave=spectrum.make_wave()
audio = Audio(data=wave.ys, rate=wave.framerate)
audio

cos_sig = CosSignal(freq=440, amp=1.0, offset=0)
sin_sig = SinSignal(freq=880, amp=0.5, offset=0)
mix = sin_sig + cos_sig
period = mix.period
segment = wave.segment(start=0, duration=period*3)
wave = mix.make_wave(duration=1, start=0, framerate=11025)
segment = wave.segment(start=0, duration=period*3)
segment.plot()
decorate(xlabel='Time (s)')

spectrum = segment.make_spectrum()
spectrum.plot()
decorate(xlabel='Frequency (Hz)')

wave = mix.make_wave(duration=1, start=0, framerate=11025)
audio = Audio(data=wave.ys, rate=wave.framerate)
audio
コード例 #8
0
import sys
sys.path.insert(1, 'dsp-modulo')

from thinkdsp import SinSignal
from thinkdsp import CosSignal
from thinkdsp import decorate

#Módulo para graficar
import matplotlib.pyplot as plt

#Crear señal senoidal
seno = SinSignal(freq=329.628, amp=50, offset=0)
coseno = CosSignal(freq=41.2035, amp=30, offset=0)

#Crear gráfica en memoria y damos propiedades
seno.plot()
decorate(xlabel='Tiempo (s)')
decorate(ylabel='Amplitud')

coseno.plot()

plt.show()
コード例 #9
0
import sys
sys.path.insert(1, 'dsp-modulo')

from thinkdsp import SinSignal
from thinkdsp import CosSignal
from thinkdsp import decorate

import matplotlib.pyplot as plt

seno = SinSignal(freq=20, amp=1, offset=0)
coseno = CosSignal(freq=50, amp=1.3, offset=0)

waveSeno = seno.make_wave(duration=1, start=0, framerate=11025)
waveCoseno = coseno.make_wave(duration=1, start=0, framerate=11025)

waveResultante = waveSeno + waveCoseno

decorate(xlabel="Tiempo (s)")
decorate(ylabel="Amplitud")

waveSeno.plot()
waveCoseno.plot()
plt.show()

decorate(xlabel="Tiempo (s)")
decorate(ylabel="Amplitud")
waveResultante.plot()
plt.show()
コード例 #10
0
import sys
sys.path.insert(1, 'dsp-modulo')

from thinkdsp import SinSignal
from thinkdsp import decorate

import matplotlib.pyplot as plt

seno = SinSignal(freq=10, amp=1.0, offset=0)

wave_seno = seno.make_wave(duration=1.0, start=0, framerate=22050)
wave_seno_frecuencia_muestreo_baja = seno.make_wave(duration=1.0,
                                                    start=0,
                                                    framerate=21)

decorate(xlabel="Tiempo (s)")
decorate(ylabel="Amplitud")
wave_seno.plot()
wave_seno_frecuencia_muestreo_baja.plot()
plt.show()

decorate(xlabel="Tiempo (s)")
decorate(ylabel="Amplitud")
wave_seno_frecuencia_muestreo_baja.plot()
plt.show()
コード例 #11
0
ファイル: harmonicos.py プロジェクト: MartinMeza23/Harmonico
import sys
sys.path.insert(1, 'dsp-modulo')

from thinkdsp import SinSignal
from thinkdsp import SquareSignal
from thinkdsp import decorate
import thinkplot
import numpy

señalRectangular = SquareSignal(freq=2, amp=1.0, offset=numpy.pi)
waveRectangular = señalRectangular.make_wave(duration=1,
                                             start=0,
                                             framerate=44100)

señalSenoidal = SinSignal(freq=2, amp=1.0, offset=0)
harmonico1 = SinSignal(freq=señalSenoidal.freq * 3, amp=0.3, offset=0)
harmonico2 = SinSignal(freq=señalSenoidal.freq * 5, amp=0.25, offset=0)
harmonico3 = SinSignal(freq=señalSenoidal.freq * 7, amp=0.2, offset=0)
harmonico4 = SinSignal(freq=señalSenoidal.freq * 9, amp=0.15, offset=0)
harmonico5 = SinSignal(freq=señalSenoidal.freq * 11, amp=0.1, offset=0)
harmonico6 = SinSignal(freq=señalSenoidal.freq * 13, amp=0.05, offset=0)
mezcla = señalSenoidal + harmonico1 + harmonico2 + harmonico3 + harmonico4 + harmonico5 + harmonico6
waveMezcla = mezcla.make_wave(duration=1, start=0, framerate=44100)

waveRectangular.plot()
waveMezcla.plot()
thinkplot.show()

espectroRectangular = waveRectangular.make_spectrum()
espectroMezcla = waveMezcla.make_spectrum()
コード例 #12
0
from thinkdsp import SinSignal
import numpy as np
import matplotlib.pyplot as plt
from thinkdsp import decorate
from thinkdsp import Chirp
from thinkdsp import ExpoChirp
from thinkdsp import SinSignal
from ipywidgets import interact, interactive, fixed
import ipywidgets as widgets
from thinkdsp import normalize, unbias
from thinkdsp import read_wave

# 3-1
# 设置一个sin信号泄露,周期是30.25这样可以产生泄露,因为期间不是周期的整数倍就会有泄露
signal = SinSignal(freq=440)
duration = signal.period * 30.25
wave = signal.make_wave(duration)
wave.plot()
plt.show()  # sin的波形

spectrum = wave.make_spectrum()
spectrum.plot(high=880)
decorate(xlabel='Frequency (Hz)')
plt.show()  #sin的频谱

# 用不同的窗口看看他们对泄露的影响,分别用了bartlett,blackman,hamming,hanning窗口进行对比
for window_func in [np.bartlett, np.blackman, np.hamming, np.hanning]:
    wave = signal.make_wave(duration)
    wave.ys *= window_func(len(wave.ys))

    spectrum = wave.make_spectrum()
コード例 #13
0
from thinkdsp import decorate
from thinkdsp import Sinusoid
from thinkdsp import normalize, unbias
from thinkdsp import SinSignal
from thinkdsp import SquareSignal
import numpy as np
import matplotlib.pyplot as plt

square = SquareSignal(1500).make_wave(duration=0.5, framerate=10000)

square.make_spectrum().plot()
decorate(xlabel='Frequency (Hz)')
square.make_audio()

SinSignal(1100).make_wave(duration=0.5, framerate=10000).make_spectrum().plot()

plt.show()
コード例 #14
0
import sys
sys.path.insert(1, 'dsp-modulo')

from thinkdsp import SinSignal
from thinkdsp import decorate

from thinkdsp import read_wave
from thinkdsp import play_wave

import matplotlib.pyplot as plt

seno = SinSignal(freq=329, amp=1, offset=0)
segundo_seno = SinSignal(freq=659, amp=1, offset=0)
tercer_seno = SinSignal(freq=165, amp=1, offset=0)
seno2 = SinSignal(freq=391, amp=1, offset=0)
segundo_seno2 = SinSignal(freq=783, amp=1, offset=0)
tercer_seno2 = SinSignal(freq=196, amp=1, offset=0)
seno3 = SinSignal(freq=493, amp=1, offset=0)
segundo_seno3 = SinSignal(freq=987, amp=1, offset=0)
tercer_seno3 = SinSignal(freq=246, amp=1, offset=0)

wave_seno = seno.make_wave(duration=1.0, start=1, framerate=44100)
wave_segundo_seno = segundo_seno.make_wave(duration=1.0,
                                           start=1,
                                           framerate=44100)
wave_tercer_seno = tercer_seno.make_wave(duration=1.0,
                                         start=1,
                                         framerate=44100)

wave_seno2 = seno2.make_wave(duration=1.0, start=0, framerate=44100)
wave_segundo_seno2 = segundo_seno2.make_wave(duration=1.0,
コード例 #15
0
from thinkdsp import Sinusoid
from thinkdsp import normalize, unbias
import numpy as np
import matplotlib.pyplot as plt
from thinkdsp import decorate
from thinkdsp import SquareSignal
from thinkdsp import TriangleSignal
from thinkdsp import SinSignal

square = SquareSignal(1500).make_wave(duration=0.5, framerate=10000)
square.plot()
plt.subplot()
square.make_spectrum().plot()
decorate(xlabel='Frequency (Hz)')

square.make_audio()

SinSignal(500).make_wave(duration=0.5, framerate=10000).make_audio()
square.play("2-3.wav")

plt.show()
コード例 #16
0
import wave
import thinkdsp
import matplotlib.pyplot as plt
import numpy as np 
from scipy import signal
from thinkdsp import SinSignal, Spectrum, decorate
from thinkdsp import Signal

plt.rcParams['font.sans-serif']=['SimHei']#图表上可以显示中文
plt.rcParams['axes.unicode_minus']=False#图表上可以显示负号

signal=SinSignal(freq=440)
duration=signal.period*30.25
wave=signal.make_wave(duration)

for window_func in [np.bartlett,np.blackman,np.hanning,np.hamming]:
    wave=signal.make_wave(duration)
    wave.ys*=window_func(len(wave.ys))
    Spectrum=wave.make_spectrum()
    Spectrum.plot(high=880,label=window_func)



plt.title("频率")
plt.show()
コード例 #17
0
segment.segment(start=1.1, duration=0.005).plot()
spectrum = segment.make_spectrum()
spectrum.plot(high=7000)
plt.show()
spectrum.low_pass(4000)
spectrum.plot(high=7000)
plt.show()
spectrum.high_pass(1000)
spectrum.plot(high=7000)
plt.show()
spectrum.band_stop(2500, 1000)
spectrum.plot(high=7000)
plt.show()

cos_sig = CosSignal(freq=440, amp=1.0, offset=0)
sin_sig = SinSignal(freq=880, amp=2.0, offset=0)
# # 正弦信号和波形
plt.subplot()
cos_sig.plot()
decorate(xlabel='Time (s)')

wave1 = cos_sig.make_wave(duration=1)
wave1.apodize()
wave1.make_audio()
spectrum1 = wave1.make_spectrum()
plt.subplot()
spectrum1.plot(high=2000)

# # 余弦信号和波形
sin_sig.plot()
decorate(xlabel='Time (s)')
コード例 #18
0
ファイル: practica1.py プロジェクト: rominavc99/Practica1TS
import sys

sys.path.insert(1, 'dsp-modulo')
from thinkdsp import SinSignal
from thinkdsp import CosSignal
from thinkdsp import decorate

#modulo para mostrar graficas
import matplotlib.pyplot as plt

#Crear senoidal signal
seno = SinSignal(freq=400, amp=0.7, offset=0)
cos = SinSignal(freq=800, amp=1.1, offset=0)

#Crear grafica en memoria, asignamos propiedades
seno.plot()
decorate(xlabel='Tiempo (s)')
decorate(ylabel='Amplitud')

cos.plot()

#muestra grafica
plt.show()
コード例 #19
0
ファイル: frecuencia.py プロジェクト: KarenLopezB/Frecuencia
import sys
sys.path.insert(1, 'dsp-modulo')

from thinkdsp import SinSignal
from thinkdsp import decorate
import thinkplot

senalUno = SinSignal(freq=380, amp=0.1, offset=0)
senalDos = SinSignal(freq=200, amp=1, offset=0)

mezcla = senalUno + senalDos

waveMezcla = mezcla.make_wave(duration=1, start=0, framerate=44100)
waveMezcla.plot()

decorate(xlabel="Tiempo (s)")
thinkplot.show()

espectro = waveMezcla.make_spectrum()
espectro.plot()
decorate(xlabel="Frecuencia (Hz)")
thinkplot.show()
コード例 #20
0
from thinkdsp import CosSignal, SinSignal
from thinkdsp import decorate
cos_sig = CosSignal(freq=220, amp=1.0, offset=0)
sin_sig = SinSignal(freq=880, amp=0.5, offset=0)
oadd = SinSignal(freq=500, amp=0.7, offset=0)
# mix = sin_sig + cos_sig
mix = sin_sig + cos_sig + oadd
# mix.plot()
# decorate(xlabel='Time (s)')
wave = mix.make_wave(duration=2, start=0, framerate=11025)
wave.play('temp.wav')
spectrum = wave.make_spectrum()
spectrum.plot()
decorate(xlabel='Frequency (Hz)')


コード例 #21
0
ファイル: harmonicos.py プロジェクト: rech99/Harmonicas
import sys
sys.path.insert(1, 'dsp-modulo')

from thinkdsp import SinSignal
from thinkdsp import SquareSignal
from thinkdsp import decorate
import thinkplot
import numpy

senalRectangular = SquareSignal(freq=2, amp=1.0, offset=numpy.pi)
waveRectangular = senalRectangular.make_wave(duration=1,
                                             start=0,
                                             framerate=44100)

senalSenoidal = SinSignal(freq=2, amp=1, offset=0)
harmonico1 = SinSignal(freq=senalSenoidal.freq * 3, amp=0.3, offset=0)
harmonico2 = SinSignal(freq=senalSenoidal.freq * 5, amp=0.25, offset=0)
harmonico3 = SinSignal(freq=senalSenoidal.freq * 7, amp=0.20, offset=0)
harmonico4 = SinSignal(freq=senalSenoidal.freq * 9, amp=0.15, offset=0)
harmonico5 = SinSignal(freq=senalSenoidal.freq * 11, amp=0.1, offset=0)
harmonico6 = SinSignal(freq=senalSenoidal.freq * 13, amp=0.05, offset=0)
waveSenoidal = senalSenoidal.make_wave(duration=1, start=0, framerate=44100)
mezcla = senalSenoidal + harmonico1 + harmonico2 + harmonico3 + harmonico4 + harmonico5 + harmonico6
waveMezcla = mezcla.make_wave(duration=1, start=0, framerate=44100)

waveRectangular.plot()
waveMezcla.plot()
thinkplot.show()

espectroRectangular = waveRectangular.make_spectrum()
espectroMezcla = waveMezcla.make_spectrum()
コード例 #22
0
ファイル: 3-1.py プロジェクト: Li-Er222/digital-signal
import numpy as np
import matplotlib.pyplot as plt

from thinkdsp import decorate
from thinkdsp import SinSignal

signal = SinSignal(freq=440)
duration = signal.period * 30.25
wave = signal.make_wave(duration)
spectrum = wave.make_spectrum()
plt.subplot(121)
spectrum.plot(high=880)
decorate(xlabel='Frequency (Hz)')

for window_func in [np.bartlett, np.blackman, np.hamming, np.hanning]:
    wave = signal.make_wave(duration)
    wave.ys *= window_func(len(wave.ys))

    spectrum = wave.make_spectrum()
    plt.subplot(122)
    spectrum.plot(high=880, label=window_func.__name__)

decorate(xlabel='Frequency (Hz)')
plt.show()
コード例 #23
0
#import sys
#sys.path.insert(1,'dsp-modulo')
from thinkdsp import SinSignal
from thinkdsp import CosSignal
from thinkdsp import decorate

#modulo para mostrar las graficas
import matplotlib.pyplot as plt

#crear señal senoidal

seno = SinSignal(freq=200, amp=0.7, offset=0)
coseno = CosSignal(freq=800, amp=1.1, offset=0)

#creamos grafica y asignamos propiedades
seno.plot()
coseno.plot()

decorate(xlabel='Tiempo (s)')
decorate(ylabel='Amplitud')

plt.show()
コード例 #24
0
ファイル: signal test.py.py プロジェクト: CHIN-HUA/python
    spectrum = segment.make_spectrum()

    spectrum.plot(high=5000, color='0.7')
    spectrum.low_pass(cutoff)
    spectrum.plot(high=5000, color='#045a8d')
    decorate(xlabel='Frequency (Hz)')
    
    audio = spectrum.make_wave().make_audio()
    display(audio)

################################################


from thinkdsp import SinSignal

signal = (SinSignal(freq=400, amp=1.0) +
          SinSignal(freq=600, amp=0.5) +
          SinSignal(freq=800, amp=0.25))
signal.plot()

wave2 = signal.make_wave(duration=1)
wave2.apodize()

wave2.make_audio()

spectrum = wave2.make_spectrum()
spectrum.plot(high=2000)

signal += SinSignal(freq=450)
signal.make_wave().make_audio()
コード例 #25
0
import sys

sys.path.insert(1, "dsp-modulo")

from thinkdsp import SinSignal
from thinkdsp import decorate

from thinkdsp import read_wave
from thinkdsp import play_wave

import matplotlib.pyplot as plt

seno = SinSignal(freq=440, amp=1.0, offset=0)
segundo_seno = SinSignal(freq=340, amp=1, offset=0)
tercer_seno = SinSignal(freq=600, amp=0.7, offset=0)

wave_seno = seno.make_wave(duration=1.0, start=1, framerate=44100)
wave_segundo_seno = segundo_seno.make_wave(duration=1.0,
                                           start=2,
                                           framerate=44100)
wave_tercer_seno = tercer_seno.make_wave(duration=1.0,
                                         start=3,
                                         framerate=44100)

resultante = wave_seno + wave_segundo_seno + wave_tercer_seno

decorate(xLabel="Tiempo (s)")
decorate(yLabel="Amplitud")

resultante.plot()
コード例 #26
0
if not os.path.exists('thinkdsp.py'):
    get_ipython().system(
        'wget https://github.com/AllenDowney/ThinkDSP/raw/master/code/thinkdsp.py'
    )

# ## Signals
#
# Instantiate cosine and sine signals.

# In[33]:

from thinkdsp import CosSignal, SinSignal

cos_sig = CosSignal(freq=450, amp=1.0, offset=0)
sin_sig = SinSignal(freq=900, amp=0.5, offset=0)

# Plot the sine and cosine signals.  By default, `plot` plots three periods.

# In[34]:

from thinkdsp import decorate

cos_sig.plot()
decorate(xlabel='Time (s)')

# Here's the sine signal.

# In[35]:

sin_sig.plot()
コード例 #27
0
import sys
sys.path.insert(1, 'dsp-modulo')

from thinkdsp import SinSignal
from thinkdsp import decorate
import thinkplot

frecuencia1 = SinSignal(freq=1500, amp=0.3, offset=0)
frecuencia2 = SinSignal(freq=380, amp=0.6, offset=0)

frecuencia3 = SinSignal(freq=5300, amp=1.0, offset=0)
frecuencia4 = SinSignal(freq=12300, amp=0.1, offset=0)

resultante1 = frecuencia1 + frecuencia2
resultante2 = frecuencia3 + frecuencia4

waveResultante1 = resultante1.make_wave(duration=1,start=0,framerate=44100)
waveResultante2 = resultante2.make_wave(duration=6,start=1.3,framerate=44100)

waveFinal = waveResultante1 + waveResultante2

waveFinal.plot()
decorate(xLabel="Tiempo (s)")
thinkplot.show()

espectro = waveFinal.make_spectrum()
espectro.plot()
decorate(xLabel="Frecuencia (Hz)")
thinkplot.show()
コード例 #28
0
ファイル: 实验三_2.py プロジェクト: xiangshane/test
import os

from matplotlib.pyplot import subplot
from thinkdsp import SquareSignal
from thinkdsp import decorate
from thinkdsp import plt
from thinkdsp import Sinusoid
from thinkdsp import normalize, unbias
import numpy as np
from thinkdsp import SinSignal
from thinkdsp import read_wave

square = SquareSignal(1100).make_wave(duration=0.5, framerate=10000)
square.make_spectrum().plot()
segment = SinSignal(10000).make_wave(duration=0.5,
                                     framerate=10000).make_audio()
segment.write(filename='fb.wav')
# decorate(xlabel='Frequency (Hz)')

# plt.show()