2012-02-10 1 views
2

다양한 입력 사운드를 왜곡시키기 위해 일종의 페달 [¹]을 만들려고합니다.파이썬에서 다양한 입력의 실시간 사운드 신디사이저

필자는 지상에서 시작하면서 파이썬에 연속 사운드를 생성하고 스크롤바 (또는 비슷한 위젯)를 슬라이드 할 때이 사운드의 빈도를 변경하려고합니다.

소리 생성을 위해 tkSnack 파이썬 라이브러리를 사용하려고했지만 생성 된 음 사이에서 일시 중지되었습니다. 이 동작 대신, 스크립트가 변경 되더라도 사운드를 계속 재생하고 싶습니다.

간단한 기능 톤() [²] 덕분에 내 arduino에서 좋은 결과를 얻었습니다. 아마도 대기 시간이 너무 짧아서 소리가 계속 울리는 것 같습니다. 리눅스에서 파이썬 라이브러리로 내 컴퓨터에서 비슷한 일을 할 수 있습니까?

누가 도와 주시겠습니까? :)

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

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

답변

0

PyAudio는 portaudio 파이썬 바인딩을 제공한다. 파이썬은 수치를위한 고성능 언어는 아니지만 실시간 오디오 처리를 할 수 있습니다.

2

안녕 나는 결과, 0.1, 0.5, 0.9와 같이 페달을 등

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

X = 입력 신호

D = 왜곡 시험 일부 값을 작성하고 표시 작년이 식을 사용 하였다.

이 실시간 inputline + 파이썬 + pyaudio에서 사용할 수는 소리가 ... 한 오버 드라이브처럼 보이는

업데이트 :

#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/

+0

안녕하세요, 감사합니다! 필자는 파이 오디오 (pyaudio)에 관심을 가졌지 만 목표를 달성 할 수는 없습니다. 주어진 주파수의 사운드를 생성하고 변경할 수는 없습니다. 전에는 사운드 프로세싱에 직면 해본 적이 없으며 어디서부터 시작해야할지 몰라요. 어떤 힌트라도? – Franc

+0

내 업데이트 소식보기 – ederwander

+0

이 예에서 K는 무엇을하고 있습니까? "(1 + M) * (데이터)/(1 + K * abs (데이터))"는 단지 "(1 + M) * (데이터)"로 재 작성 될 수 있습니다. – btubbs

관련 문제