This piece is influenced by an atmospheric game soundtrack, with beautiful, quiet sound design. The game is called Stray and the piece is "Ant Village":
Theme starts at 3:12
Technical notes: this piece was entirely recorded and mixed in Csound, only the final "mastering" was done in Nama/Ecasound. Thanks to the ArchLinux maintainers of the Ecasound package for updating the software!
All melodic sounds were specially created for this project. The strings and "mandolins" using Karplus-Strong synthesis using Csound wguide1 opcode. The drums were ready-made User Defined Opcodes with the idea of "drum machines" as can be found in some of the flexible digital and analogue hardware, for example the Elektron, new Roland MC-* or Korg Drumlogue. The melody, bass and rhythm instruments use classic virtual analogue synthesis, while the marimba/bell sound is based on Csound's marimba model with the addition of resonant filters phaser2.
Composition/writing: the melodicy lines and the drums were recorded in MIDI and then, using a Python script, transformed into a format ready to read in Csound. I implemented a simple sequencer in Csound, reading its data from f-tables. This gives the basis for another family of UDOs making it easier to use that kind of looping sequencer. It allows to handled MIDI notes, velocity and a degree of randomness/humanisation.
The melodic lione was played polyphonically and then split into four monophonic voices. The voice-lines were alternated by the Python script, so that the melody switches, not by note, from the first voice to the second. The same happens with the third and fourth voice. That way, the lead lines suggest two - or three - motives, only coming together as the intended melody, when al four voices play at the same volume. -- Again, this Python code gives rise to a more organised and feature rich tool.
When all is said and done, I just hope you enjoy it.
Hi Pablo,
attached is a zip file of the sources. It's one main CSD file, plus a lot of UDOs and *.[digits] files containing the sequence data for the melodies. I tried to write organised and clean code, but towards the end I just hammered in a few pieces as they came up. I has definitely unearthed more UDOs to write and even better structural layout of the whole orchestra.
I did not include the Python scripts I used to convert the MIDI patterns into the ftable files, because they are even more a work in progress. Ths was my first attempt to do this. Basic concepts are emerging and when I come round to a coding phase next, I will work out a more fully featured application for that task as well.
Hi Richard,
thanks, as ever, for your kind and motivating feedback.
The receiver instrument is used for the pre-recorded sequences, i.e. the main melody, the VA-brass like arpeggios and the FM-brass-like backing lines. I don't think I ever used a loop opcode in there.
So the table errors you got must be from those supplied table files. Not sure, why this would happen. I know that it is quite possible to run into issues at the ends of ftables and thus tried to put in a few safe-guards.
You'd be welcome to play with the piece, though I think the full version is not very friendly towards live perfrmances. If, however, you remove the strings and the mandolins, the CPU load drops quite a bit.
And just to avoid confusion: I am using Csound 6.18.
Hi Aaron,
I was particularly inspired by this "choral" bit myself, as well as by the whole sound design. So I began writing Cloud Cuckoo Land. I never wrote any music for a game.
But it's good that you're here,I may have one or two Faust questions. Perhaps you might lend a hand? If so, just e-mail me off-list.