Bintracker - New Beeper Music Editor

On the creation of AY or Beeper music, including the packages used to do so.
Post Reply
User avatar
utz
Microbot
Posts: 113
Joined: Wed Nov 15, 2017 9:04 am
Contact:

Bintracker - New Beeper Music Editor

Post by utz »

Bintracker is the latest addition to the family of beeper music editors. It's a PC-based tool, like Beepola and 1tracker. From Beepola, it inherits the more conventional and well-known pattern/sequence workflow, as opposed to 1trackers more experimental "endless pattern" approach. From 1tracker, it inherits the idea of using a plug-in system, so you can easily add support new engines without modifying the bintracker executable.

Image


At the moment, Bintracker supports a handful of my new beeper engines, including PhaserX and PhaseSqueek.

Bintracker is free and open-source, and will run on Windows and *nix systems. It should theoretically also work on Mac, but nobody has tried yet.
download
source code
website

Bintracker is currently in an early beta stage. That means it is quite usable at this point, but may still contain quite a few bugs and rough edges here and there. If you do find a bug or want to request a feature, please do so in this thread, or (preferably) through the official issue tracker.
HexTank
Drutt
Posts: 28
Joined: Sun Nov 12, 2017 9:11 pm

Re: Bintracker - New Beeper Music Editor

Post by HexTank »

Nice one, I might give this a try. Something that's annoyed me is modern trackers that try to keep retor for whatever reason, things like GoatTracker for C64 is annoyingly needless and there's no reason why these softwares can;t just use native UI layouts, but that asside, lack of undo features and what not was a PITA.

I will give this a play over the weekend and give you some feedback as I've yet to see a decent speccy tracker, may be this is the one. :)

Is it PC based only or is there a Mac version too?
User avatar
utz
Microbot
Posts: 113
Joined: Wed Nov 15, 2017 9:04 am
Contact:

Re: Bintracker - New Beeper Music Editor

Post by utz »

HexTank wrote: Thu Nov 16, 2017 11:47 am there's no reason why these softwares can;t just use native UI layouts
There is, actually. Trackers are resource-hungry programs (they're essentially emulators with extra cream added), and native UI kits are simply too slow for creating a tracker UI from them. Hence, pretty much all existing trackers targetting 8-bit platforms use custom text/bitmap based UIs. Also, native UIs obviously aren't portable, so you'd have to write custom code for each platform you want to support (or use something dreadful like wxWidgets... no, please don't get me started on that...)

That said, I agree that for example Goattracker UI is not ideal, and misses a lot of chances that cross-development offers. For example, on a PC based tracker the user doesn't need to be tortured with all those ugly tables. Ideally, that stuff would be handled through drawing graphical envelopes, which are then silently converted into automatically optimized data tables by the backend. This is something I want to focus on with bintracker in the future. However, having worked the tracker for more than a year to get it to the current stage, I can assure you that this stuff is anything but trivial to implement.
HexTank wrote: Thu Nov 16, 2017 11:47 am Is it PC based only or is there a Mac version too?
In theory, bintracker should run on Mac. However, I don't have access to a Mac and I haven't set up CI either, so I can't provide Mac builds myself at this point. So, it'd be great if somebody were to take up the challenge to compile Mac builds.
HexTank
Drutt
Posts: 28
Joined: Sun Nov 12, 2017 9:11 pm

Re: Bintracker - New Beeper Music Editor

Post by HexTank »

Modern PCs have many threads for UI, having one deal with the playback is a non-issue, if emulators don't exahust much CPU, sound alone is neither here or there, of course, it's easier not to but nonetheless.

The issues with GoatTracker wasn't one of instrument or the layout being an issue, normal menu functionality could have easily been on menus but you need to swap around for disk-ops with F keys, it's rather cumbersome, my main gripe was a lack of an undo feature which I couldn't find if there was one. So you had to save constantly in case a ballsup happened, which in my case, was frequent.

The other issue with GoatTracker, and it does have a Mac version, was the reliance on a NumPad, not great on a laptop that doesn't have one.

None of this is critique per-se, I know vesting time in these things is quite big, just highlighting some bug bears, either way, they're generally easier than doing it on the device itself.
User avatar
4thRock
Manic Miner
Posts: 415
Joined: Thu Nov 09, 2017 9:35 am
Location: Portugal

Re: Bintracker - New Beeper Music Editor

Post by 4thRock »

I'm a big fan of Beepola, will certainly give Bintracker a try :D
chrrris
Drutt
Posts: 11
Joined: Wed Nov 15, 2017 10:09 pm

Re: Bintracker - New Beeper Music Editor

Post by chrrris »

Looks very nice utz! I haven't tried it yet, but I will do at some point. I like the idea of plug-ins for new beeper engines, that's exactly what I was hoping to achieve with Beepola 2.0, but I lost momentum on that a bit (the current Beepola is, as I've probably mentioned before, in dire need of drastic re-factoring, if not a total rewrite - it's very hacky). Great to see another option for beeper editing on PC.
User avatar
4thRock
Manic Miner
Posts: 415
Joined: Thu Nov 09, 2017 9:35 am
Location: Portugal

Re: Bintracker - New Beeper Music Editor

Post by 4thRock »

The software runs fine, but let me add some constructive comments ;)

From a usability point of view, it needs to have active button states.
I was expecting the pattern sequence to scroll when I press play. More visual feedback is needed.

The program window should maximize and try to show the entire pattern.
On a large monitor I should be able to see the entire pattern at once.


Nice-to have future feature: real-time recording of multi-key presses, assigning them to multiple channels as needed. So that you could play chords...


Looking forward to see the program evolve!
chrrris
Drutt
Posts: 11
Joined: Wed Nov 15, 2017 10:09 pm

Re: Bintracker - New Beeper Music Editor

Post by chrrris »

Having the sequence scroll, and the pattern indicator move, etc, when you press play is really tricky. You are basically running a speccy emulator in the background, but the emulator has to talk the host UI to inform it when to "tick" over to the next note in the pattern, or to tick over to the next pattern in the sequence. Then the UI has to load the pattern, update the position and any other UI bits and pieces without affecting the speed or performance of the emulation at all (otherwise the sound will stutter or go out of tune).

It has to be multi-threaded code. I don't think there'd be any way to make it work in a single thread. In case it's of use to any current or future beeper editor authors, the way beepola does it is to run the emulation in it's own thread, and for each engine there are up to three memory addresses each recorded for "NextPatternTick" and "NextNoteTick". When the Z80 program counter hits one of these memory addresses, the emulator thread posts a WM_USER message to the main UI thread, the UI thread uses these messages to sync the UI to what's going on in the emulator.

It's tricky to get right, and even trickier if (as Bintracker appears to do) you support plugins for new engines. As all the engines in Beepola are hardcoded, I was able to hack stuff - for example, the NextPattternTick and NextNoteTick values for some engines are actually the same memory address, with extra logic to look at other Z80 registers before posting the right messages back to the UI. Tis a bit harder to do that sort of thing with plugins!
User avatar
4thRock
Manic Miner
Posts: 415
Joined: Thu Nov 09, 2017 9:35 am
Location: Portugal

Re: Bintracker - New Beeper Music Editor

Post by 4thRock »

Thanks for explaining.
Sure, that sort of stuff is never easy to implement. That's why there are still command line tools ;)
User avatar
RMartins
Manic Miner
Posts: 776
Joined: Thu Nov 16, 2017 3:26 pm

Re: Bintracker - New Beeper Music Editor

Post by RMartins »

Nice tool UTZ.
Certainly a nice addition to a ZX musician arsenal :)

Hope to see you make great new music, using it.
User avatar
utz
Microbot
Posts: 113
Joined: Wed Nov 15, 2017 9:04 am
Contact:

Re: Bintracker - New Beeper Music Editor

Post by utz »

Thanks, you guys! :)

Haha cheers Chris, without looking at Beepola's source code I arrived at pretty much the same conclusion, just haven't implemented it yet. Of course the plug-in system makes things a little more complicated. The idea is that each engine configuration should provide a list of possible breakpoints (because there are engines that don't pass through a single code point for sequence and pattern data read operations). When hitting one of the specified breakpoints, the emulator will do a callback. As long as the UI keeps track of the current playback position, it can automatically determine whether the next operation is a pattern or a sequence read. The only problem is that there may be engines that use pattern jumps. In that case, keeping track of the playback position suddenly becomes much more complicated.


Thanks for your comments 4thRock, much appreciated ;)
4thRock wrote: Thu Nov 16, 2017 7:29 pm From a usability point of view, it needs to have active button states.
Yep, agreed. Will work on that.
4thRock wrote: Thu Nov 16, 2017 7:29 pm I was expecting the pattern sequence to scroll when I press play. More visual feedback is needed.
Well, as chrrris explained, it's not that easy to do. I do have plans however to have at least some sort of playback position indicator.
4thRock wrote: Thu Nov 16, 2017 7:29 pm The program window should maximize and try to show the entire pattern.
On a large monitor I should be able to see the entire pattern at once.
You can change the window size in the ini file. I haven't implemented in-program window resizing yet because that's quite a big can of worms to open, actually. And the graphics code in Bintracker is pretty dodgy already, so I want to rework that first before moving forward with extra features like resize, fullscreen support, different font sizes etc.
4thRock wrote: Thu Nov 16, 2017 7:29 pm Nice-to have future feature: real-time recording of multi-key presses, assigning them to multiple channels as needed. So that you could play chords...
That's a good idea, hadn't thought about that. I think on the long run Bintracker also needs to have support for MIDI input ;)
Post Reply