- RISCOS
- Recent development
FahZhi Tracker
FahZhi Tracker is something that I've been working on for the Equinox music. It isn't ready for release yet, but here's some screenshots - just after I've got it playing tunes (you can't save yet!).
Why FahZhi?
It's something that probably doesn't mean anything - it's a mostly-remembered phrase one of my electronics tutors at University mentioned in a class. I think it's Japanese for "Fast Thinking", but I could be wrong!
Its development
Beforehamd
My first commercial application was MIDITracker - something that plays Tracker tunes on MIDI keyboards. Later on, I co-developed Desktop Tracker.
The sequencer
A good while ago (around 14 years), I started work on a sequencer. This has been on-and-off development since then, and this is the first time it's approached usability.
It's meant to function in much the same way that a PC or Mac sequencer works. While I've got Logic and Cubase to play with, it's closer to Cubase.
Some of the graphics have been reused for this application.
The playroutine
I developed a playroutine called "CoreTracker" that is very fast. It could play 4 voices with less CPU than others playing 3. This is because it was a heavily optimised piece of work. Unfortunately, it doesn't work on 16-bit sound systems, and a lot of the techniques aren't transferrable.
For Dune II and ArcCommand, I wrote a very basic MIDI-style player, with 8 or 16 voices for Dune II, and 8 voices for ArcCommand. Dune II actually uses MIDI files, while ArcCommand uses a programming language, similar in some respects to AMPLE (BBC Micro Music 500 system if you've not come across this before).
FahZhi also uses a MIDI player - however, it is much closer to the MIDI standard than the others I've done. It also does things in a different way due to the design goals:
- Capability to run at any available sample rate (and automatically adjust)
- Up to 32 voices (could be more - it's just a compile-time directive) - even on an 8-bit sound system
- Up to 32 tracks (again, it's a compile-time directive)
- Up to 32 channels (hard limit is 128)
- Up to 64 samples loaded (like the others, it can be easily extended)
- Play different sample formats natively (mono/stereo 8-bit mu, 8-bit linear and 16-bit linear)
- Internally calculated to 32-bit and then reduces down
- Multiple songs per file (this is so that for Equinox, the tune is loaded once - the samples are around 3M at this moment in time)
Now the screen shots!
The song editor - you can create patterns on this, arranging the tune as you want.
The transport - this is where you stop/play the tune, and set up loop points. It needs some work.
The pattern editor - this is what you see when you edit a pattern. The section at the bottom shows the velocities being used, but the window can be altered to show pitch bend, pan, volume and so forth.
The sample editor - this is a basic sample editor that allows you to set the sample repeat locations, sample rate, transposition and so forth.
New screenshots for 9th January 2005
FahZhi has had quite a bit of work done to it, fixing bugs, adding features and improving usability:
- Load and save tunes (one of the first things to be done)
- You can now delete patterns
- You can select different songs within a tune
- Different types of controllers can be viewed in pattern editor
- Menus added almost everywhere
- Colours and names of tracks/patterns can be changed
- You can zoom in and out horizontally
- A 'drum' channel has been created
Song editor - in colour
Song editor - with tune settings
Song editor - with pattern settings
Pattern editor - showing modulation
Pattern editor - showing pitch bend
The grey rectangles on bottom part of the pattern editor that look like a redraw bug are meant to be there - they show you where a controller event has taken place so if it's visible even if it's too small to see. For example, on the pitch bend, when the second note starts, there's a grey bar at the bottom with a black line in the middle. If it wasn't there, you may not see that there's an event recorded at that point.