20131007

From XPUB & Lens-Based wiki
Revision as of 15:06, 7 October 2013 by Chen Junyu (talk | contribs) (Created page with "== BIT == binary 二进制的,二元的 digit 数字 Binary digit bit is general tool of python to open files,count... Bit shift: == Generating "Raw" Audio == <source...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

BIT

binary 二进制的,二元的 digit 数字
Binary digit bit is general tool of python to open files,count...
Bit shift:

Generating "Raw" Audio

import wave, struct

filename = "output.wav"
nframes=0
nchannels=1
sampwidth=2 # in bytes so 2=16bit, 1=8bit
framerate=44100
bufsize=2048

w = wave.open(filename, 'w')
w.setparams((nchannels, sampwidth, framerate, nframes, 'NONE', 'not compressed'))

max_amplitude = float(int((2 ** (sampwidth * 8)) / 2) - 1)

# split the samples into chunks (to reduce memory consumption and improve performance)
#for chunk in grouper(bufsize, samples):
#    frames = ''.join(''.join(struct.pack('h', int(max_amplitude * sample)) for sample in channels) for channels in chunk if channels is not None)
#    w.writeframesraw(frames)

freq = 440
# this means that FREQ times a second, we need to complete a cycle
# there are FRAMERATE samples per second
# so FRAMERATE / FREQ = CYCLE LENGTH
cycle = framerate / freq


data = ''
for i in range(10):
    for x in range(100):
        data += struct.pack('h', int(0.5 * max_amplitude))
    for x in range(100):
        data += struct.pack('h', int(-0.5 * max_amplitude))

w.writeframesraw(data)

w.close()