Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Bintracker: A chiptune audio workstation for the 21st century (bintracker.org)
213 points by generichuman on Sept 5, 2023 | hide | past | favorite | 65 comments


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.


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.


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.


Looks pretty awesome - kinda wish it had MIDI output...


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


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.


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


No, I just followed the instructions, I was wondering if I should make one.

I also had the problem, but that is something for which you just need to run with sudo. Maybe there's a way to configure the path so that it can be run as an unprivileged user?


> 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!


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.


Except it is on mame, so THAT is subject to evolution of project


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!


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.


Fantastic project. For a second I thought it was a terminal application.


> By using MAME as emulation backend, a vast array of 8- and 16-bit platforms are covered.

That's genius!


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.


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

It looks that way. There's binary files for the MAME Bridge, which probably orchestrate the raw music data.

If I remember correctly, that's rather common on the original platforms, too. On the C64, there were a few "music routines" that marshaled patterns of notes to the SID chip. One famous example being that of composer Rob Hubbard[1], whose "One Man and his Droid" still lives rent-free in my head.

Chicken Scheme, Tk and MAME seem like a very cool tech stack for this.

[1]: https://www.1xn.org/text/C64/rob_hubbards_music.txt


I wish somebody built a version of the article you linked where you can actually click on the tunes he mentions and play them. Talking about music without being able to hear it is a bit... dry (I never had a C64, I upgraded from the Atari 800 to the Amiga, so I'm not that into SID chiptunes).


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.

*


> 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?


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.


I opened a GitHub issue about it at https://github.com/bintracker/bintracker/issues/19


Try compiling it with:

-Wdeprecated-declarations


same here

apparently this didn't fix it? https://bugs.call-cc.org/ticket/1335


Getting there, but it doesn't quite work: https://github.com/bintracker/bintracker/issues/20


Just wanted to say the interface is beautiful.



Why is that noteworthy? MIT is the most popular license for Github projects.


It's noteworthy, because it took me 5-10 clicks to find the git repo, so I linked the license.


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.


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


Cool. Gotta try if this compiles into wasm. Having this in a browser would be amazing.


No news updates since February. I hope it's not because the developer lost momentum. It's still in alpha, after all.


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


There needs to be like a chiptune piano with concerts and all.



I mean like a line of them people can buy and use them to compose/play.


Depending on what aspects of chiptunes you care about, the Polyend Tracker Mini (https://polyend.com/tracker-mini/) might be right. It's less like a portable hardware version of Bintracker and more like a portable hardware version of Renoise. So it's a hardware tracker device, and you could load up some lofi square and saw wave looping samples and some looping noise samples and make music with the tracker that many would consider chiptunes, but you don't get the chip emulation that Bintracker has.


That's pretty cool, despite the price point, especially if it outputs 8bit tunes.


You could get a MIDI controller (keyboard with MIDI output but not sound generation capabilities) and connect it to a suitable MIDI synthesizer. There are many MIDI synths available with real or emulated chip sounds.


I always wondered if you can use midi capable pianos to play chiptunes, even emulated tunes if not actual 8bit.


Very cool. How does this differ from Renoise


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.


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.


It has a ton of features but unfortunately resizable fonts is not one of them - the UI text is way too small.


Very nice ImGui showcase


impressive use of chicken scheme


With the simple-ish ui, I thought for a second it was terminal based.

With that idea in mind, I googled and found [0]

Its the only terminal base tracker explicitly labeled as such on [1]

Anyone know of others?

[0] https://github.com/danfrz/PLEBTracker

[1] https://linuxmusicians.com/viewtopic.php?t=20883


Chiptune audio workstation without support for the actual short [looped] sample based chiptunes?

Looks like it only support SID, AY, FM, etc. tunes. Just chiptunes missing.

Don't take me wrong, still interesting. But should really get terminology straight.


Isn't a "chiptune" specifically not using sample snippets (like Amiga MODs) but synthesized audio by a specialized audio chip (like a SID or AY) - and thus the name chiptune?

I'm no retro-audio afficionado, but that's what I would think of when when hearing the term (of course there's a grey area like the Namco WSG audio chip which uses small wavetables usually stored in ROM with 32 4-bit samples each).


Historically the word "chiptune" came to be specifically to talk about Amiga MODs emulating music made on SID, FM chips with short samples.

That's why it's a bit weird to call "chiptune" a thing that is supposed to run on the real things. (SID music on the C-64 aren't called chiptunes)


> SID music on the C-64 aren't called chiptunes

That is pretty contentious claim


In the 90s at least, chip music for the SID was mostly called "SID tunes".

People didn't care about authenticity of real chips vs. chip-style tracker music until fast Internet and large disks became common. People stopped caring about small file sizes, and started making chip-style music using DAWs and releasing it as MP3s. There was backlash against this, and people began to think that only music made with hardware chips was authentic.

I believe tracker chiptunes were collateral damage in the rejection of MP3 chip-style music, because there's no way to to clearly define if tracker chiptunes are real chiptunes or not. Lots of tracker chiptunes use short percussion samples in addition to the looped single-cycle waveforms. When there was a culture of keeping file sizes small, this was accepted without question. When large file sizes forced people to start thinking about what counted as real chiptunes, this element of subjectivity became a problem. How long a sample is too long? With music for sound chips it's easy to test if it works on the real hardware. There's no equivalent test for tracker chiptunes. It's easiest to rename tracker chiptunes to "chip style", and use "chiptune" to mean hardware chips only.


Modules that can be called chiptunes have samples that are just one waveform cycle, so the length counted in bytes, at most hundreds.


The meaning of chiptune has been overloaded since at least 1994 when I heard it both for what you say, simple Amiga MODs and for C64 and Spectrum tunes. The first term was used for MOD compos.


It uses emulated audio chips from Mame emulator. Some audio chip emulators are pretty damn good, the best thing you can get without having actual analog hardware in the loop.

Not sure why you think samples are better.


It's not that I consider samples better, but what the term 'chiptune' actually means.

I do appreciate nice SIDs, AYs etc. as well, being a kid of the eighties.


Hehe, news section is honest:

* Loads of bugs


x


Jummbox being a web app is the most striking diffeence. Plus it doesn;t seem to be "emulating" different chipsets, just general chiptune style.


Cool but it doesn't look 21st century at all, it would be entirely at home in 1992. Retro is cool though.


A 1992 retro UI would use a silver-grey background with 3D bevels and rainbow color details in 320x200 or 320x256 pixels (e.g. https://en.wikipedia.org/wiki/Protracker#/media/File:Protrac...)


I thought 21st century means low contrast UI and single color icons


And hiding scrollbars and keyboard/mouse pointers, and huge icons eating screen space without any function, and tiny fonts, and hamburger menu ( preferably 2), and no settings, and ....


And push a new minor update at least once a week that moves something in the UI around for no obvious reason.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: