I used Tonal Serialism to write a Mazurka
The Mazurka: Tonal serialism I’ve used what I dub “tonal serialism” for this piece. Rather than using a 12 note tone row with all semitones of the octave, as is customary for regular serialism, I’ve used a row of 7 distinct diatonic pitches, without specifying any accidentals, allowing it to be easily used in a tonal context. I’ve used the series in the melody only, allowing the harmony the flow freely, accompanying the melody....
Compost update December '22: Match, If and Booleans
It’s been due time to add control flow into Compost. We have it now! Match Expressions Match expressions allow you to use different flows based on some element’s type. Here’s an example: lets StringOrNothing(thing: @String | ?): String match matchedThing: thing @String: matchedThing.String ? : 'Nothing' It takes a thing that implements the String trait or not. If it implements String, it returns that string. Otherwise it returns the String ’nothing'....
Analysing the second page of Bach's French Ouverture BWV 831
After the opening section which I’ve analysed here, a fugue starts, which I will analysis in this post. As is common to fugues, this fugue starts with the subject in one voice, which is answered by the subject on the dominant in another voice, accompanied by a countersubject. After a short transition section, the subject is played in the tonic in the bass voice, accompanied by the countersubject and some other contrapuntal material....
Analysing the first page of Bach's French Ouverture BWV 831
The beginning of Bach’s Ouverture in B minor is built from sequences hidden in plain sight. Sequences are parts of music that are repeated an interval higher or lower. In this particular piece, single notes in the melody and in the bass are repeated sequencially, moving in parallel most of the time. Due to embellishments and octave displacement, the sequences might not immediately be clear to the ear, but once you’ve seen my analysis, you’ll be convinced that this page of Bach’s music is fundamentally based on sequences....
Creating a Compiler for Compost using Rust, Part 1: Lexical Analysis
I’ve set out to write a compiler for Compost, the experimental programming language I came up with about a month ago. The repository for it can be found on GitHub and there is also a playground available where you can try out the language. This is the first part of a series of blogs detailing my experience of writing my first compiler. Structure of a Compiler Before embarking on this journey, I did some research on how compilers normally work....