Source code for AccelBrainBeat.brainbeat.monaural_beat
#!/user/bin/env python
# -*- coding: utf-8 -*-
import struct
from AccelBrainBeat.brain_beat import BrainBeat
[docs]class MonauralBeat(BrainBeat):
'''
具象クラス
バイノーラルビートとモノラルビートの具象的差異を下位クラスで記述する
Template Method Patternの構成
'''
[docs] def write_stream(self, stream, left_chunk, right_chunk, volume):
'''
具象メソッド
モノラルビートを生成する
Args:
stream: PyAudioのストリーム
left_chunk: 左音源に対応するチャンク
right_chunk: 右音源に対応するチャンク
volume: 音量
Returns:
void
'''
if len(left_chunk) != len(right_chunk):
raise ValueError()
for i in range(len(left_chunk)):
chunk = (left_chunk[i] + right_chunk[i]) * volume
data = struct.pack("2f", chunk, chunk)
stream.write(data)
[docs] def read_stream(self, left_chunk, right_chunk, volume, bit16=32767.0):
'''
具象メソッド
wavファイルに保存するモノラルビートを読み込む
Args:
left_chunk: 左音源に対応するチャンク
right_chunk: 右音源に対応するチャンク
volume: 音量
bit16: 整数化の条件
Returns:
フレームのlist
'''
if len(left_chunk) != len(right_chunk):
raise ValueError()
frame_list = []
for i in range(len(left_chunk)):
chunk = int((left_chunk[i] + right_chunk[i]) * bit16 * volume)
data = struct.pack("2h", chunk, chunk)
frame_list.append(data)
return frame_list