Home Artists Posts Import Register

Content

Failed at getting my recap in over the weekend, because I was working hard on a new feature for the tracker: Load! And it's got a co-conspirator as well: Save! That means I'm officially at a non-negative version number, because I don't want to deal with storing negative values where I store the version of CTM that wrote the file in the tracker file. As a side bonus, I cleaned up the way songs were initialized some as a direct result of the load/save routines. Shift-Ctrl-Alt Left+Right move between songs that are open and you can have multiple files open at once.

To be able to load and save, you gotta have file dialogs. For the time being, I'm just calling out to Tk, but eventually I hope to put a file selector in the tracker itself. You also have to be able to click buttons. I realised I don't have any, so I tore up some UI code I wrote ten years ago and put the beginnings of a button cluster in. It's pretty lonely up there, but I'm sure it'll get better with time. Other button clusters look like these:

FT2, my main inspiration

Noisetracker, quite possibly FT2's inspiration

Milkytracker, an FT2 clone by demogroup TiTAN

There are a lot of things I care about and a lot of things I plan to relocate. FT2 and Milky relocated Noisetracker's channel mute to just clicking on the scopes. I probably won't have scopes but you'll be able to mute the channels using the channel header, near where you reassign things. I do like how most trackers let you click on a position in the order to jump to editing/playing it, so I implemented that. I haven't decided whether I want to relocate Disk Operations into a Disk op or leave Load/Save outside. I'll definitely have an import feature at one point or another to pull in projects. Milky has a weird hybrid of these. I'll figure it out. Definitely need zap, config, instrument and board subscreens. 

Anyway, let's cull the changelog from last week:

Octave selection is implemented. Hitting 0-8 on the keypad selects one. I fixed the Atari 2600 initialization and also detect both SID revisions (6581/8580) as the same kind of board for now. It looks like I might actually be able to implement detection of which revision the chip is using some adapted code from the Commodore 64. We'll see if it works using the stuff I've got. Cosmetically I dimmed the LEDs so you get less noise from boards while working. It's interesting how visible they are, even at 1%. 

Lots of bugs and debug was cleaned up. Some of that debug isn't necessary to display anymore, others needed to be more descriptive than just setting the value of "derp" to "1".

While checking on some of that SID stuff, I realised I didn't have a good LUT for the frequencies, so I fixed that up. I also spent a fair bit of time trying to work around a well-known ADSR "bug" in the chip where if you trigger a note while it's releasing another note, your note might take up to 40ms to sound. So now I backup the state of the chip and compare volume values, tell the chip to halt all sound, change volume VERY quickly, and retrigger a note. When checking with my esteemed colleagues, it seems pretty much everyone else was opting to do roughly the same thing, and it was working out for at least one of them (as well as my own tests succeeding, hooray)!

So hey, now that the boards get "tuned", why not keep track of frequency variance? I decided to make a list of the difference between a note as played in the scale you choose and the notes the board can make. Then I measure how much that is in cents and turn notes red if they're going to be off-tune more than the amount you specify. It feels good. Eventually I can tell the tracker to avoid sending notes if they're out of tolerance. I also realised that maybe I shouldn't be sending "no note" values to boards. Fixed that.

I tried writing a driver for the YM2149F and it seems pretty solid, but I only get noise. I think my 2149 is either dead, fake, or both. I need to source one from known good hardware. In the frustration of this, I also put out a call for sound chips on twitter. If you are able to like and retweet this tweet, you could help me get more chips to support on the synthesizer!

Ask questions! I like knowing what you're thinking.

Files

Comments

No comments found for this post.