Здравствуйте, я использовал эту формулу в прошлом году для создания педали
M = 2*D/(1-D);
x = (1+M)*(x)./(1+k*abs(x));
X = входной сигнал
D = проверка искажения некоторых значений, таких как 0,1, 0,5, 0,9 и т. Д., И просмотр результатов.
Это может быть использовано в режиме реального времени inputline + python + pyaudio, звук выглядит как один Overdrive ...
Обновление:
Запись в реальном времени примитивного искажения педали в 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/