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)
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))
Exemple #4
0
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()
Exemple #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()
Exemple #6
0
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()
Exemple #7
0
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
Exemple #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()
Exemple #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()
Exemple #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()
Exemple #11
0
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()
Exemple #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()
Exemple #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()
Exemple #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,
Exemple #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()
Exemple #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()
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)')
Exemple #18
0
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()
Exemple #19
0
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()
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)')


Exemple #21
0
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()
Exemple #22
0
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()
Exemple #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()
Exemple #24
0
    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()
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()
Exemple #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()
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()
Exemple #28
0
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()