Transcription workflow

I hate to say this, but I hate Musescore. I want to like it, but in general I can’t stand the whole WYSIWYG workflow. I spend more time setting up stuff than actually transcribing. I don’t think this workflow actually solves that - I really don’t have the habit of actually writing down transcriptions. Usually, I just take small snippets of a solo, play them once or twice and forget about them (I know, I know… not actually doing much this way).

Anyway, as a way to procrastinate I created this small script to fool myself into transcribing more solos. Maybe someone finds it useful.

Requirements

I use:

The actual workflow

Get this somewhere you can call it easily (.bashrc, maybe?):

compile_lily(){
        lilypond $1.ly
        okular $1.pdf --unique & fluidsynth -a alsa -m alsa_seq -l -i /usr/share/soundfonts/FluidR3_GM.sf2 $1.midi
}

setup_transcription(){
	# $1 = song name
	# $2 = youtube url with video of song	
	mkdir $1 
	cd $1 
	youtube-dl -x --audio-format mp3 $2 
	# change output name 
	mv *.mp3 $1.mp3
	cat > $1.lily <<"EOF"

\include "swing.ly"
\header {
    title = "Transcription"
    composer = ""
}
\language "english"
\paper {
        #(set-paper-size "a4")
}

        \score {
		\tripletFeel 16 {
               	\relative c' {
                #music here
                e16 fs g a fs8 d16 e4 
        }}

        \layout {}
        \midi {}
}
EOF
}

With this in place, setting up a folder to start transcribing with lilypond should be as easy as:

setup_transcription whatever_song https://youtube.com/whatever

From then on, just open the mp3 and start transcribing. Once you are happy with the result, modify the .ly file and run lily_compile every one in a while to verify you are on the right track. It should - Compile the PDF and open it - Play the resulting midi though fluidsynth (in case your sight-reading is as bad as mine)

Bonus points: bind to a key, such as F1.

Open a terminal, press Ctr + v and the key you want to bind to. It will print something like ^[OP. Then, do:

bind '"\eOP":"compile_lily filename\n"'`

Where \e is scape (meaning, it equals ^[). Pressing that key now triggers compile_lily with a filename and a new line (to save you an intro key stroke).