Beispiel #1
0
def main():
    wfile = WavFile()
    for sig_cons in [
            SinSignal, TriangleSignal, SawtoothSignal, GlottalSignal,
            ParabolicSignal, SquareSignal
    ]:
        print sig_cons
        sig = sig_cons(440)
        wave = sig.make_wave(1)
        wave.apodize()
        wfile.write(wave)
    wfile.close()
    return

    signal = GlottalSignal(440)
    signal.plot()
    pyplot.show()
    return

    wave = note(69, 1, SquareSignal)
    write_wave(wave)
    return

    wfile = WavFile()
    for m in range(60, 0, -1):
        wfile.write(note(m, 0.25))
    wfile.close()
    return

    wave1 = note(69, 1)
    wave2 = chord([69, 72, 76], 1)
    wave = wave1 | wave2

    wfile = WavFile()
    wfile.write(wave)
    wfile.close()
    return

    sig1 = CosSignal(freq=440)
    sig2 = CosSignal(freq=523.25)
    sig3 = CosSignal(freq=660)
    sig4 = CosSignal(freq=880)
    sig5 = CosSignal(freq=987)
    sig = sig1 + sig2 + sig3 + sig4

    #wave = Wave(sig, duration=0.02)
    #wave.plot()

    wave = sig.make_wave(duration=1)
    #wave.normalize()

    wfile = WavFile(wave)
    wfile.write()
    wfile.close()
Beispiel #2
0
def chord(midi_nums, duration, sig_cons=CosSignal):
    """Make a chord with the given duration.

    midi_nums: sequence of int MIDI note numbers
    duration: float seconds
    """
    freqs = [midi_to_freq(num) for num in midi_nums]
    signal = sum(sig_cons(freq) for freq in freqs)
    wave = signal.make_wave(duration)
    wave.apodize()
    return wave
Beispiel #3
0
def chord(midi_nums, duration, sig_cons=CosSignal):
    """Make a chord with the given duration.

    midi_nums: sequence of int MIDI note numbers
    duration: float seconds
    """
    freqs = [midi_to_freq(num) for num in midi_nums]
    signal = sum(sig_cons(freq) for freq in freqs)
    wave = signal.make_wave(duration)
    wave.apodize()
    return wave
Beispiel #4
0
def main():
    wfile = WavFile()
    for sig_cons in [SinSignal, TriangleSignal, SawtoothSignal, 
                     GlottalSignal, ParabolicSignal, SquareSignal]:
        print sig_cons
        sig = sig_cons(440)
        wave = sig.make_wave(1)
        wave.apodize()
        wfile.write(wave)
    wfile.close()
    return

    signal = GlottalSignal(440)
    signal.plot()
    pyplot.show()
    return

    wave = note(69, 1, SquareSignal)
    write_wave(wave)
    return

    wfile = WavFile()
    for m in range(60, 0, -1):
        wfile.write(note(m, 0.25))
    wfile.close()
    return

    wave1 = note(69, 1)
    wave2 = chord([69, 72, 76], 1)
    wave = wave1 | wave2

    wfile = WavFile()
    wfile.write(wave)
    wfile.close()
    return

    sig1 = CosSignal(freq=440)
    sig2 = CosSignal(freq=523.25)
    sig3 = CosSignal(freq=660)
    sig4 = CosSignal(freq=880)
    sig5 = CosSignal(freq=987)
    sig = sig1 + sig2 + sig3 + sig4

    #wave = Wave(sig, duration=0.02)
    #wave.plot()

    wave = sig.make_wave(duration=1)
    #wave.normalize()

    wfile = WavFile(wave)
    wfile.write()
    wfile.close()
Beispiel #5
0
def note(midi_num, duration, sig_cons=CosSignal):
    """Make a MIDI note with the given duration.

    midi_num: int MIDI note number
    duration: float seconds
    sig_cons: Signal constructor function
    """
    freq = midi_to_freq(midi_num)
    print midi_num, freq
    signal = sig_cons(freq)
    wave = signal.make_wave(duration)
    wave.apodize()
    return wave
Beispiel #6
0
def note(midi_num, duration, sig_cons=CosSignal):
    """Make a MIDI note with the given duration.

    midi_num: int MIDI note number
    duration: float seconds
    sig_cons: Signal constructor function
    """
    freq = midi_to_freq(midi_num)
    print midi_num, freq
    signal = sig_cons(freq)
    wave = signal.make_wave(duration)
    wave.apodize()
    return wave
Beispiel #7
0
def gen_wav():
    #cos_sig = thinkdsp.CosSignal(freq=440, amp=1.0, offset=0)
    sin_sig = thinkdsp.SinSignal(freq=880, amp=0.5, offset=0)

    #mix = cos_sig + sin_sig;
    mix = sin_sig

    wave = mix.make_wave(duration=10, start=0, framerate=2000000)
    wave.normalize() # 归一化
    wave.apodize() # 渐入渐出
    #wave.plot()
    #plt.show()

    segment = wave.segment(start=0, duration=2/440)
    segment.plot()
    plt.show()

    # 频谱
    spectrum = wave.make_spectrum()
    spectrum.plot()
    plt.show()
    wave.write(filename=sys.argv[1])
Beispiel #8
0
PI2 = 2 * np.pi


class SawtoothChirp(Chirp):
    def evaluate(self, ts):
        freqs = np.linspace(self.start, self.end, len(ts))
        dts = np.diff(ts, prepend=0)
        dphis = PI2 * freqs * dts
        phases = np.cumsum(dphis)
        cycles = phases / PI2
        frac, _ = np.modf(cycles)
        ys = normalize(unbias(frac), self.amp)
        return ys


signal = SawtoothChirp(start=220, end=880)
wave = signal.make_wave(duration=0.1, framerate=4000)
wave.apodize()
wave.write(filename="output3-2.wav")
plt.subplot(1, 2, 1)
plt.title("SawtoothChirp")
wave.plot()

sp = wave.make_spectrum(256)
plt.subplot(1, 2, 2)
sp.plot()
plt.xlabel("时间")
plt.ylabel("频率")
plt.title("频谱")
plt.show()