In the very near future Smiker, mitikoro and ILKke will release their long awaited GBA tracker “M4G”. Smiker was good enough to answer a few questions about the projects development, the motivation behind it and a hint or two about the future.
LB – Your 8bc profile has this rather awesome quote :
“One day, in early 1998, a friend, a coder who was talented in many aspects, told him about trackers while giving a Compact Disc to him, so he did get FastTracker2.”
What other trackers did you try?
Smiker – Well, i did not use a lot of them, but I started with Fast Tracker 2, about one year, doing pc speaker music (yeah, I didn’t have a sound card so I had to move my head close to the tiny pc speaker then ask my mother to lower her voice, to be able to hear a a little more clear (but sound sucked, in the end.) Then I messed around with Impulse Tracker although I didn’t like it very much at all. Later, I changed my computer, I had a soundcard, so I changed my composition habits to use 16 & 32bit programs (Sonic Foundry Acid, Rebirth, Fruity Loops, Reason). Then I rediscovered Chiptune and started with ModPlug, made some tunes for a while, then changed my computer again. I had to switch my OS to Linux, and I needed to make music there, so I used SoundTracker (GPL) for around 6 months. Lately I’ve been composing with Madtracker, TFM (Turbo FM) and, as you can imagine, Famitracker since I discovered the Chiptune movement, just because I loved the NES sound and it was a nice way to emulate it, rather than using sampled NES sounds.
LB – The earliest reference I found to m4g was on 8bc around July 2009. It looks like you just suddenly sat down and coded a tracker. What motivated you to create m4g?
Smiker- I don’t have a DMG/CGB Flashcart to use LSDJ natively, so I spent a lot of time doing stuff with the LSDJ Goomba version (emulating a real DMG on a GBA Flash cart). I knew that wasn’t the best way to make music because emulated sound sucks and there is no line mode. Those were the first restrictions I noticed on Goomba, so I thought about coding some new software that would give some fresh air to the chip scene, allowing GBA Flashcart users to compose music in a much better, native way. That’s when M4G Project born. I needed the software to be able to make music in the most flexible way, so I started to code for GBA.
LB – Are there any other reasons you chose the GBA?
Smiker – Main reason: Because there isn’t any quality software to make music on that platform. Secondary motivations: I had some experience coding demos on Gameboy advance, and you can code cool stuff using plain C, so I assume it was like that because It did seems easier to code
LB – Do you have a favorite GBA model? Do you think any GBA is better for m4g for any reason?
Smiker – Sure! My favorite model is the SP because it has better placed “select” and “start” buttons, and it has a backlit screen, so you can enjoy the colour scheme of M4G in all its glory. Anyway, my true favourite isn’t a Gameboy at all, it’s the DS, the first model. Perfect to navigate through the program (allows to handle the DPAD with one hand, while the other buttons are pressed by the other. If you have a DS, just buy a slot 2 flash cart, since it’s the fastest way to develop tunes on the fly!
LB – Its pretty hard to talk about hand held tracking without mentioning LSDJ, were you inspired by it at all?
Smiker – For sure. LSDJ was the basis of the concept, but in early stages of M4G it wasn’t so evident. Only after 2nd recoding it began to take cool aspects from LSDJ’s design. But I don’t intend M4G to be a copy of LittleSound, rather an evolution of that masterpiece.
LB – The current main GBA music composition tool is Nanoloop 2.x, have you experimented with it at all?
Smiker – Yeah…. but the user interface isn’t the most usable thing on the world, that was another motivation to make a new tracker. Still, I love songs done with Nanoloop, just because they are hard to compose (at least for me, I can’t quite understand it at all).
LB – I think M4G has 6 channels, 2 x Pulse, 1 x Noise, 1 x Wave, 1 x Sample and 1 x FM. Why did you choose these types of synthesis? Was it constrained by the hardware?
Smiker – Just like that. The first 4 channels are almost exactly the same as the GB / GBC sound architecture. In addition, the GBA has two extra PCM channels (those are usually used to obtain Stereo PCM sounds) but I prefer to use them separately, one for playing samples, the other to use as a software Synth (FM). I chose this method because that’s what the Game Boy Advance could offer without excessive CPU usage (as the first 4 channels aren’t very expensive in CPU terms), then I could spend more cycles on the user interface.
LB – Why did you choose to include FM? Could you go into a little detail on the FM engine?
Smiker – FM Sound has fascinated me since I was a child. I loved how different the Genesis sound was, and when I learned a bit about it, it did looked pretty easy to code. I love FM sounds. That’s the point. In M4G, the FM channel uses Frequency Modulation formulas to generate a harmonically rich sound, in contrast with the square channels. Together this fills the song and can even give a very nice ambience to a tune. It works very similarly to the wav channel. It uses a waveform as main oscillator, then uses up to 8 algorithms to inter-modulate them. They also have an ADSR envelope each, and they’ll probably have some other properties (As a little secret: I haven’t finished that part yet, that’s what I’m on right now! ).
LB – Could you talk a little about how the Wav channel works? Is it pretty closely modeled on the original Gameboy’s Wav channel?
Smiker – Yes. It is almost the same thing, with exception of two aspects: GBA’s wave channel is able to dynamically reload the wave data, in addition it has a second memory bank, so there is the double of memory to store waveforms compared to the original GB. The wav channel uses amplitude modulation. You choose a primary oscillator shape from one of 7 (Sin, Tri, Tri x2, Saw, Saw x2, Saw x4 and Custom Waveform) then you can set up to three additional waveforms which will modulate the first one, or modulate between them. Each oscillator has a customizable ADSR envelope. With all that stuff you can achieve cool evolving sounds by using different combinations of all the modifiable parameters. That’s almost the same principle as the workflow for FM channel, but this one would be properly named AM Channel, as it modulates amplitude, not frequency.
LB – Sounds like the FM synthesis part might be fairly complex, I would guess its 4op? Is it sine wave based or does it contain more complex wave forms like the later Yamaha 4 op synths like dx11 or tx81z?
Smiker – Yep ^^ It will use exactly the same kind of shapes as the wave channel, that is, it’s not limited to a sine, you’ll be able to use even a custom waveform (the last shape is user-editable).
LB – The effects list mentions a filter command. What kind of filters are you able to include?
Smiker – Well, those haven’t been programmed yet, but apart from the classic cutoff / resonance filters, I’d like to include some distortion or reverb, or even some flanger/phaser. But don’t take this too seriously, filters may be removed from final version if we don’t get enough free CPU execution time.
LB – Will it be possible to back up saves? How will this work?
Smiker – Well, since I don’t think I’ll distribute a Pre-Flashed edition, users will have to use flash carts, that offers the choice of getting the save ram memory dumps out of the cart and storing them on a computer. M4G can store up to 12 songs in SRAM, so you’ll need some program to extract each one separately: along with m4g ROM, I’ll include a small application to export/import songs and instruments. The cooler feature is the chance to convert the song to other formats once converted to m4g format. Probably I’ll include sample replacing functions for the sample channel’s sound banks too inside the transfer program.
LB – Will it be possible to sync m4g to any external sources like another GBA with m4g/LSDJ or Nanoloop/midi?
Smiker – Well, that is the other point I’m analyzing: The original Gameboy (as the pocket, color, etc) uses 5 volt on their link port. Gameboy Advance uses 3.3 volt, so I think it only would be possible to link them using a voltage converter or so to make them able to communicate.
So maybe a rudimentary m4g->midi sync<-lsdj communication would be possible. However I don’t have much information of how lsdj uses the link port, so I’m centering on using IBM keyboards as input device (for playing solos, i.e.) In the other hand, as midi sync would be easy to achieve, it’s more than probable that function will be in the final version.
LB – Are there any features for m4g that you are specially proud of?
Smiker – Yeah! For Sure! Usually I don’t get any of my programs finished (I tried to do some games, but if I eventually finish one of them, they stay there without adding all the levels to them, so technically I don’t finish anything I code T_T. M4G was the first program I saw was catching people’s attention, and that made me ‘horny’ and pushed me to keep coding it. That fact, the program’s ability to keep people interested, is the feature I’m most proud of. I don’t think it’s a very much original work, as long as I know, trackers have existed since chiptune started, so it’s more like a compendium of every cool thing I found in my years of musical production experience, look at it as a tribute to every previous tracker.
LB – You said in your profile that you love chip music, are there any chip musicians you would like to collaborate with on m4g?
Smiker – Well, I take this duty as a personal crusade after all, I said it’s the first program which can see the light at the end of the tunnel
LB – How did you get involved with iLKke? What is he like to work with?
Smiker – He dropped a msg on chipmusic.org to ask me for working the graphical part of the program, and I was pretty motivated with that, I think it’s cool to have help from such and artist (he has been done ultra cool stuff since amiga times O_o). I was very impressed and excited first time I met him via instant message, and he is a hardworker, even did some stuff at his work place. To me, it’s a true honor to work with such a gfx genius!
LB – Did you get any useful feedback during the public alpha testing of m4g which influenced development?
Smiker – To tell the truth, M4G would have been released sooner if I hadn’t tried to get some feedback before planned release date but I can swear it would have been much poorer software than now. Especially Chipmusic.org’s users were really helpful, their comments were often accurate and always constructive. Thank you people!
Other comments helped me understand if some color schemes weren’t readable, but it doesn’t matter much now since we changed virtually the whole look of M4G after IlkKe designed the graphics, so the previous color combinations aren´t used now. Another useful thing I learned was which hardware the program wouldn’t run on as not everybody has the same flash cart. But, overall, the main thing those comments helped me feel I was doing something for somebody rather than for my own sake. That’s the most valuable thing I could learn from a M4G forum thread n_n !
LB – Were there any features you thought about adding to m4g but the GBA wasn’t powerful enough?
Smiker – Nope, the GBA has enough power to do cooler things than m4g does, such as realtime sound processing for doing stuff like reverbs, flangers and phasers, but that isn’t m4g’s real purpose. I have tried to keep everything as minimalistic as possible, just to maintain a simplistic chip feel, and that means sacrificing some of the hardware capabilities. Nope, m4g doesn’t squeeze the GBA engine to the limit, but that has a reason: we are already thinking on doing modular synths able to be attached to a m4g session (via link) or being usable by midi interface, and those WILL use GBA’s possibilities at a hundred percent.
LB – Are there any other post release features planned? How long are you planning to support m4g?
Smiker – As long as I don’t get involved in any other musical software, I’ll be releasing eventually upgrades and trying to optimize the whole sound and graphic code until we get a totally polished product. There was too much waiting time to think of this as a short-term finished piece, I look at it as evolving code. Totally.
LB – Did you give any thought to open sourcing your software so people can tinker with it?
Smiker – Maybe. I’ll look forward to it while coding everything, leaving the comments when a cryptic piece of code appears, while taking care to make the program understandable for future code sharing. But that step will be only possible when the program is released, after that, there won’t be trouble in making it opensource or anything.
LB – What does m4g mean? Do you guys have a website?
Smiker – Initially it was m4gba, but it kinda sucked like that, maybe it was very long, or it lacked originality, so we made a shorter tag (m4g). It stands now for “Music 4 Geeks”, like that, I love to refer the project as just M4G.
We have a site, Chromix is running it, its http://m4gtracker.stereoboom.com
LB – Do you have any final words or comments?
Smiker – M4G tracker isn’t a single man project. My friend mitikoro has been helping me everyday, giving advice and telling me what I was doing wrong. I really think he has some serious involvement on the program’s design, and he’s been lending a hand with small code snippets and his knowledge about electronics. Also, I gotta say ilkKe is responsible for the graphic design, so that’s the reason of this program looking so cool. He is the meaning of the phrase, a Mockup is worth more than thousand Docs. At least to me. Also, I give thanks to all the people being there, waiting for the program to come out, testing crappy alphas and giving feedback about them. Thank you very much!