Source code for AccelBrainBeat.brainbeat.binaural_beat

#!/user/bin/env python
# -*- coding: utf-8 -*-
import struct
from AccelBrainBeat.brain_beat import BrainBeat


[docs]class BinauralBeat(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)): data = struct.pack( "2f", left_chunk[i] * volume, right_chunk[i] * volume ) 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)): left_int_chunk = int(left_chunk[i] * bit16 * volume) right_int_chunk = int(right_chunk[i] * bit16 * volume) data = struct.pack( "2h", left_int_chunk, right_int_chunk ) frame_list.append(data) return frame_list