Jump to content

Photo

TIATracker: A new sound routine and sequencer application

music audio tracker sequencer

100 replies to this topic

#1 Kylearan OFFLINE  

Kylearan

    Chopper Commander

  • 210 posts

Posted Mon Mar 7, 2016 4:51 AM

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. :)

Attached Thumbnails

  • editor.jpg

Attached Files


Edited by Kylearan, Sat May 27, 2017 3:21 AM.


#2 Thomas Jentzsch OFFLINE  

Thomas Jentzsch

    Thrust, Jammed, SWOOPS!, Boulder Dash, THREE·S, Star Castle

  • 23,687 posts
  • Always left from right here!
  • Location:Düsseldorf, Germany, Europe, Earth

Posted Mon Mar 7, 2016 5:33 AM

Can you tell about the more resources required?

#3 Kylearan OFFLINE  

Kylearan

    Chopper Commander

  • Topic Starter
  • 210 posts

Posted Mon Mar 7, 2016 7:16 AM

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


#4 Thomas Jentzsch OFFLINE  

Thomas Jentzsch

    Thrust, Jammed, SWOOPS!, Boulder Dash, THREE·S, Star Castle

  • 23,687 posts
  • Always left from right here!
  • Location:Düsseldorf, Germany, Europe, Earth

Posted Mon Mar 7, 2016 7:18 AM

tt_variables.asm? There is no 2600 source code in the archive.

#5 Kylearan OFFLINE  

Kylearan

    Chopper Commander

  • Topic Starter
  • 210 posts

Posted Mon Mar 7, 2016 7:36 AM

Whoops, I forgot to add the "player" folder again after fixing a bug and creating the archive a second time... sorry. Here it is.

Attached Files



#6 Thomas Jentzsch OFFLINE  

Thomas Jentzsch

    Thrust, Jammed, SWOOPS!, Boulder Dash, THREE·S, Star Castle

  • 23,687 posts
  • Always left from right here!
  • Location:Düsseldorf, Germany, Europe, Earth

Posted Mon Mar 7, 2016 7:50 AM

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.

#7 Kylearan OFFLINE  

Kylearan

    Chopper Commander

  • Topic Starter
  • 210 posts

Posted Tue Mar 8, 2016 1:35 AM

BTW: I noticed tt_timer. Wouldn't it be better or an alternative to use all 8 bits here? [...] That way the speed can be adjusted more precise

 

 

That's a great idea! Cheap and easy to implement as well. Will add that as an option, thanks!



#8 RevEng OFFLINE  

RevEng

    Quadrunner

  • 5,009 posts
  • Bitnik
  • Location:bottom of the stack

Posted Fri Mar 11, 2016 3:35 PM

I just wanted to say that this is something that definitely needed to exist. Thank-you and congrats - it looks great!

Will take it for a spin and provide feedback when I get a chance.

#9 tdididit OFFLINE  

tdididit

    Star Raider

  • 97 posts

Posted Fri Mar 11, 2016 4:10 PM

I was need this tool right now for bing & boings in my game !!!!

 

thanks, you 're man :)



#10 Kylearan OFFLINE  

Kylearan

    Chopper Commander

  • Topic Starter
  • 210 posts

Posted Sun Mar 13, 2016 10:43 AM

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, Sun Mar 13, 2016 10:45 AM.


#11 iesposta OFFLINE  

iesposta

    River Patroller

  • 3,855 posts
  • Retro-gaming w/my VCS
  • Location:Pennsylvania

Posted Mon Mar 14, 2016 8:12 AM

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.)

#12 Thomas Jentzsch OFFLINE  

Thomas Jentzsch

    Thrust, Jammed, SWOOPS!, Boulder Dash, THREE·S, Star Castle

  • 23,687 posts
  • Always left from right here!
  • Location:Düsseldorf, Germany, Europe, Earth

Posted Mon Mar 14, 2016 8:46 AM

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.



#13 Kylearan OFFLINE  

Kylearan

    Chopper Commander

  • Topic Starter
  • 210 posts

Posted Mon Mar 14, 2016 10:34 AM

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. :)

#14 Thomas Jentzsch OFFLINE  

Thomas Jentzsch

    Thrust, Jammed, SWOOPS!, Boulder Dash, THREE·S, Star Castle

  • 23,687 posts
  • Always left from right here!
  • Location:Düsseldorf, Germany, Europe, Earth

Posted Mon Mar 14, 2016 11:07 AM

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, Mon Mar 14, 2016 11:11 AM.


#15 igorski81 OFFLINE  

igorski81

    Space Invader

  • 10 posts
  • Location:Amsterdam, the Netherlands

Posted Mon Mar 14, 2016 12:59 PM

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 ?



#16 Kylearan OFFLINE  

Kylearan

    Chopper Commander

  • Topic Starter
  • 210 posts

Posted Mon Mar 14, 2016 1:58 PM

A question regarding "t[i]he "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.

#17 Kylearan OFFLINE  

Kylearan

    Chopper Commander

  • Topic Starter
  • 210 posts

Posted Mon Mar 14, 2016 2:02 PM

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.

#18 JAC! OFFLINE  

JAC!

    Stargunner

  • 1,760 posts
  • Always looking for GFX and MSX for my demos
  • Location:Lebach, Germany

Posted Sat Mar 26, 2016 4:03 AM

@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...atari2600/demos

#19 Kylearan OFFLINE  

Kylearan

    Chopper Commander

  • Topic Starter
  • 210 posts

Posted Sat Mar 26, 2016 12:27 PM

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.

 



#20 Thomas Jentzsch OFFLINE  

Thomas Jentzsch

    Thrust, Jammed, SWOOPS!, Boulder Dash, THREE·S, Star Castle

  • 23,687 posts
  • Always left from right here!
  • Location:Düsseldorf, Germany, Europe, Earth

Posted Sun Mar 27, 2016 7:07 AM

Bug report: When changing the pitch guide, the sound disappears until you reload the instrument.



#21 Lillapojkenpåön OFFLINE  

Lillapojkenpåön

    Chopper Commander

  • 123 posts

Posted Sun Mar 27, 2016 11:48 PM

I tried to send you a message earlier Thomas but it said you couldn't receive any new messages..



#22 Thomas Jentzsch OFFLINE  

Thomas Jentzsch

    Thrust, Jammed, SWOOPS!, Boulder Dash, THREE·S, Star Castle

  • 23,687 posts
  • Always left from right here!
  • Location:Düsseldorf, Germany, Europe, Earth

Posted Mon Mar 28, 2016 2:16 AM

Try again, please.



#23 Tjoppen OFFLINE  

Tjoppen

    Chopper Commander

  • 221 posts

Posted Sun Apr 3, 2016 3:58 PM

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, Sun Apr 3, 2016 3:59 PM.


#24 Kylearan OFFLINE  

Kylearan

    Chopper Commander

  • Topic Starter
  • 210 posts

Posted Wed Apr 6, 2016 1:57 AM

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. :)

#25 Kylearan OFFLINE  

Kylearan

    Chopper Commander

  • Topic Starter
  • 210 posts

Posted Fri May 6, 2016 3:08 AM

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.







Also tagged with one or more of these keywords: music, audio, tracker, sequencer

0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users