# Path: pylsdj/bread_spec.py
# NUM_SYNTHS = 16
# 
# WAVES_PER_SYNTH = 16


import json
from .bread_spec import NUM_SYNTHS, WAVES_PER_SYNTH
    @phase_amount.setter
    def phase_amount(self, value):
        self._params.phase_amount = value
        self._overwrite_lock.disable()

    @property
    def vertical_shift(self):
        """the amount to shift the waveform vertically"""
        return self._params.vertical_shift

    @vertical_shift.setter
    def vertical_shift(self, value):
        self._params.vertical_shift = value
        self._overwrite_lock.disable()

class WaveFrames(object):
    def __init__(self, song, synth_index, wave_index, overwrite_lock):
        self._frames = song.song_data.wave_frames[synth_index][wave_index]
        self._overwrite_lock = overwrite_lock

    def __getitem__(self, index):
        return self._frames[index]

    def __setitem__(self, index, value):
        self._frames[index] = value
        self._overwrite_lock.enable()

class Waves(object):
    def __init__(self, song, synth_index, overwrite_lock):
        self._waves = [WaveFrames(song, synth_index, wave_index, overwrite_lock)

# Path: pylsdj/bread_spec.py
# NUM_SYNTHS = 16
# 
# WAVES_PER_SYNTH = 16


# Path: pylsdj/synth.py
import json
from .bread_spec import NUM_SYNTHS, WAVES_PER_SYNTH

    @phase_amount.setter
    def phase_amount(self, value):
        self._params.phase_amount = value
        self._overwrite_lock.disable()

    @property
    def vertical_shift(self):
        """the amount to shift the waveform vertically"""
        return self._params.vertical_shift

    @vertical_shift.setter
    def vertical_shift(self, value):
        self._params.vertical_shift = value
        self._overwrite_lock.disable()

class WaveFrames(object):
    def __init__(self, song, synth_index, wave_index, overwrite_lock):
        self._frames = song.song_data.wave_frames[synth_index][wave_index]
        self._overwrite_lock = overwrite_lock

    def __getitem__(self, index):
        return self._frames[index]

    def __setitem__(self, index, value):
        self._frames[index] = value
        self._overwrite_lock.enable()

class Waves(object):
    def __init__(self, song, synth_index, overwrite_lock):
        self._waves = [WaveFrames(song, synth_index, wave_index, overwrite_lock)

                       for wave_index in range(WAVES_PER_SYNTH)]