[출처 : http://www.imp17.com/tc/myevan/95]


일단 리눅스의 사운드 연주 소스입니다.

#!/usr/bin/python
import linuxaudiodev
import wave

src = wave.open("test.wav""rb")
channels, bytes, freq, frameCount, compType, compName  = src.getparams()

dsp = linuxaudiodev.open("/dev/dsp""w")
dsp.setparameters(freq, bytes*8, channels, linuxaudiodev.AFMT_S16_LE, False)

frameStep = 1000
for pos in range(0, frameCount, frameStep):
    buf = src.readframes(frameStep)
    dsp.write(buf)

리눅스에서 사운드 플레이를 정말 쉽습니다 -_-)~ 그냥 모든게 파일이라 좋아요.

하지만 역발상의 대가 윈도우에서는 유닉스와는 다른길을 걷기 때문에
위의 코드로 작동이 되지 않습니다 -_-)> wav 파일이라면 winsound 라는 모듈을 지원하지만
지금 작업은 RAW 데이터를 플레이하는거라서 직접 wave파일에 접근해야합니다.

다행히 http://www.johnnypops.demon.co.uk/ 라는 사이트에서 
녹음 기능을 ctypes 로 구현해놓은것이 있어서 (정말 좋은 사람이예요 >ㅁ<)/ )
이 소스를 활용해 같은 기능을 하는 프로그램을 만들어보았습니다.
(c++ 객체만 ctypes 로 꺼낼수 있으면 정말 행복할거예요)

+ Recent posts