예제 #1
0
def test_als120():
    fname = f'{TESTS_DIR_ALS}/example-120.als'
    with open(fname, 'rb') as f:
        proj = load_project(fname, f, theoretical=True)
        proj.parse()
        markers = proj.markers

    assert proj.version == AbletonSetVersion(
        major='5',
        minor='10.0_377',
        minorA=10,
        minorB=0,
        minorC=377,
        schema_change_count='3',
        creator='Ableton Live 10.1.7',
        revision='f7eb4c8e0a49802359f4e078b341fdfb9d547a77')

    assert [m.time for m in markers] == [
        0.0, 200.0000133333342, 216.00001440000096, 324.00002160000145,
        464.0000309333354, 604.0000402666693, 716.0000477333365,
        840.0000560000037, 1000.000066666671, 1189.053707412938,
        1392.000092800006, 1512.0001008000067, 1656.0001104000073,
        1792.0001194666745, 3904.0002602666837
    ]
    assert [m.text for m in markers] == [
        'mirvs - his track你好', 'comfort - other track', 'comfort - yo',
        'sh1n - track', 'stm - ggr', 'heart - ID', 'ID - ID', '', '',
        'track - this track', 'another track', 'another track',
        'another track', 'tids track', 'sd'
    ]
    assert [format_time(m.time) for m in markers] == [
        '00:00', '03:20', '03:36', '05:24', '07:44', '10:04', '11:56', '14:00',
        '16:40', '19:49', '23:12', '25:12', '27:36', '29:52', '65:04'
    ]
예제 #2
0
def test_hours_pad():
    assert format_time(60 * 60, hours_fmt=True, hours_pad=False) == '1:00:00'
    assert format_time(60 * 60 + 71, hours_fmt=True,
                       hours_pad=False) == '1:01:11'
    assert format_time(60 * 60 * 9, hours_fmt=True,
                       hours_pad=False) == '9:00:00'
    assert format_time(60 * 60 * 10, hours_fmt=True,
                       hours_pad=False) == '10:00:00'
    assert format_time(60 * 60 * 10 + 59 * 60 + 59,
                       hours_fmt=True,
                       hours_pad=False) == '10:59:59'
    assert format_time(60 * 60 * 10 + 59 * 60 + 59 + 1,
                       hours_fmt=True,
                       hours_pad=False) == '11:00:00'
    assert format_time(59 * 60, hours_fmt=True, hours_pad=False) == '0:59:00'
    assert format_time(59, hours_fmt=True, hours_pad=False) == '0:00:59'
    assert format_time(0, hours_fmt=True, hours_pad=False) == '0:00:00'
예제 #3
0
def test_als140():
    fname = f'{TESTS_DIR_ALS}/example-140.als'
    with open(fname, 'rb') as f:
        markers = extract_markers(fname, f, theoretical=True)

    times = ['00:00', '02:51', '03:05', '04:37', '06:37', '60:20']
    assert [format_time(m.time) for m in markers] == times

    assert [m.time for m in markers] == [
        0.0, 171.42857142857142, 185.14285714285714, 277.7142857142857,
        397.71428571428567, 3620.5714285714284
    ]
    assert [m.text for m in markers] == [
        'mirvs - his track你好', 'comfort - other track', 'comfort - yo',
        'sh1n - track', 'stm - ggr', 'sd'
    ]
예제 #4
0
def main():
    fname = args.file
    try:
        # markers are raw time data. it's up to the client to determine how to
        # present it
        with open(fname, 'rb') as f:
            # markers = dawtool.extract_markers(fname, f)
            proj = load_project(fname, f, theoretical=args.theoretical)
            proj.parse()
            # print(len(proj.tempo_automation_events))
            markers = proj.markers
    except FileNotFoundError:
        print(fname, 'not found')
        return
    except UnknownExtension as e:
        print('unknown ext', e)
        return
    except ValueError as e:
        print('Could not extract markers from', fname, ':', e)
        raise

    if args.verbose:
        proj.dump()

    if args.markers:
        # There was no error, but no markers
        if not markers:
            print('Could not find markers in', fname)
            return

        for m in markers:
            print(format_time(m.time, args.hours, precise=args.imprecise),
                  m.text)

    if args.emit:
        print(proj.emit(), end='')
예제 #5
0
def test_format_time_under_hour():
    assert format_time(59 * 60) == '59:00'
예제 #6
0
def test_precise():
    assert format_time(59.1, precise=True) == '00:59.100'
    assert format_time(59.1) == '00:59'
    assert format_time(60.1, precise=True) == '01:00.100'
    assert format_time(60.1) == '01:00'
예제 #7
0
def test_format_time_hour_hour_fmt_precise():
    assert format_time(60 * 60, precise=True) == '60:00.000'
예제 #8
0
def test_format_time_over_hour():
    assert format_time(60 * 60) == '60:00'
예제 #9
0
def test_format_time_min_precise():
    assert format_time(60, precise=True) == '01:00.000'
예제 #10
0
def test_format_time_min_hour_fmt():
    assert format_time(60, True) == '00:01:00'
예제 #11
0
def test_format_time_min():
    assert format_time(60) == '01:00'
예제 #12
0
def test_format_time_under_min_hour_fmt():
    assert format_time(59, True) == '00:00:59'
예제 #13
0
def test_format_time_under_min():
    assert format_time(59) == '00:59'