C00000 C00000 400000 400000 (x24) BFFFFF BFFFFF 3FFFFF 3FFFFF (x24)를 기반으로 한 지터 테스트용 음원 생성기입니다.
사실 이 코드는 제 발상을 구현할 수 있을지 알아보기 위한 테스트 코드입니다.
구상은 여러가지로 해놓았는데... 과연 작업을 할 시간을 낼 수 있을지 모르겠네요.
다양한 샘플링레이트에 대응할 수 있도록 1/4 square wave를 만드는 방법을 찾고 있습니다.
=== 다음 라인부터 소스코드입니다 ===
#!/usr/bin/python
# -*- coding: utf-8 -*-
import wave
nchannels = 2
framerate = 48000 # Hz
depth = 24 # bit
sampwidth = depth / 8
duration = 10 # seconds
# 8 = len(jsignal)
iteration = int(round((duration * framerate) / (8 * 24)))
jsignal = [[0xc0, 0xc0, 0x40, 0x40], [0xc0 - 1, 0xc0 - 1, 0x40 - 1, 0x40 - 1]]
least_byte = [0x00, 0xff]
print 'make signal'
signal = ''
#for i in range(iteration): # iteration
for j in range(2): # sup index of jsignal
for k in range(24): # x 24
for l in range(4): # sub index of jsignal
for m in range(nchannels):
v = jsignal[j][l] << depth - 8
for n in range(sampwidth-1): # least bytes
v |= least_byte[j] << (((n+1) * 8) - 8)
signal += wave.struct.pack('q', v)[:sampwidth]
signal *= iteration
print 'write file'
file = wave.open('jtest.wav', 'wb')
# set params
file.setnchannels(nchannels);
file.setsampwidth(sampwidth);
file.setframerate(framerate);
# write
file.writeframes(signal)
file.close()
print 'file written'