I'm sure we all had our share of New Year's resolutions, a list of things that we may or may not ever accomplish! Mine, this time, was one that I hope I'll manage to pull through... I decided to make 2020 the year I finally focus on the Symphony and Symphonic Poem I always wanted to write, and that in part I've composed already (but never written down). I announced this publicly among friends too, which means that this is supposed to be the trigger that sparkles, using the power of shame, my otherwise very procrastinatory engine
While I started with both already, I knew I had to first chew something shorter and more manageable to get a little practice with the tools, and more importantly train and improve my orchestration skills, which is how the Waltz I'm sharing here came to light. I actually did compose this almost 20 years ago, and it was part of a larger (non-orchestral) track I since lost; since I never forgot it, I decided to sit down to rewrite and orchestrate it, as an excercise for what's to come:
https://soundcloud.com/lminiero/daydreaming-waltz
It's short as it's basically the same theme repeated twice: once with very few instruments (violas, horns, pizzicato celli and basses), and then joined by more on the way. You'll likely find it very derivative and, I suspect, quite predictable as well (I've been listening to it in mind for 20 years so I can't tell anymore ), and I'm not particularly happy with the end result, but I hope you'll enjoy it nevertheless! Just for the fun of it, I added a small bit of intro and outro to highlight the fact this waltz comes from daydreaming... The main point of this post was to share the process I followed to come up with this, in order to get some feedback on where I could improve.
Long story short (if you don't want to read the whole description below), I used MuseScore to score the whole thing, exported to a MIDI file, imported the MIDI tracks in Ardour, assigned the right Virtual Playing Orchestra (VPO) SFZ instrument to each track using LinuxSampler, attempted some panning to simulate orchestra placements, and added a bit of reverb with Dragonfly Reverb. While this sounds like a relatively straightforward process, it was a huge pain, especially in Ardour: the Ardour/LinuxSampler combo basically crashed or freezed Ardour after a few seconds any time I tried to listen to the piece, something that in the past only happened with some specific SF2 I then learned to avoid. 95% of the times it also crashed even when I tried to just export the track. It may be my poor laptop is just not powerful enough to handle ~20 SFZ tracks, but with 4 cores and 8GB of ram I thought it could do a little better than that. To get the audio for the track I published I had to do several attempts at exporting, which means it's by all means not a viable solution, especially for much longer tracks where experimenting with mixing may be much more important. The options I see for the future are the following:
- Try a better orchestral template in Ardour: the work Michael Willis has shared in a recent post may be an option, so I'm quite interested to see if it might help overcome the challenges I had (unless it really is an hardware limitation)
- Render MIDI tracks to audio one at a time in Ardour, and then get rid of the MIDI (painful)
- Render MuseScore staves to separate audio tracks from MuseScore itself, and then import them in Ardour as audio (a bit painful too, since MuseScore doesn't support it; I'd have to set the right SFZ in the Sequencer, "solo" each staff one at a time, and do separate exports; would give less flexibility in fine tuning in Ardour)
- Buy a more powerful laptop, I guess
That said, if you're interested in a longer and more detailed here, here it follows. As anticipated, this gave me the opportunity to start looking into MuseScore. This past year I've used Lilypond a lot, and I love it: I've never written ideas down faster than I did with Lilypond, and I still use it regularly as a musical note-taker any time I come up with a new idea. That said, it is more awkward to use when you have to work on a larger scale project, when you have to move/copy things around, use placeholders for things you know won't be added until later, or more in general preview things that exceed the limits of generic MIDI files. This led me to test MuseScore, which a lot of people recommended, especially for classical scores: I particularly liked the idea that it provided ways to automatically use different sounds for different instrument "profiles" (e.g., pizzicato or tremolo strings).
I must say that on the scoring part I was pleasantly surprised: I thought I wouldn't be able to go back to a WYSIWYG score editor, after falling in love with Lilypond, but the fact that with MuseScore you can get basically everything done with shortcuts and the keyboard was quite the revelation. I'm still not very fond of the "IDE"-like user interface (the fact that properties appear when you select something, like it's a button in a GUI editor, is something I never liked much, and I feel it makes it harder to control rather than easier), and I think some features are a bit intricate (but that may be because I still have much to learn), but all in all it was a very smooth experience, and I ended up writing things quite fast.
On the sound part I have mixed feelings. MuseScore comes with a soundfont of its own that has a decent quality, and I think quite good for previews and getting an idea of what you're writing will sound like in the end. The problem comes when you want to do something more than that. To start, getting different sounds for some instruments was a bit of a pain, as while some instruments have built-in alternatives (I mentioned pizzicato and tremolo for strings, for instance), if you want, let's say, a muted horn, or want to use slow strings instead of fast strings, the process is a bit convoluted, even though I got there eventually. But the Mixer and Synthetizer part leave a bit to be desired, and I feel they could be improved. The Synthetizer does support SFZ via a feature called Zerberus, which is cool: it also makes it quite unusable when you have ~20 tracks, though, and it's very slow to load them all. This is reasonable, due to the hardware limitations, and as anticipated the default soundfont is enough for the scoring part, but it's relationship to the Mixer is what I currently find a bit lacking. Specifically, AFAICT there's no way to jump, let's say, from the default configuration (quick scoring) to one I might have saved where I've set different .SFZ files for each instead (good preview). It does provide a way to save it in the score file, but then that becomes the default, and so you have no way to switch between the two, and the process of changing the soundfont for each intrument is very long and cumbersome.
This is why I chose to stick to the default soundfont in MuseScore, and leave the rendering process to Ardoud instead. As I've anticipated, though, that proved to be quite a failure for a few different reasons. Before the issues I documented already, in fact, there was another problem I anticipated: while MuseScore does support switching the instrument on a staff (e.g., go from fast strings to pizzicato, and then back to fast strings), this is far from trivial in Ardour. To be more precise, Ardour does support instrument changes, but apparently LinuxSampler doesn't: if you've set LinuxSampler as a plugin for that MIDI track, then you're stuck with it. This forced me to copy the tracks that had changes to new tracks, and manually trim the notes that didn't belong from both, which was a mess even for this relatively simple score (I only had to do it towards the end for violins and violas, that all become pizzicatos). The real source for endless frustration was the mixing part though, where I simply couldn't even play just a few seconds: even if I solo-ed some instruments, Ardour would freeze or crash, which meant all I did with the track (panning, intro, outro), was basically done by guess-work. The frustration became even higher when the same happened when exporting the track, which I thought would be fine instead: sometimes it would die 30s in the track, other times 1m45s, other times who know when. It was basically a try-and-try-again-until-you succeed process, which felt very bad. Be it because of the hardware, or because Ardour+LinuxSampler just aren't that stable when you exceed certain limits, that won't the way to go.
I'll probably experiment with the "separate audio tracks exported in MuseScore" option first, if not because it might be the easiest to accomplish: on the plus side, this would take care of instrument changes automatically (MuseScore would do that), and apparently MuseScore does support WAV and FLAC as high quality output options. I expect that to be a quite suboptimal solution, though, for a few different reasons:
- As I anticipated, importing a soundfont and setting it in the Mixer is a bit painful in MuseScore, even if I do it for a single track; I'd then have to solo that track and export to audio one track at a time.
- While WAV and FLAC are supported, I'm not sure I can trust the decisions the Mixer will take, in particular with respect to normalization and other things that may invalidate any effort on dynamics: this might make the mixing in Ardour harder, not easier.
- Having to work with audio streams in Ardour would prevent me from making tweaks to the MIDI when needed: e.g., fine tune some velocities, get rid of some notes or add new ones, etc, all things that would require regenerating the whole track from scratch in MuseScore and replace it in Ardour.
If you've reached this far, thanks!