コード例 #1
0
ファイル: test_track.py プロジェクト: marksweiss/omnisound
def test_track_section_map(section):
    # Case: falsey track.name, not added to map
    section_name = ''
    section.name = section_name
    track = Track(to_add=section)
    assert not track.section_map
    # Case: has track.name, added to map
    section_name = 'section'
    section.name = section_name
    track = Track(to_add=section)
    assert track.section_map
    assert track.section_map[section_name] == section
コード例 #2
0
ファイル: test_track.py プロジェクト: marksweiss/omnisound
def test_set_tempo(measure_list, meter):
    track = Track(to_add=measure_list, instrument=INSTRUMENT, meter=meter)
    track.tempo = int(TEMPO_QPM / 2)
    expected_starts = [0.0, 2 * DUR, DUR * 4, DUR * 6]
    for measure in track:
        for note in measure:
            assert note.duration == pytest.approx(DUR * 2)
        assert [note.start for note in measure] == expected_starts
コード例 #3
0
ファイル: test_track.py プロジェクト: marksweiss/omnisound
def test_track(performance_attrs, measure_list, meter, swing, section):
    # Test: List[Measure] and no instrument or performance_attrs
    # Expect a Track with measures, no instrument, no pa and Notes not having reassigned instrument or pa
    track = Track(to_add=measure_list, name=TRACK_NAME)
    assert track.measure_list == measure_list
    assert track.name == TRACK_NAME
    assert track.instrument == Track.DEFAULT_INSTRUMENT
    assert track._meter is None
    assert track._swing is None
    assert track._performance_attrs is None

    # Test: Section and no instrument or performance_attrs
    # Expect a Track with measures, no instrument, no pa and Notes not having reassigned instrument or pa
    track = Track(to_add=section)
    assert track.measure_list == section.measure_list
    assert track.instrument == Track.DEFAULT_INSTRUMENT
    assert track._meter is None
    assert track._swing is None
    assert track._performance_attrs is None

    # Test: List[Measure] with instrument, meter, swing and performance_attrs
    # Expect a Track with measures and all other attributes
    track = Track(to_add=measure_list,
                  instrument=INSTRUMENT,
                  meter=meter,
                  swing=swing,
                  performance_attrs=performance_attrs)
    assert track.measure_list == measure_list
    assert track.instrument == INSTRUMENT
    assert track._meter == meter
    assert track._swing == swing
    assert track._performance_attrs == performance_attrs

    # Test: List[Measure] with instrument, meter, swing and performance_attrs
    # Expect a Track with measures and all other attributes
    track = Track(to_add=section,
                  instrument=INSTRUMENT,
                  meter=meter,
                  swing=swing,
                  performance_attrs=performance_attrs)
    assert track.measure_list == section.measure_list
    assert track.instrument == INSTRUMENT
    assert track._meter == meter
    assert track._swing == swing
    assert track._performance_attrs == performance_attrs
コード例 #4
0
ファイル: sequencer.py プロジェクト: marksweiss/omnisound
    def add_track(self,
                  track_name: str = None,
                  instrument: Union[float, int] = None) -> Track:
        validate_type('track_name', track_name, str)
        validate_type_choice('instrument', instrument, (float, int))

        track_name = track_name or str(self._next_track)
        track = Track(meter=self.meter,
                      swing=self.swing, name=track_name,
                      instrument=instrument)
        self.append(track)
        self.num_tracks += 1
        self._track_name_idx_map[track_name] = self._next_track
        self._next_track += 1
        return track
コード例 #5
0
ファイル: test_track.py プロジェクト: marksweiss/omnisound
def test_init_set_get_instrument(measure_list, section):
    track = Track(to_add=measure_list, instrument=INSTRUMENT)
    for measure in track:
        for note in measure:
            assert note.instrument == INSTRUMENT
    assert track.get_attr('instrument') == [1, 1, 1, 1] + [1, 1, 1, 1]
    assert track.instrument == INSTRUMENT

    new_instrument = INSTRUMENT + 1
    track.instrument = new_instrument
    for measure in track:
        for note in measure:
            assert note.instrument == new_instrument
    assert track.instrument == new_instrument
    assert track.get_attr('instrument') == [
        new_instrument, new_instrument, new_instrument, new_instrument,
        new_instrument, new_instrument, new_instrument, new_instrument
    ]
コード例 #6
0
                  beat_note_dur=BEAT_DUR,
                  tempo=TEMPO_QPM)
    swing = Swing(swing_range=SWING_RANGE)
    measure = Measure(num_notes=NUM_NOTES,
                      meter=meter,
                      swing=swing,
                      mn=DEFAULT_NOTE_CONFIG())
    for i in range(NUM_NOTES):
        measure[i].instrument = INSTRUMENT_1_ID
        measure[i].start = (i % NUM_NOTES) * DUR
        measure[i].duration = DUR
        measure[i].amplitude = BASE_AMP
        measure[i].pitch = PITCH
    measure.apply_swing()
    track = Track(to_add=[measure],
                  name='ostinato',
                  instrument=INSTRUMENT_1_ID)
    song = Song(to_add=[track], name=SONG_NAME)

    orchestra = CSoundOrchestra(instruments=INSTRUMENTS,
                                sampling_rate=SR,
                                ksmps=KSMPS,
                                num_channels=NCHNLS)

    # Play song with CSD player
    player = CSoundCSDPlayer(csound_orchestra=orchestra, song=song)
    player.set_score_header_lines(SCORE_HEADER_LINES)
    player.play()
    # Comment this out to test code below it
    # player.loop()
コード例 #7
0
ファイル: test_track.py プロジェクト: marksweiss/omnisound
def track(measure_list, performance_attrs):
    return Track(to_add=measure_list,
                 name=TRACK_NAME,
                 performance_attrs=performance_attrs)