Bintracker: A chiptune audio workstation for the 21st century
bintracker.org
bintracker.org
https://github.com/tildearrow/furnace
Allows you to compose tunes on several chips / platforms in the one song.
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.
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.
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
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.
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
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?
Amazing! Not only can I enjoy the gameboy sounds but also program them in Lisp!
Love to see this though am definitely going to give it a whirl. epic!
That's genius!
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.
*
Has anyone built this on apple silicon yet?
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.-Wdeprecated-declarations
apparently this didn't fix it? https://bugs.call-cc.org/ticket/1335
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).
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.
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?
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.
Not sure why you think samples are better.
I do appreciate nice SIDs, AYs etc. as well, being a kid of the eighties.
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).
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)
That is pretty contentious claim
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.
* Loads of bugs