Jump to content
IGNORED

TIATracker: A new sound routine and sequencer application


Kylearan

Recommended Posts

EDIT: Updated to version 1.3

 

TIATracker is a tool for making Atari VCS music on the PC and a new sound routine for the VCS. It features ADSR envelopes, up to 7 melodic and 15 percussion instruments, customizable pitch guides for optimizing the number of in-tune notes, a size-optimized and configurable replayer routine and much more.

The Windows binaries for version 1.3 as well as the manual are attached. Included are also three example songs, a few basic instruments and an example pitch guide. For Linux and OS X, use "wine" or compile the sources (they use Qt and SDL).

The sources can be found here. Pouet link is here.

I'm open for bug reports, feature requests or curses. :)

post-35905-0-22859600-1466447464_thumb.jpg

TIATracker_1.3.zip

TIATracker_manual.pdf

Edited by Kylearan
  • Like 18
Link to comment
Share on other sites

Current status of resources used is:

  • Size of player: 164 - 232 bytes (depending on features used, see comment at the top of "tt_variables.asm" for a detailed breakdown)
  • RAM: 9 bytes permanent, 2 bytes tmp, 2 bytes stack. This is fine for my current project, but I already have ideas how to reduce this at the expense of ROM
  • Each melodic instrument needs 5 bytes plus 1 per envelope frame. Instruments can share the same envelope (like for combined AUDC 4+12 ones)
  • Each percussion instrument needs 3 bytes plus 2 per envelope frame
  • Each pattern needs 3 bytes plus 1 per note
  • The song itself needs 2 bytes plus 1 per pattern to play per channel
Link to comment
Share on other sites

Thanks!

 

BTW: I noticed tt_timer. Wouldn't it be better or an alternative to use all 8 bits here?

  ...
  lda tt_timer
  sec              
  adc #TT_SPEED-1  ; e.g. 256/20 -> 13-1 = 12
  sta tt_timer
  bcc .noNewNote 
  ...
That way the speed can be adjusted more precise, though it is not aligned to the screen frames anymore.
Link to comment
Share on other sites

I attached a new version to the original post.

  • The info tab now provides a detailed breakdown of how much ROM and RAM each component of the player and the tune needs
  • Mute channel and loop pattern implemented
  • Small improvements and bugfixes
  • A growing list of todos, thanks to some feedback by Thomas Jentzsch :-)

Next up: Export to .dasm, and the option to switch between PAL and NTSC (the logic for that is already implemented).

 

I also realize that right now, without the manual or an example song, it's not easy to understand the concepts of this tool. I'm working on that!

Edited by Kylearan
  • Like 4
Link to comment
Share on other sites

This is fantastic, and I haven't even used it yet.

 

My questions:

Is the output efficient?

Are you doing any code to avoid output of hundreds of zeroes?

Are loops defined once and called without duplicating whole blocks of data?

 

I ask because my post "TIA Sings Mappy" I show the output of the Visual bB music tool for a song of 8,000+ bytes cut down to 800-some bytes with optimisations by hand such as dealing with 0's and pattern recognition and reuse (instead of duplicating the same data).

 

If that's not done by your tracker tool, possibly another utility could be written to optimise in the future.

 

( :-) With 4K banks and 128b RAM game sounds need compression to allow game code.)

Link to comment
Share on other sites

For sure the result is optimized for space. It's quite similar to Paul Slocum's old tracker, but with more features.

 

The music is defined in pattern based on instruments, which can be efficiently reused. And there are assembler switches, which disable player code for unused features.

Link to comment
Share on other sites

Is the output efficient?

One motivation to develop TIATracker was to have a tool for my musician so he can create music for my upcoming 4K demo. I have reserved around 600-700 bytes for audio (player routine plus music data) in that demo, so size-efficiency was indeed one of my primary design goals. :)

 

It needs more ROM than Paul Slocum's music player, but I also wanted to have something more flexible and powerful, so this cannot really be avoided.

 

A couple of posts above I provide a detailed breakdown on the resources needed for a song.

 

Are you doing any code to avoid output of hundreds of zeroes?

I use very densely packed data structures. The download in the first post contains a "player" folder with the source code of the music player and the data structures; it's richly documented, so you can have a look if you want.

 

There will be a "For the coder" section in the manual that provides a breakdown on that, but for this you will have to wait until Easter.

 

Are loops defined once and called without duplicating whole blocks of data?

Note that unrolled loops can actually be desired, if speed is your concern instead of ROM size (been there, done that...) - and actually there will be a version of the player optimized for speed or RAM in the future. But right now, it's optimized for minimal ROM usage.

 

Rest assured that I know a thing or two about size-coding. :)

  • Like 1
Link to comment
Share on other sites

One motivation to develop TIATracker was to have a tool for my musician so he can create music for my upcoming 4K demo. I have reserved around 600-700 bytes for audio (player routine plus music data) in that demo, so size-efficiency was indeed one of my primary design goals. icon_smile.gif

600-700 bytes sounds reasonable.

 

I have used slightly less than 500 bytes in my Coke Zero demo. And that was pretty tight. icon_smile.gif

 

Note that unrolled loops can actually be desired,...

I suppose he meant data (pattern) loops, not code loops.

Edited by Thomas Jentzsch
Link to comment
Share on other sites

A question regarding "the "Pure combined" instrument lets you create a virtual instrument that combines waveforms (AUDC values) 4 and 12, since they sound the same but have different pitch ranges. The "Export to dasm" feature will automatically split them into two different instruments later."

 

What does this exactly do ? It sounds like waveform addition to enrich the resulting sound, how does the usage of this feature it affect the channel count ?

Link to comment
Share on other sites

A question regarding "the "Pure combined" instrument [...]

What does this exactly do ?

It's only a convenience feature for the composer, not a technical one. Since AUDC values 4 and 12 have the same timbre but different pitch ranges, TIATracker allows to create a "virtual" instrument for these two waveforms with 64 frequencies. That way, when the composer edits his song, he doesn't need to switch between two different instruments for high (AUDC 4) or low (AUDC 12) notes. He only uses this one combined instrument for composing, and when the tracker exports the track to .asm, it actually creates two different instruments with the same (shared) envelope and takes care of assigning the notes to the correct instrument.
Link to comment
Share on other sites

I have used slightly less than 500 bytes in my Coke Zero demo.

484 bytes, to be precise. :) I've looked it up last week, because Coke Zero is one of several data points for my Revision talk where I will point out that VCS demo coders allow much less room for audio than coders on other platforms.
Link to comment
Share on other sites

  • 2 weeks later...

@Kylearan/igorski81: As for the missing demo tune, why not for a start convert the existing tune that are available in Slocrum player source format? They are include in my sources which are available for download here

 

http://www.wudsn.com/index.php/productions-atari2600/demos

  • Like 2
Link to comment
Share on other sites

I'm making progress, yay! I have attached TIATracker version 0.8 to the first post, together with an example instrument.

 

Most important new features:

  • Switch between PAL/NTSC in the options tab
  • Precomputed pitch guides for A4=440Hz and optimized ones for AUDC 4/12 which give you more in-tune notes to work with
  • You can export a track to .asm now and feed the result to dasm as-is

Some things are still missing, most notably the manual, an example song and the pitch guide customizer, but the current version should otherwise be usable already to make music and include it in your projects.

 

  • Like 3
Link to comment
Share on other sites

Kylearan: As I said at Revision, great work! :)

 

I see my Linux patch merge request got pulled, which is good. Looking into some improvements, mostly in the UI department

 

Finally, could you jump in on IRC again? I seem to recall you being on about a year ago, would be great for coordinating improvement efforts. #vcsdev on IRCNet

Edited by Tjoppen
Link to comment
Share on other sites

I see my Linux patch merge request got pulled, which is good.

Thanks for that; I had to look how a pull works first, as I've never used git before in a team. :D

 

Finally, could you jump in on IRC again? I seem to recall you being on about a year ago, would be great for coordinating improvement efforts. #vcsdev on IRCNet

I don't like using IRC. It's just not compatible with my real life constraints (family + job). I rarely can do live communication, and only have sporadic, small stretches of time where I can work on my projects. (Had to take a break for a week now, for example...)

 

Better for me would be an async method of communications with a real, usable archive function. I guess I'll send you an email soon. :)

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

I needed a short rest after Revision and my talk, but picked up development again now. The pitch guide creator GUI and logic is almost finished, and I added some preset pitch guides optimized for different distortions. For those, the base frequency of A4 is chosen so that the number of in-tune notes for a given distortion is maximized. That doesn't necessarily mean the resulting available notes are super useful for a musician ;), but it's a nice improvement over the standard A4=440Hz, and the configurable pitch guide creator can be used for more individual configurations.

 

The manual is 70% finished as well, so I'm crossing my fingers that I will be able to release a 1.0 version in the second half of May.

  • Like 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...