AttoTracker Prototype

Advice on general approaches or feasibility and discussions about game design

AttoTracker Prototype

Postby wuuff » Wed Jan 25, 2017 11:30 am



UPDATE 2:
This update is mostly just usability updates to make the tracker easier to use, as well as some bug fixes. By now the demo video is out of date, so I may upload a new video at some point to reflect the new changes.

Saving to the SD card is in the works, but it appears that emulator support for writing to SD cards may be limited, and therefore future versions may not work in emulators. For now, though, the tracker can be used in Myndale's emulator, although exporting songs from it may not be possible.

Experimental song exporting is possible with this and the previous version of the tracker, by using the saved EEPROM data. Switching to the loader makes it write the contents of EEPROM to an ATTOTRAK.SAV file, which can be converted to C code to be inserted into a game. I posted about this in another topic, but I'm including the conversion script in the download for the most recent version in case anyone wants to convert any songs right now. Once I implement saving on the SD card, I'm hoping to have a more straightforward way to export songs so that it's easier to use, but right now the other topic explains how to use the script.

New version features:
  • Increased font size---this means the tracker only displays 8 lines instead of 12, but it is easier to read
  • Playback now starts from the row that the selection cursor is on, and after playback stops, the cursor is returned to that row
  • Note properties now only appear when editing a note
  • Editing BPM and the current pattern (currently unused) should be less confusing
  • The instrument editor should be a little nicer to use, and has longer, more understandable instrument property names

--------------------------------------------------

UPDATE:
Playback works on 3 channels.
You can place up to 128 notes. Each note holds the instrument used, pitch, and duration.
There is now an instrument editor, with up to 16 instruments. Each instrument has:
  • Waveform
  • Arpeggio Step Duration
  • Arpeggio Step Size
  • Volume
  • Volume Step Duration
  • Volume Step Size
  • Tremolo Step Duration
  • Tremolo Step Size
Basically, it supports all the commands from the Gamebuino sound library.
There is an interface element to change patterns, but it doesn't do anything; right now you're still stuck with just the one pattern. Similarly, the SONG menu option does nothing. Only the PATT and INST editors are functional.
Saving works, too, saving the pattern and instrument data to EEPROM when you select save. Use C to enter the menu to switch between the pattern editor and instrument editor and to save.

Here are the updated controls:
Code: Select all
SELECT MODE (the mode you start in):
    up/down/left/right: select cell
    A: edit note
    HOLD A: clear note
    B: play pattern
    C: save and editor menu (warning: there is no "are you sure?" to verify saving or loading)
EDIT MODE (when editing a note):
    left/right: switch between properties to change
    up/down: change value of property (warning: no bounds checks here!)
    A: save edits
    B: cancel edits, return to select mode
PLAY MODE (when a pattern is being played):
    B: stop playback
INSTRUMENT MODE (when editing instruments):
    left/right: switch between instrument properties
    up/down: change value of property (again, still no bounds checks for the most part)
    C: save and editor menu


Original post below:
-------------------------------------------------------

I had been thinking about the trackers available for Gamebuino, and even though there are three in progress, only one of them currently can actually be used to make songs for games, GBTracker. Unfortunately, it requires .NET to run. There is also Jonnection's awesome TinyTracker for the Gamebuino itself, which sounds amazing but has still not been released in a usable form.

So I decided to try and make a tracker: AttoTracker, a really tiny, really basic tracker you can run on your Gamebuino. It doesn't have and will never have the incredible features of TinyTracker, so if Jonnection ever releases that, this might become obsolete. However, this does have:

-A pattern editor with the ability to add, delete, and edit notes for three channels (although it only plays back on the first channel right now)
-Editing pitch, duration, instrument, and arpeggio for each note (some of this may move to an instrument editor, as each note takes up too much space right now)
-The 2 built-in Gamebuino instruments, square wave and noise.
-32 notes maximum (for now)
-Saving a song to EEPROM (I will probably eventually change this to the SD card)
-Loading a song from EEPROM

There is not yet a way to use the saved song in a game. However, there is still plenty of program space for me to add features, as this first prototype only uses 48% of PROGMEM, and I haven't really optimized yet. More concerning is the RAM, of which global variables already use 954 bytes. I have some ideas of how to reduce this, however.

This was an impulse project, although I had been thinking about it for a while. The prototype I have now took one night of work, and there's a lot of stuff to go before it's really usable. I probably won't have much time to work on it in the next couple weeks. However, I'm just posting this to gauge interest and get some feedback.

My music skills are not particularly good, so I think somebody more talented could do a better job than I did with my simple demo. If anyone is interested in trying it out and giving some feedback, that would be great.

Controls:
Code: Select all
SELECT MODE (the mode you start in):
    up/down/left/right: select cell
    A: edit note
    HOLD A: clear note
    B: play pattern
    C: save menu (warning: there is no "are you sure?" to verify saving or loading)
EDIT MODE (when editing a note):
    left/right: switch between properties to change
    up/down: change value of property (warning: no bounds checks here!)
    A: save edits
    B: cancel edits, return to select mode
PLAY MODE (when a pattern is being played):
    B: stop playback
Attachments
ATTOTRAK.zip
CURRENT VERSION
(19.72 KiB) Downloaded 246 times
ATTOTRAK.zip
OLDER VERSION
(17.93 KiB) Downloaded 234 times
ATTOTRAK.zip
OLDEST VERSION
(16.05 KiB) Downloaded 219 times
Last edited by wuuff on Thu Mar 16, 2017 6:41 am, edited 3 times in total.
wuuff
 
Posts: 61
Joined: Sun Aug 28, 2016 6:05 am

Re: AttoTracker Prototype

Postby naed » Wed Jan 25, 2017 12:13 pm

:D nice work
User avatar
naed
 
Posts: 140
Joined: Tue May 31, 2016 3:18 pm

Re: AttoTracker Prototype

Postby Sorunome » Wed Jan 25, 2017 12:38 pm

Looking nice! However, is it just me or is the playback speed kinda slow?
User avatar
Sorunome
 
Posts: 629
Joined: Sun Mar 01, 2015 1:58 pm

Re: AttoTracker Prototype

Postby wuuff » Wed Jan 25, 2017 7:41 pm

I don't have the right bpm calculations yet, but playback can go faster without a problem. I'm planning to let the user set the bpm, but I wasn't clear on how many ticks there are supposed to be per beat. This forum post says it was 6 ticks per row (with ticks based on a 50Hz timer) and 4 rows per beat for the amiga, at a fixed bpm of 125? I'm not sure whether that means I should also calculate it so that there are 4 rows per beat. This is, again, due to my limited musical knowledge. I would appreciate any help you can provide about this.
wuuff
 
Posts: 61
Joined: Sun Aug 28, 2016 6:05 am

Re: AttoTracker Prototype

Postby wuuff » Sun Jan 29, 2017 11:54 pm

I have updated the tracker, and now the BPM should make more sense. It's set by default to 150, with 4 rows per beat. I consulted a friend who knows more about music than I do, and we worked out something. You can actually adjust the BPM in the updated version, but the BPM is derived from the frames per row (I set the default as 2, so 2 frames per row * 4 rows per beat = 8 frames per beat, and at the default 20 frames per second, that comes out to (20/8)*60 = 150 beats per minute).

This means that when you adjust the BPM, it jumps by large amounts; you can have 300 BPM (max), 150 BPM, 100 BPM, 75 BPM, etc. because those are the only values that divide nicely when running at 20 FPS. If you go into the 4th column in the pattern editor you can switch between changing the pattern (currently does nothing) and the BPM by hitting A in that column, and then using up and down to edit the value.
wuuff
 
Posts: 61
Joined: Sun Aug 28, 2016 6:05 am


Return to Project Guidance & Game development

Who is online

Users browsing this forum: No registered users and 1 guest

cron