Kylearan Posted March 7, 2016 Share Posted March 7, 2016 (edited) 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. TIATracker_1.3.zip TIATracker_manual.pdf Edited May 27, 2017 by Kylearan 16 Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted March 7, 2016 Share Posted March 7, 2016 Can you tell about the more resources required? Quote Link to comment Share on other sites More sharing options...
Kylearan Posted March 7, 2016 Author Share Posted March 7, 2016 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 Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted March 7, 2016 Share Posted March 7, 2016 tt_variables.asm? There is no 2600 source code in the archive. Quote Link to comment Share on other sites More sharing options...
Kylearan Posted March 7, 2016 Author Share Posted March 7, 2016 Whoops, I forgot to add the "player" folder again after fixing a bug and creating the archive a second time... sorry. Here it is. tt_player.zip Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted March 7, 2016 Share Posted March 7, 2016 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. Quote Link to comment Share on other sites More sharing options...
Kylearan Posted March 8, 2016 Author Share Posted March 8, 2016 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! Quote Link to comment Share on other sites More sharing options...
RevEng Posted March 11, 2016 Share Posted March 11, 2016 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. Quote Link to comment Share on other sites More sharing options...
tdididit Posted March 11, 2016 Share Posted March 11, 2016 I was need this tool right now for bing & boings in my game !!!! thanks, you 're man Quote Link to comment Share on other sites More sharing options...
Kylearan Posted March 13, 2016 Author Share Posted March 13, 2016 (edited) 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 March 13, 2016 by Kylearan 4 Quote Link to comment Share on other sites More sharing options...
iesposta Posted March 14, 2016 Share Posted March 14, 2016 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.) Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted March 14, 2016 Share Posted March 14, 2016 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. Quote Link to comment Share on other sites More sharing options...
Kylearan Posted March 14, 2016 Author Share Posted March 14, 2016 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. 1 Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted March 14, 2016 Share Posted March 14, 2016 (edited) 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. 600-700 bytes sounds reasonable. I have used slightly less than 500 bytes in my Coke Zero demo. And that was pretty tight. Note that unrolled loops can actually be desired,... I suppose he meant data (pattern) loops, not code loops. Edited March 14, 2016 by Thomas Jentzsch Quote Link to comment Share on other sites More sharing options...
igorski81 Posted March 14, 2016 Share Posted March 14, 2016 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 ? Quote Link to comment Share on other sites More sharing options...
Kylearan Posted March 14, 2016 Author Share Posted March 14, 2016 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. Quote Link to comment Share on other sites More sharing options...
Kylearan Posted March 14, 2016 Author Share Posted March 14, 2016 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. Quote Link to comment Share on other sites More sharing options...
+JAC! Posted March 26, 2016 Share Posted March 26, 2016 @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 2 Quote Link to comment Share on other sites More sharing options...
Kylearan Posted March 26, 2016 Author Share Posted March 26, 2016 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. 3 Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted March 27, 2016 Share Posted March 27, 2016 Bug report: When changing the pitch guide, the sound disappears until you reload the instrument. Quote Link to comment Share on other sites More sharing options...
Lillapojkenpåön Posted March 28, 2016 Share Posted March 28, 2016 I tried to send you a message earlier Thomas but it said you couldn't receive any new messages.. Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted March 28, 2016 Share Posted March 28, 2016 Try again, please. Quote Link to comment Share on other sites More sharing options...
Tjoppen Posted April 3, 2016 Share Posted April 3, 2016 (edited) 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 April 3, 2016 by Tjoppen Quote Link to comment Share on other sites More sharing options...
Kylearan Posted April 6, 2016 Author Share Posted April 6, 2016 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. 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. 1 Quote Link to comment Share on other sites More sharing options...
Kylearan Posted May 6, 2016 Author Share Posted May 6, 2016 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. 2 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.