from thinkdsp import normalize, unbias import numpy as np import matplotlib.pyplot as plt from thinkdsp import SquareSignal class SawtoothSignal(Sinusoid): """Represents a sawtooth signal.""" def evaluate(self, ts): """Evaluates the signal at the given times. ts: float array of times returns: float wave array """ cycles = self.freq * ts + self.offset / np.pi / 2 frac, _ = np.modf(cycles) ys = normalize(unbias(frac), self.amp) return ys plt.rcParams['font.sans-serif'] = ['SimHei'] #加上这一句就能在图表中显示中文 plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号 plt.title("方波") square = SquareSignal(1100).make_wave(duration=0.5, framerate=10000) wave1 = square.make_spectrum() square.make_spectrum().plot() decorate(xlabel='Frequency (Hz)') wave = wave1.make_wave() wave.write(filename="sound2-3.wav") plt.show()
spectrum.hs[1:] /= spectrum.fs[1:] spectrum.hs[0] = 0 plt.subplot(311) spectrum = wave.make_spectrum() spectrum.plot(high=10000, color='gray') filter_spectrum(spectrum) spectrum.scale(440) spectrum.plot(high=10000) decorate(xlabel='Frequency (Hz)') plt.subplot(312) spectrum1 = wave1.make_spectrum() spectrum1.plot(high=10000, color='red') filter_spectrum(spectrum1) spectrum1.scale(440) spectrum1.plot(high=10000) decorate(xlabel='Frequency (Hz)') plt.subplot(313) spectrum2 = wave2.make_spectrum() spectrum2.plot(high=10000, color='green') filter_spectrum(spectrum2) spectrum2.scale(440) spectrum2.plot(high=10000) decorate(xlabel='Frequency (Hz)') filtered = spectrum.make_wave() filtered.make_audio() plt.show()
trangle.write("三角波声音.wav") play("三角波声音.wav", flags=1) square = SquareSignal(freq=440).make_wave(duration=0.01, framerate=10000) plt.subplot(232) plt.title("square") square.plot() square.write("方波声音.wav") play("方波声音.wav", flags=1) sawtooth = SawtoothSignal(freq=440).make_wave(duration=0.01, framerate=10000) plt.subplot(233) plt.title("sawtooth") sawtooth.plot() sawtooth.write("斜波声音.wav") play("斜波声音.wav", flags=1) spectrum_tra = trangle.make_spectrum() filter_spectrum(spectrum_tra) plt.subplot(234) spectrum_tra.plot() spectrum_squ = square.make_spectrum() filter_spectrum(spectrum_squ) plt.subplot(235) spectrum_squ.plot() spectrum_saw = sawtooth.make_spectrum() filter_spectrum(spectrum_saw) plt.subplot(236) spectrum_saw.plot() plt.show()