J. Knapka has been hard at work developing abcsound. I have actually taken it for more than one test drive. However, today, I completed a small scale compositional project using it. Not bad for an alpha stage module!
The Composition
If you are a newcomer to Csound and thought understanding the thousand or so opcodes was an uphill struggle, just skip this section, because I'm going to talk about my composition methods.
Many times I develop ideas from combinations of pitch class sets. In this case, I took two reduced sets -- the prime set 015 and its inverse, 045 -- and constructed the first melodic line, a stream of eighth notes. Combined, the two sets make the prime set 0145. (I could also have transposed the inverse set to some other value, say 378, but my ears told me 0145 was the 'right' superset.)
I played various combinations of the set until I could feel the next set forming. When I analyzed my playing, I found I had shifted down to a new set of notes, but kept the mirror image structure. The new prime set was 027, it's partner was 057, and it made superset 0257.
Now to figure out the harmony. My modern style is to keep the tonality vague, to keep my options open until the melodic line demands one choice or the other. The final voicing of the first set (0145) sounded best transposed to 9A12 (A Bb C# D). This could be interpreted (my choice, on playing) as from the D augmented, the D harmonic minor, or even the D harmonic major scale.
I liked it. It all comes down to the F: if it's F natural, it switches on harmonic minor; if it's F#, it's harmonic major. And D augmented remains the middle ground!
The second chord is not as spectacular -- when I worked it out, I'd gone to an inversion of one of my favorite types of chords. 0257 transposed to 7902 gave G, A, C, D -- respelled, just a quartal sequence, A D G C. Immediately I thought of two options for a bass note:
- E, to imply a balanced quartal chord or E phrygian (G7/E).
- F, to imply F69.
That's another favorite element of mine -- using a chord that a single note change in the bass can flip from one mood to another.
The Voicing
I originally composed the above in real time, using my keyboard and Rosegarden. The thing I like about Rosegarden is that the music is recorded in the way I think of music -- as standard notation. I use pitch class sets for note choice, true, but music isn't music without rhythm. No system works better for visual representation of melody-and-rhythm than standard notation (in my opinion).
It's a good way to record ideas, and the ability to print out these ideas is certainly an advantage. However, in the future, I hope to develop some algorithmic strategies for composing -- morphing between different sets and interpretations.
Sometimes it's just easier to write the idea down as a text file. If I were away from my keyboard, I could write it down and send it to myself via email.
So I tried out abcsound. It worked quite well -- faster than me, actually, because once I had the .abc file written (below, included as p01.abc_.txt), abcsound processed it without error the first time. I spent the next two hours designing the voices.
Such is the life of a Csounder ;-)
Anyway, check it out. I've also included the fully functional .csd file, below. This song, which I'm calling 'Composition P01' for now, may make it onto the next album (in a vastly different form, of course).
Suggestion Box
Here's some stuff I encountered while using abcsound, and my suggestions for future work:
First, if the default note length is set to L:1/8, abcsound interprets the Q:117 directive to mean '117 of the default note per minute.' This is the correct behavior but it took me by surprise. I was fooled by thinking the Q might mean 'quarter notes' ( I guess I get the usual payment for 'assuming' ;-) ).
Second, the output in frequency values isn't very open to interpretation. I can look at pch value 8.00 and tell at a glance it's middle C. Even midi note 60 looks sort of familiar. But I have to Google the value for middle C every time. If the output were in pch, I could even build instruments that used just intonation, as opposed to 12-TET.
Third, I went in and manually added some controls to change the dynamics of each part using the zak series of opcodes. I'm not sure how workable it is, but when I think of music, I sometimes visualize those little crescendo / decresendo marks. I wonder if it's not possible to include that info as a separate track?
I don't mean to break abc notation. Instead, it's well known that abc allows software programs to insert extra info behind comment markers, typically '%%' (as opposed to the normal '%'). Look how this might be implemented:
% standard abc version, an excerpt from the file p01.abc
| z8 | z8 |
| A ^c d a _b d' _b a | A ^c a d _b d' _b a |
| G,3 A,13 | |
And now, the twist:
% my idea, nextline dynamics for the piano part.
| z8 | z8 |
| A ^c d a _b d' _b a | A ^c a d _b d' _b a |
%%>>>>>>>>>>>>> <<<<<<<< >>>>>>>>>>>>>>>>>>
| G,3 A,13 | |
I guess I'm free to suggest it, since I don't have to code it ;-)
| Attachment | Size |
|---|---|
| p01.csd | 10.65 KB |
| p01.abc_.txt | 1.34 KB |


