Blog

Camille, Andrew, Katrina & Co

Camille, Andrew, Katrina and Co

Almost a year ago Daniel Datugas from Canada contacted me, asking me for permission to use an excerpt of a song of mine in a video project he was working on, Camille, Andrew, Katrina et Cie

Of course, I couldn’t but say yes!

The song was —you guess it— Glacier again. I must have done something really well with it! :D

In return for using the song, he kindly sent me a DVD when the project was finished. For some strange reason, getting a physical DVD instead of downloading an ISO image and mounting it virtually was SO exciting. There was a “thank you” letter inside, and the DVD box itself. The cover is what you see above, then you have the DVD disk:

Camille, Andrew, Katrina and Co

which is simple but has the nice detail of Mr. Dugas name being nicely aligned with the last A of Katrina. And finally here comes the best part, the egopumping part:

Camille, Andrew, Katrina and Co

TOTALLY UPPERCASE SUPERSOLE! Yeah!

Vanity highs apart, and back to the project itself, it seems it is a project with multiple readings. It is a video, but it is also an installation —which unfortunately I’m not able to experiment. The video is being published to vimeo (a new sequence every day). I watched it with the sound effects + voice channel, plus the English subtitles on, since my French isn’t that good to understand everything. It is all narrated and performed by Daniel, a bit in the style of old radio serials. The format suits him well, since there were very few actors & actresses in this production, so each one of them play several roles in the movie (disguised, of course!).

Regarding the story, it really hooked me. I was totally interested in knowing how would it end, and I was even thinking about the movie some days after watching it, so it really made an impact on me. So good work, Daniel et Cie! Well done! :-)

At this point the sequence which features my song hasn’t been published yet, I’ll update this post when it is.

The Loser (II)

This is a bit old news, but news nevertheless. Astharoth contacted me a few months ago and (as usual XD) asked me for a song with guitars. I told him that I didn’t have any (as usual too XD), but I had some dark songs that maybe would fit his ideas: something moody, slightly gothic in a certain way. He finally decided he liked Glacier and did an experimental piece with it. We’re not quite sure it can be called a demo, it’s more in the realms of visual poetry or something like that. Anyway, watch it!

I think he was about to make an english version but I haven’t heard again about it.

As an interesting note, the typewriter machine noises are not from my song. He added them dynamically, “on the fly”. There’s a making of too.

Learning GoatTracker, 3: Generating an MP3 file

Before I continued dissecting Readme.txt, I wanted to find out the answer to a question to which I insisting and unconciously go back again and again: how do I convert a SNG file (GoatTracker’s format) to WAV (and then to MP3)?

It seems the answer resides in sidplay, which is a (guess it!) SID player. It can be installed using Synaptic Package Manager. I looked for sidplay and it seems that the libsidplay1 library was already installed, as some other packages such as gstreamer plugins for “ugly” formats depended on it). I checked the sidplay package anyway, and pressed ‘Apply’ as usual.

But sidplay can only play SID files, not SNG files. So we need to export the song from within GoatTracker. This is called packing in their jargon. You can access the option if you press F9.

It will then ask you lots of questions such as “Select playroutine options”, “Start address”, “Select zeropage address”, and finally “Format to save in”. Scroll down with the arrows until you see “SIDSIDPlay music file format” in green, and then press Enter to accept. Then browse to the folder where you want to save the song, type in a filename and all that.

Since I have the ‘ugly’ gstreamer plugins, I can quickly test that my song works by dragging the output SID to the gnome movie player.

And now to output the wav file you just need to open a terminal and type this in:

sidplay2 filename.sid -wfilename.wav

Change the filenames as required ;)

If all went well, you should have a filename.wav file with your rendered song! You can now convert it to MP3 or OGG or whatever you like.

Learning GoatTracker, 2: Patterns and instruments

Goattracker’s orders and patterns vs ‘normal’ trackers like Impulse Tracker

  • In Impulse Tracker you only have a tune which is split in several patterns. These patterns are arranged in a sequence in the order list and that’s it. On the other hand, Goat Tracker allows you to split your tune in several subtunes. Each one has its own order list.
  • Moreover, each element of the order list in GT specifies which pattern is going to be used in each channel. This is done for saving space, and for flexibility.
  • There are special commands which can be entered in the order list and allow us to transpose or repeat the following patterns. But I think this is kind of too advanced for now :)

The patterns

The format is totally familiar: C-1 00 0 00 = Note name, Octave, Instrument number, Command and Databyte, which I assume is the command value.

And there’s also the usual cut-off/fade style commands which can be entered in place of notes:

  • … Rest
  • —- Key off (clear gatebit mask)
  • +++ Key on (set gatebit mask)

although I still don’t know what is the gatebit mask, but I’ll find it eventually.

The available commands are familiar too: portamento up/down, toneportamento (the usual glide or portamento to note), vibrato, and then some new ones for modifying several parameters of the active instrument. Some are intuitive at this point (changing filter cutoff, resonance…) whereas others (set wavetable pointer, for example) are not.

Master volume and tempo can also be changed using commands, so we are able to fade out songs and make swingy music with groove if needed ;-)

Instruments

To understand how they work I guess it’s best to think of an instrument as if it was a synthetiser. GoatTracker does not use samples, instead it gives you a number of parameters that you can configure in order to get some sound from the instruments. So you get familiar parameters such as Attack, decay, sustain and release and then more references to those strange tables (wave, pulse and filter tables). Minigotcha here: since the Attack/Decay and Sustain/Release parameters are somehow linked, their values are specified at the same time, one char for each. For example in the Attack/Decay column, a value of 34 means 3 for Attack and 4 for Delay. Same for SR.

You might know it already but I think it’s important to stress this, and the readme.txt agrees with me on that: ADSR settings are crucial to getting any sound at all. So let’s set some values which might produce sound!

In the pattern, enter some random notes. Then move to the instrument editor (press TAB repeatedly until you get there, or click over the Attack/Decay value column to place the focus there). And set A/D to be 22 and S/R to be FF. If you press F1 now (to play the song) you’ll heard absolutely nothing though, because guess what… we haven’t edited the (in)famous tables yet!

The tables

Readme.txt says it better than me:

Tables control the execution of instruments’ waveform/arpeggio changes, pulse modulation, and filter modulation. All the tables are controlled by the left side bytes, while the right side byte specifies additional parameters

After having a quick glance at the wave table reference, let’s do a little trick to see if we understood how things work:

  • In Wavetable Pos, enter ‘01’ (because if using ‘00’ the wave table is not used, and that’s bad, because we don’t get any sound).
  • Now in the first row (‘step 1’ in their words) of the wave table, enter ‘10’ in the left column. According to the reference, values from 10 to DF specify waveform values in this column. If you press F1 now (or if you hadn’t stopped the song with F4 before) you’ll finally hear something! YEAH!!

You can enter more values in that first row and hear the different waves that are output. There’s a list in the readme. But basically 10 = Triangle, 20 = Sawtooth, 40 = Pulse, 80 = Noise.

There’s also some reference to ring modulation using another channel and etc. Ignored by now.

These sounds are very basic and nothing more than a pure wave being played. For building richer sounds we need to get serious with the wave table. It will even allow us to create chippy arpeggios! There are some examples in the reference, such as:

Sawtooth waveform on note’s original pitch

01: 21 00

02: FF 00

This one is very similar to the one we had until now, with the difference that it has the FF in step 2 which I didn’t add before. Its purpose is to tell the player to stop iterating through the wavetable.

A snaredrum sound, using all absolute notes so that it does not depend on which note it’s played

I’ll add some explanation for each row to make sure I understand how this works :)

  • 01: 81 D0: 81 = use a noise wave, D0 = the note to be played (ref says: 81-DF Absolute notes C#0 – B-7, so D0 = G#6, D1 = A-6, D2 = A#6, D3 = B-6, D4 = C-7, D5 = C#7, D6 = D-7, D7 = D#7, D8 = E-7, D9 = F-7, DA = F#7, DB = G-7, DC = G#7, DD = A-7, DE = A#7, DF = B-7)
  • 02: 41 AA: 41 = use a pulse waveform, AA = some note in a lower pitch (AA is in the 81-DF range)
  • 03: 41 A4: 41 = use pulse waveform, in an even lower pitch note
  • 04: 80 D4: 80 = noise waveform, D4 = C-7
  • 05: 80 D1: 80 = noise waveform, D1 = A-6
  • 06: FF 00: stop playing the wavetable

So why should we use the FF command on the left column? It’s very simple: because the wavetable is shared by all the instruments. That’s why each instrument has a Wavetable Pos parameter so we can select at which point in the table do we want them to start playing, and also why we need to specify when do they need to stop too, or they will just traverse the full table.

I still haven’t investigated how the other tables work, but I’m 99.99% sure they work exactly the same way.

Learning GoatTracker, 1

Here’s my self proposed challenge: create a true 8-bit song for the RetroEuskal compo. It’s going to be quite tought because I have never, ever, in my life, made a true 8-bit song with true 8-bit limitations. I have decided to use GoatTracker because it works on my computer and operating system (Ubuntu). I could maybe use FamiTracker which I think was easier from when I tried it, but I have to run it inside VirtualBox (wine won’t do the trick this time) and it was horribly slow, plus the lag and the sound crackles. A definitive no-no.

As an exercise and also just in case it is helpful for someone else, I’m going to write down the process here. There we go!

First thing with GoatTracker is to locate some documentation, because just playing around with the values of things in the screen is not working, and nobody though of busy people like me and recorded a youtube tutorial or something. In Ubuntu, if you install GoatTracker using the package manager, the documentation which accompanies the softare is in a compressed file in /usr/share/doc/goattracker/readme.tar.gz, so you’ll have to extract it somewhere where you, as a simple user, are allowed to extract it. By the way, the sample songs are also in that directory.

Just as I began reading it I had the feeling that I should really understand how the SID chip works if I really want to make a song. Readme.txt points to the C64 programmer’s Reference Guide (which can be downloaded from here) or to AAY64 Both sound frankly scaring, but I’ll do my best…

Back to the readme.txt, it points out that maybe the songs won’t sound like a true computer would play them. Well, bad luck then. I’ll have to do with what I have, even if there are always C64’s in ebay. It then proceeds to describe lots of changes and differences between versions with a set of terms which are quite obscure at this point. I foresee myself as the darkest mistress of C64 music when I finish reading the readme.txt, though. Ha!

There are also lots of command line options which can be used when starting the program. Since I hardly understand what the majority of them do (with esoteric titles such as hard restart ADSR parameter, reSID interpolation, pulse optimization/skipping, random reSID write delay in cycles, etc), I’ll just ignore them for the time being.

It’s interesting that all the Key shortcuts are listed in the Readme file. Even if you can access an online help screen by pressing F12 while in GoatTracker, it is a bit tedious to alternate between them.