Nowadays, I'm so used to my new workflow of writing a script that checks my music, creates a LilyPond file (as well as a .musicxml to work in MuseScore4), and generating a PDF using lilypond.
Can you expand on this a little bit more ? I hate my workflow for scoring, and I'd like to have something a little more efficient for generating multiple parts/etc.
- In MuseScore create way more parts than you need. This serves as a temporary work space.
- Save tons of files. E.g. if I'm working on "Composition_00341" I save bunch of files like "Compo_00341_{DATE}_AUDIO", "Compo_00341_{DATE}_ALL_PARTS", "Compo_00341_{DATE}_VIOLIN_I", "Compo_00341_{DATE}_SLIDES". They all have different purposes, such as one having optimized audio playback, the other for all parts, others for single parts, and one for 1920x1080 screens (to make a score video), etc.
- Use your notation software for your benefit. If you need more space, use large paper sizes (such as A0 etc), add more parts, add colors, add notes, leave more space between parts for more notes, add more measure numbers (so you can reference them in your notes) etc... I also use quirky, personal notation for my own purposes that I remove out in the final draft. E.g. I don't like seeing 8va, 8vb lines, or alto clef, so I only use F and G clefs with 8 or 15 on-top/bottom to simulate 8va/8vb/alto clef. Ultimately, these need to be removed since musicians prefer 8va/8vb/alto clef (e.g. for viola). Also some musicians (such as flutists) prefer seeing tons of ledger lines instead of 8va, so you need to think about these things, but while I'm composing I want to see an octave G-clef (G clef with 8 on top). It's easy to fix these things in MuseScore with a few clicks.
My new workflow is like this, most of this is still work in progress but I really really like it as it makes me very productive not just as a composer but also as a notation engraver:
- Custom python script. Use musicxml [1], mido [2] and lilypond [3]. They all serve different purposes.
- First, I start my compositions with sketching some ideas in MuseScore, or real-life in piano, this is just the old-school centuries old workflow. As most musicians would agree, usually there is no replacement to playing an idea on the piano, or sitting down and listening to it in your head. Philip Glass says that making music is the same activity as listening to music (except in your head!).
- Second, write parts of the composition into this script. I like this script checking certain things I don't want to make mistakes in and are too time consuming to check one note at a time (which is likely the best way to do this). For example, counterpoint. I also (occasionally) use 12-tone rows (or other forms of Serialism) and this can be checked too. Ultimately, these matter as much as you want them to matter. I also like using some "algorithmic composition" ideas, to quickly mock up some form I think about and generate a composition with that to test it out. You can use it as a battleground of sorts.
- Third, this script generates 3 main things:
- - A MIDI file for audio playback. Now, I personally think MIDI is absolutely horrendous and imho anything other than keyboard instruments (namely piano, organ, celesta, and harpsichord) sounds unusable (unusable = more confusing than not listening to it in the first place). This is fine for my purposes, as you can work on orchestration later in MuseScore/lilypond. This is just the pre-alpha draft.
- - A lilypond file. This generates a PDF. This can be the final PDF you give to the musician(s), or you can generate it through MuseScore.
- - A musicxml file. This can be used to import your music into MuseScore. You want to do this if you further want to work on your notation in MuseScore, or use MuseScore playback. Another option is to customize the lilypond file. Now, I know that some composers prefer using lilypond, I personally like MuseScore better.
That's a really slick workflow and I totally agree that writing music is just listening to music in your head. :)
I write a lot of multi-part scores (i.e for big band and small jazz combos) and the idea of linting to check for things like note doubling or parallel fifths is a dream of mine.
When you say write parts of this composition into the script - what form does that take ? Is it midi ? Is it score data generate by a musescore plugin ? This workflow sounds amazing and I'm really curious how you get from point A to the intermediate point.
> When you say write parts of this composition into the script - what form does that take
It's a custom programming language. I have many designs for it, but unfortunately almost nothing is implemented yet. Only exactly what I need is implemented. Currently, it looks very similar to lilypond language with some lisp-y compute help because lisp is easy to implement. E.g. I can do:
I like using serialistic techniques so I use this to check my rows, also note when I'm violating rows. Another thing I do is to highlight parallel perfect fifths in red so that I can change them if I desire. I also detest vertical minor seconds, and highlight them in red too just in case I accidentally add a minor second between parts. I also think major/minor thirds below E below mid C are too muddy on piano, so highlight them as well.
I've been looking into doing some automated analysis, and recentrly came across the Humdrum tools [0], and fell into the rabbit hole. I suspect that the type of 'linting' you'd like to do can be done with them. In any case, totally worth a look.
Same here... It's pretty mind blowing; I was getting ready to reinvent the wheel, but I think I'll be better off spending some time learning these tools
This is interesting, thanks! I use lilypond heavily, but not really as part of the composition workflow. So you are able to work in musescore, export, and pull the results into lilypond? I didn't think the musicxml story was very strong for lilypond.
Unfortunately lilypond doesn't support musicxml at all, which is a bummer. I do the opposite route. MuseScore -> musicxml -> my script -> lilypond/musicxml -> PDF/MuseScore.
I need this because, sometimes I want auto-generated annotations to my score. Say I write a phrase in MuseScore, I'm interested in the script adding a text with chord names, or pitch Set Class etc. MuseScore can do this with plugins, but I personally find MuseScore plugin system very buggy and hard to program. Python is much much much better and musicxml is pretty easy to deal with.
Can you expand on this a little bit more ? I hate my workflow for scoring, and I'd like to have something a little more efficient for generating multiple parts/etc.