I've started working on a SoftStudio for the GamePark GP32 handheld games console.
For those that don't know it, it's ARM based, has 16bit stereo audio capabilities (at various freqs, but I'm using 22kHz for now) and a 1/4 VGA (320x240) 16bit colour display and uses SMC (same cards as digital cameras) for it's media. Runs at an app settable speed, but 'standard' is 133MHz. So it's like a GameBoy Advanced, but better
So far I've got a simple demo that plays out an 8 bar 'song' using a sampler generator and 2 filters with automation on the filters. Just a crappy beat, dodgy arpeggiated bassline and a cheesy roll
I've got the following parts working:
note and automation sequencing
patterns (including the song as a pattern)
generator and effect 'plugins'
effects channels
mixer (ok, so it's not really like a mixer as channels don't have their own volume, pan etc. yet, but it mixes all generators and effects on each channel (+ master channel))
audio 'drivers' for GP32 and Windows (so I can test it on my PC)
playing time (not mixing time... god that took longer than it should've!)
sampler that can load 16bit and 8bit .wav files (no envelope, looping or other features yet)
a fixed-point resonant filter using a lookup table for the precalculated values
a simple delay (actually using the algo from the VST SDK example
I'm very much used to FL Studio, so I've been incredibly influenced by it. This is probably mainly noticable in the way the effects channels work.
I've got loads of ideas for features and optimisations inside the audio engine, but I feel I've reached the point where I should start developing the GUI. I haven't developed a GUI toolkit yet, but I think that the look-and-feel of the GUI will dictate, to some extent, the internal workings of the GUI toolkit.
So here lies the problem... I absolutely suck at GUIs, and have the artistic ability of a squashed cockroach (whose crayons have all been broken). I'm much more of a command line kinda guy, so I usually don't bother making GUIs unless I absolutely have to. And of course in this case, I do.
So if anyone has any comments or suggestions for the GUI (or indeed the audio engine), please let me know. Of course if anyone can contribute creatively, that would be great, but don't expect results too soon, although I will give immediate feedback. Unfortunately (paid) work and (vague) social life gets in the way of getting this done as quickly as I'd like to.
FYI, the GP32 has a little joystick, A and B buttons, a Start button (below the joystick), Select button (below the A and B buttons) and left and right shoulder buttons. See www.gbax.com for more info (or to buy one!)
(This is probably not worth reading--->) I'm currently thinking along the lines of L and R to switch between 'panels' (eg. transport, piano roll, time bar), Start for the menu, Select to navigate between screens (eg. Select on pattern to edit pattern, on Generator to edit generator params), Joystick to switch between controls, A and B to edit control values. Of course inside the piano roll/drum editor, the controls might be different. All very vague, but that reflects how I'm currently feeling about the GUI!
Remember that as screen space is small, rather than having windows on screen, it'll have to be one screen for the piano roll, one screen for the song arrangement, probably even a screen for each generator's and effect's params as well.
I know I could possibly go for a more tracker based approach, but I've never got on with those and I'd much rather make it a more modern SoftStudio type GUI. And as far as the GP32 actually managing to do all this.. I dunno.. I've got more performance out of it than I thought I would and I haven't even begun to recode parts in assembler.
Oh yeah.. Haven't settled on a name for it either.. Suggestions please! Current options are:
GPSS (GamePark SoftStudio or GamePark Sound System)
LoopPad
TunePad
The last two were suggested by a friend cos I keep describing it as a sketchpad for tunes. See, this is all about relieving boredom while travelling to and from work on the train every day (and not having a laptop).
Sorry for this being such a long post!
Doogle