你好我去年用這個公式建立一個踏板
M = 2*D/(1-D);
x = (1+M)*(x)./(1+k*abs(x));
X =輸入信號
d =失真測試一些值像0.1,0.5,0.9等,並查看結果。
這可以實時inputline +蟒蛇+ pyaudio使用,聲音看起來像一個超速......
更新:
實時在Python
#ederwander
import pyaudio
import numpy as np
import wave
chunk = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 8800
K=0
DISTORTION = 0.61
p = pyaudio.PyAudio()
stream = p.open(format = FORMAT,
channels = CHANNELS,
rate = RATE,
input = True,
output = True,
frames_per_buffer = chunk)
print "Eng Eder de Souza - ederwander"
print "Primitive Pedal"
while(True):
data = stream.read(chunk)
data = np.fromstring(data, dtype=np.int16)
M = 2*DISTORTION/(1-DISTORTION);
data = (1+M)*(data)/(1+K*abs(data));
data = np.array(data, dtype='int16')
signal = wave.struct.pack("%dh"%(len(data)), *list(data))
stream.write(signal)
stream.stop_stream()
stream.close()
p.terminate()
原始踏板失真寫
更改變量DISTORTION看到不同的結果:
我改變了一下我的來源使播放錄製的樣本,我也做了一些測試,我得到這個聲音: http://www.freesound.org/people/eriatarka/sounds/15753/ ,然後應用於這裏所描述的公式,你可以在這裏聽更改的文件: http://www.freesound.org/people/ederwander/sounds/146277/
您好,謝謝您的回答! 我正在修改pyaudio,但我無法實現我的目標..它不能產生給定頻率的聲音,然後改變它們。 我從來沒有面對聲音處理之前,我真的不知道從哪裏開始..任何提示? – Franc 2012-02-11 10:27:27
看到我的更新文章 – ederwander 2012-02-13 17:34:09
K在這個例子中做了什麼?它看起來總是爲零,所以「(1 + M)*(數據)/(1 + K * abs(數據))」可以重寫爲「(1 + M)*(數據)」。 – btubbs 2017-07-11 05:29:47