gpt4 book ai didi

python - 来自 Python 中不同输入的实时声音合成器

转载 作者:太空狗 更新时间:2023-10-29 11:05:35 28 4
gpt4 key购买 nike

我正在尝试构建一种踏板 [¹] 以扭曲不同的输入声音。

当我从地面开始时,我试图在 python 中生成连续的声音,并在我滑动滚动条(或类似的小部件)时改变这种声音的频率。

我尝试使用 tkSnack python 库来生成声音,但它会在生成的音调之间暂停。我希望我的脚本能够连续播放声音,而不是这种行为,即使声音在变化。

多亏了简单的函数 tone() [²],我的 arduino 取得了不错的成绩。可能延迟时间太短以至于声音似乎是连续的。是否可以在我的计算机上使用 Linux 上的 python 库做类似的事情?

感谢谁会帮助我! :)

[¹] http://en.wikipedia.org/wiki/Effects_pedal

[²] http://arduino.cc/en/Reference/Tone

最佳答案

你好,我去年用这个公式做了一个踏板

M = 2*D/(1-D);
x = (1+M)*(x)./(1+k*abs(x));

X = 输入信号

D = 失真测试一些值,如 0.1、0.5、0.9 等,然后查看结果。

这个可以在realtime 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/

关于python - 来自 Python 中不同输入的实时声音合成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9235368/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com