def constantFrequencyExample(start=1.9, duration=0.5): filteredSignal = helpers.getSignal(start, duration, low_pass=100, high_pass=90, input_file="raw-epdf.wav") spectrum = helpers.getSpectrum(start, duration, low_pass=100, high_pass=90, input_file="raw-epdf.wav") segment = helpers.getSegment(start, duration, input_file="raw-epdf.wav") helpers.makeWavFromSpectrum(spectrum, segment, outputFile="recoveredWav.wav") # firstPeak = min([i[0] for i in spectrum.peaks()]) helpers.plot(spectrum)
def writeMajorChord(rootFrequency, thirdFrequency, fifthFrequency): root = thinkdsp.CosSignal(rootFrequency, amp=1.0, offset=0) third = thinkdsp.CosSignal(thirdFrequency, amp=1.0, offset=0) fifth = thinkdsp.CosSignal(fifthFrequency, amp=1.0, offset=0) chord = root + third + fifth wave = chord.make_wave(duration=1, start=0, framerate=11025) spectrum = wave.make_spectrum() helpers.makeWavFromSpectrum(spectrum, wave, "chord.wav")
def nonHarmonicFrequencies(base_frequency=400): """ When you add non-harmonic frequencies, you make chords """ # cos_sig = thinkdsp.CosSignal(freq=440, amp=1.0, offset=0) base_signal = thinkdsp.CosSignal(base_frequency, amp=1.0, offset=0) for i in xrange(2, 6): base_signal += thinkdsp.CosSignal(base_frequency * (i + random.random()), amp=1.0, offset=0) wave = base_signal.make_wave(duration=1, start=0, framerate=11025) spectrum = wave.make_spectrum() helpers.makeWavFromSpectrum(spectrum, wave, "exercise7_with_nonHarmonics.wav")
def frequencyToAttenuation(absorbtionRate, baseF, f): return absorbtionRate*(f/1.0/baseF)**2 def attenuationFactor(distance, absorbtionRate, baseF, f): """ Distance is in units of Km """ return decibelToAmplitude(frequencyToAttenuation(distance*absorbtionRate, baseF, f)) def getBaseFrequency(signal): spectrum = signal.make_spectrum() return spectrum.fs[1] def underWaterSpectrum(signal, distance, absorbtionRate): spectrum = signal.make_spectrum() originalSpectrum = signal.make_spectrum() baseFrequency = getBaseFrequency(signal) index = 0; for freq in spectrum.fs: attenuation = attenuationFactor(distance, absorbtionRate, baseFrequency, freq) spectrum.amps[index] = spectrum.amps[index]/attenuation index += 1 helpers.plot(spectrum) return spectrum segment = helpers.getSegment(input_file='92002__jcveliz__violin-origional.wav') signal = helpers.getSignal(input_file='92002__jcveliz__violin-origional.wav', duration=2) spectrum = underWaterSpectrum(signal, 10, 1) helpers.makeWavFromSpectrum(spectrum, segment, 'underwater.wav')