top | item 37377529

Bintracker: A chiptune audio workstation for the 21st century

213 points| generichuman | 2 years ago |bintracker.org | reply

65 comments

order
[+] pezz|2 years ago|reply
If you haven't heard of it, there's another cool tracker making great strides right now, Furnace:

https://github.com/tildearrow/furnace

Allows you to compose tunes on several chips / platforms in the one song.

[+] johnnyworker|2 years ago|reply
Oh.. I am in love. And it can load Future Composer modules! Finally I can play one of my favorite tunes of all time in a tracker without an emulator.

https://files.exotica.org.uk/modland/?file=pub/modules/Futur...

The playback seems a bit off in places, or maybe my memory is, but since the program is still being developed I don't care. So happy right now. Thank you so much.

[+] fidotron|2 years ago|reply
Is there a standard player for these things? Or is that too dependent on the chips being targeted?

One of the strengths of the old Amiga mods was the number of libraries around for playback which made writing a player or dropping a mod in your game trivial.

[+] jefurii|2 years ago|reply
Looks pretty awesome - kinda wish it had MIDI output...
[+] joebergeron|2 years ago|reply
Fantastic - I love seeing new tools in service of chipmusic, and this one looks real sleek. The platform agnosticism sort of feels like MML[0] but with a GUI, in that it has the appeal of "one tool, all platforms". I wonder -- what degree of control over platform-specific parameters does the software offer? Some of the greatest artists who have worked on particular platforms possess all sorts of arcane knowledge about the ins-and-outs of their platform, and know how to use (read: abuse) platform-specific quirks to their advantage. (For the curious, Phlogiston[1] is a good example for the 2A03; Trey Frey[2] for the DMG.) I love the generality of the idea, but would be concerned about the level of control I have over platform-specific features.

Another thing that I would probably need in order to use this seriously is compilation down to native-compatible file formats for recording from hardware. Can I e.g., export an NSF for the 2A03, a .MED for Octamed playback, some sort of SAV or LSDSNG for the DMG, etc.?

It's late here, so I haven't given this a spin yet, but will definitely play around with this soon - fantastic work!! :)

[0]: https://www.nesdev.org/mck_guide_v1.0.txt

[1]: https://phlogiston.bandcamp.com/album/nectar

[2]: https://treyfrey.bandcamp.com/album/refresh

[+] woolion|2 years ago|reply
Cool!

If you're on an arch-based distro, when following https://github.com/bintracker/bintracker/blob/master/docs/se... in the Makefile you have to replace csc by chicken-csc (csc is the Microsoft CSharp compiler), provided by the chicken package. Also not sure why the dependencies don't include mame, but make sure to install it before running.

[+] grawlinson|2 years ago|reply
Do you have a PKGBUILD available? I'm currently running into this particular issue when installing the requisite chicken libs:

building srfi-14 /usr/bin/chicken-csc -host -D compiling-extension -J -s -regenerate-import-libraries -setup-mode -I /home/deploy/.cache/chicken-install/srfi-14 -C -I/home/deploy/.cache/chicken-install/srfi-14 -O3 -d0 srfi-14.scm -o /home/deploy/.cache/chicken-install/srfi-14/srfi-14.so /usr/bin/chicken-csc -regenerate-import-libraries -M -setup-mode -static -I /home/deploy/.cache/chicken-install/srfi-14 -emit-link-file /home/deploy/.cache/chicken-install/srfi-14/srfi-14.link -host -D compiling-extension -c -unit srfi-14 -D compiling-static-extension -C -I/home/deploy/.cache/chicken-install/srfi-14 -O3 -d0 srfi-14.scm -o /home/deploy/.cache/chicken-install/srfi-14/srfi-14.static.o /usr/bin/chicken-csc -setup-mode -s -host -I /home/deploy/.cache/chicken-install/srfi-14 -C -I/home/deploy/.cache/chicken-install/srfi-14 -O3 -d0 srfi-14.import.scm -o /home/deploy/.cache/chicken-install/srfi-14/srfi-14.import.so installing srfi-14 install: cannot create regular file '/usr/lib/chicken/11/srfi-14.o': Permission denied

Error: shell command terminated with nonzero exit code 256

[+] katspaugh|2 years ago|reply
> Bintracker is written in Scheme, using the CHICKEN Scheme implementation. The full power of Scheme is available at run-time, which means you can program Bintracker... in Bintracker.

Amazing! Not only can I enjoy the gameboy sounds but also program them in Lisp!

[+] LeonidasXIV|2 years ago|reply
Except it doesn't support the Gameboy sound chip yet. In general the only sound chips supported are very old and limited, so unless you make 2600 chiptune this is only of limited utility.
[+] sim7c00|2 years ago|reply
Awesome, I still work in Renoise tracker today :> trackers are amazing (Renoise support VST3 and other modern stuff - not a chiptune tracker but a full DAW based on fastTracker.).

Love to see this though am definitely going to give it a whirl. epic!

[+] 0xbs0d|2 years ago|reply
I've been a fan and user of trackers since Octamed on the Amiga :) Renoise is an amazing DAW and my favorite piece of music software.
[+] matheusmoreira|2 years ago|reply
Fantastic project. For a second I thought it was a terminal application.
[+] codetrotter|2 years ago|reply
> By using MAME as emulation backend, a vast array of 8- and 16-bit platforms are covered.

That's genius!

[+] rob74|2 years ago|reply
They weren't the first ones to come up with the idea though: there is at least one music player (which I only heard of a few days ago thanks to another thread here) called UADE (http://zakalwe.fi/uade/uade.html) which runs UAE (an Amiga emulator) in the background, with the emulator running Eagleplayer (the "most comprehensive soundplayer for the Amiga"). I wonder how Bintracker gets around the requirement of having to write native code that actually plays the music on all the various platforms? But I guess that a stub that just "pipes" the data through to the emulated sound hardware is relatively easy to write.
[+] makach|2 years ago|reply
This is so incredibly cool. It's such an amazing acknowledgement of this style of music, making it easier to create and consumer chip-styled music - it is also incredibly important that we all continue to support this by creating software so that we can access the legacy music in its original form.

*

[+] lagniappe|2 years ago|reply
> macOS builds should be possible with some minor adjustments, though this is currently unsupported. Please get in touch if you manage to get a macOS build running.

Has anyone built this on apple silicon yet?

[+] codetrotter|2 years ago|reply
I was not able to install the sqlite3 Chicken scheme egg on macOS Ventura where I have Xcode version 15.0 beta 2 installed.

    building sqlite3
       /opt/homebrew/Cellar/chicken/5.3.0_1/bin/csc -host -D compiling-extension -J -s -regenerate-import-libraries -setup-mode -I /Users/user/.cache/chicken-install/sqlite3 -C -I/Users/user/.cache/chicken-install/sqlite3 -O2 -d1 -L -lsqlite3 sqlite3.scm -o /Users/user/.cache/chicken-install/sqlite3/sqlite3.so
    /Users/user/.cache/chicken-install/sqlite3/sqlite3.c:299:23: error: call to undeclared function 'sqlite3_enable_load_extension'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    C_r=C_int_to_num(&C_a,sqlite3_enable_load_extension(t0,t1));
                          ^
    /Users/user/.cache/chicken-install/sqlite3/sqlite3.c:306:23: warning: 'sqlite3_enable_shared_cache' is deprecated: first deprecated in macOS 10.7 - Not supported [-Wdeprecated-declarations]
    C_r=C_int_to_num(&C_a,sqlite3_enable_shared_cache(t0));
                          ^
    /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sqlite3.h:6656:16: note: 'sqlite3_enable_shared_cache' has been explicitly marked deprecated here
    SQLITE_API int sqlite3_enable_shared_cache(int);
                   ^
    1 warning and 1 error generated.

    Error: shell command terminated with non-zero exit status 256: 'clang' '/Users/user/.cache/chicken-install/sqlite3/sqlite3.c' -o '/Users/user/.cache/chicken-install/sqlite3/sqlite3.o' -c  -fno-strict-aliasing -fwrapv -fno-common -DHAVE_CHICKEN_CONFIG_H -DC_ENABLE_PTABLES -Os -fomit-frame-pointer -fPIC -DPIC -DC_SHARED -I/Users/user/.cache/chicken-install/sqlite3 -I/opt/homebrew/Cellar/chicken/5.3.0_1/include/chicken

    Error: shell command terminated with nonzero exit code
    256
    "sh /Users/user/.cache/chicken-install/sqlite3/sqlite3.build.sh"
All other dependencies installed fine though.
[+] wpwpwpw|2 years ago|reply
Just wanted to say the interface is beautiful.
[+] eole666|2 years ago|reply
Really cool project! I think that the home page lacks some audio exemple produced with it or video captures of the software being used to get a better idea of what it's like.
[+] dinkleberg|2 years ago|reply
This is awesome.

Also I think this is the first time I’ve seen something actually built in scheme (not that I’ve been actively looking, I’m sure there are plenty).

[+] miika|2 years ago|reply
Cool. Gotta try if this compiles into wasm. Having this in a browser would be amazing.
[+] Jolter|2 years ago|reply
No news updates since February. I hope it's not because the developer lost momentum. It's still in alpha, after all.
[+] rob74|2 years ago|reply
If you look at the activity on GitHub (https://github.com/bintracker/bintracker/graphs/contributors), they have been working on the project since mid 2018, with almost continuous commits until mid 2021, and then some activity at the start of 2022, and considerably more at the start of 2023. So there seems to have been some loss of momentum, but I wouldn't give up hope yet. It's just unfortunate that there is basically just one contributor (I'm ignoring the two others that contributed just one commit each) - but I guess finding fellow LISP Jedi knights (referring to the XKCD comic someone else linked) to work on this project is not that easy. Aaaand I'm not sure if focusing on "lesser known systems" (quote from the GitHub readme) is the right strategy. Sure, there are already lots of players for e.g. Amiga MOD files, but there are also more people interested in that platform...
[+] nylonstrung|2 years ago|reply
Very cool. How does this differ from Renoise
[+] xcv123|2 years ago|reply
The only thing they share in common is they both have a tracker sequencer.

Renoise generates audio using samples and VST/AudioUnit plugins.

Bintracker generates audio using emulated sound chips. It is specifically for producing chiptunes on vintage arcade/console sound engines.

[+] defensem3ch|2 years ago|reply
renoise very much takes influence from modern daws, supports vst plugins and its own native effects and uses high quality samples. it's also full-fledged with tons of features, it's like the ableton live of trackers. bintracker is much more barebones and is still in pre-alpha, and it is primarily aimed to produce chiptune faithful to hardware.
[+] sitzkrieg|2 years ago|reply
impressive use of chicken scheme