你好我去年用这个公式建立一个踏板
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