spiral

Makefile

.PHONY: wav mp3 clean

wav: spiral.wav
mp3: spiral.mp3

clean:
    git clean -Xdf

%.mp3: %.wav %.id3
    tz tag $<
    ffmpeg -y -i $< $@

%.wav: %.mel
    tz mel $< $@

%.mel: %.py
    python3 $< > $@

spiral.id3

TIT2 Downward Spiral of Fifths
TALB Tonbandfetzen
TPE1 Jan Berges
APIC ../../logo/Tonbandfetzen.png

spiral.py

#!/usr/bin/env python3

letters = 'FCGDAEB'
signs = ['#b'[int(n < 0)] * abs(n) for n in range(-8, 9)]
notes = [letter + sign for sign in signs for letter in letters]
notes = notes[::-1] + notes

tracks = ['[10', '[6', '[2', ']2', ']6', ']10']
sounds = [(2, 'cubic'), (3, 'major')]

print('Tpyth')
print('|%d' % len(tracks))

print('M')
for octave, wave in sounds:
    print('~%s' % wave)
    for n, track in enumerate(tracks):
        print('W "%d:%d %s' % (n, len(tracks), track))
        for note in notes[n::len(tracks)]:
            print("%s%d <20''>20'`" % (note, octave))