Home

Awesome

<!-- Icon & Title --> <p align="center"> <img src="./data/icons/128x128/apps/BambooTracker.png" alt="BambooTracker-icon"> <h1 align="center">BambooTracker</h1> </p> <!-- Badges --> <p align="center"> <a href="https://github.com/BambooTracker/BambooTracker/releases"> <img src="https://img.shields.io/github/v/release/BambooTracker/BambooTracker?color=brightgreen" alt="BambooTracker Version Number (autogenerated image)"> </a> <img src="https://img.shields.io/badge/platforms-windows%20|%20macos%20|%20linux%20|%20bsd-yellow.svg" alt="BambooTracker Platforms: Windows, macOS, Linux, BSD"> <a href="./LICENSE"> <img src="https://img.shields.io/badge/license-GPL--2.0%2B-orange" alt="BambooTracker License: GPL-2.0 or later"> </a> <br> [Build Tests]<br> <a href="https://github.com/BambooTracker/BambooTracker/actions?query=workflow%3A%22Windows+10+%2864-bit%2C+Qt6%29%22"> <img src="https://img.shields.io/github/actions/workflow/status/BambooTracker/BambooTracker/windows-10-qt6.yml?label=Windows%2010&logo=windows" alt="BambooTracker Build-Test Status on Windows (Qt6)"> </a> <a href="https://github.com/BambooTracker/BambooTracker/actions?query=workflow%3AmacOS"> <img src="https://img.shields.io/github/actions/workflow/status/BambooTracker/BambooTracker/macos.yml?label=macOS&logo=apple" alt="BambooTracker Build-Test Status on macOS"> </a> <a href="https://github.com/BambooTracker/BambooTracker/actions?query=workflow%3A%22Linux+%28Ubuntu%29%22"> <img src="https://img.shields.io/github/actions/workflow/status/BambooTracker/BambooTracker/ubuntu.yml?label=Ubuntu&logo=ubuntu&logoColor=white" alt="BambooTracker Build-Test Status on Linux (Ubuntu)"> </a> <a href="https://github.com/BambooTracker/BambooTracker/actions?query=workflow%3A%22Linux+%28Nixpkgs%29%22"> <img src="https://img.shields.io/github/actions/workflow/status/BambooTracker/BambooTracker/ubuntu.yml?label=Nixpkgs&logo=nixos&logoColor=white" alt="BambooTracker Build-Test Status on Linux (Nixpkgs)"> </a> <a href="https://ci.appveyor.com/project/BambooTracker/bambootracker"> <img src="https://img.shields.io/appveyor/build/BambooTracker/BambooTracker?label=Appveyor&logo=appveyor&logoColor=white" alt="BambooTracker Development-Build Status"> </a> <br> <a href="./README.md">English</a> | <a href="./README_ja.md">日本語</a> </p>

BambooTracker is a cross-platform music tracker for the Yamaha YM2608 (OPNA) sound chip which was used in NEC PC-8801/9801 series computers.

Table of Contents

  1. Wiki
  2. Community
  3. Translations
  4. Downloads
    4.1. Releases (Windows, macOS, Linux)
    4.2. Development Builds (Windows, macOS)
    4.3. Packages (macOS, Linux, BSD)
  5. Key Commands
  6. Effect List
  7. File I/O
  8. Building
    8.1. Dependencies
    8.2. Compilation
  9. Changelog
  10. License
  11. Credits

Wiki

On the BambooTracker GitHub Wiki, you can find some more details on:

Community

We have an official Discord server where you can chat with BambooTracker users, developers and package maintainers, ask for help, help others and share your tunes on.

Translations

BambooTracker currently supports the following languages:

If you'd like to see your language of choice added to the list, join the Discord server and let us know! We can walk you through the steps required to set up the translation tool.

Downloads

Releases (Windows, macOS, Linux)

Releases are recommended for most users, as they should provide a good & stable experience.

Release

Development Builds (Windows, macOS)

Development builds are built & uploaded whenever a code change has been committed to the base repository or a pull request. They thus offer the latest or in-development features and fixes, but are not optimised for regular use.

Development Build

Packages (macOS, Linux, BSD)

Packaging status

Nixpkgs (macOS, Linux)

Nixpkgs package: https://search.nixos.org/packages?query=bambootracker

Declarative installation:

{
  environment.systemPackages = with pkgs; [
    bambootracker
  ];
}

Imperative installation:

nix-env -iA nixpkgs.bambootracker

Debian / Ubuntu

sudo apt install bambootracker

Arch / Manjaro

AUR package: https://aur.archlinux.org/packages/bambootracker-git/

FreeBSD

pkg install bambootracker

Other

See Building

Key Commands

See KEYCOMMANDS.md.

Effect List

See EFFECTLIST.md.

File I/O

See FILEIO.md.

Building

Dependencies

To build BambooTracker, you'll need the following dependencies across all platforms:

How to acquire these and further required / optional dependencies are specific to your OS (distribution).

Windows

macOS

For simplicity, these instructions assume the use of Homebrew & Qt5.

brew install qt5

Optional dependencies:

Linux

Installing dependencies highly depends on your distribution and package manager of choice, search the subsections below for your distribution to find a tested set of install instructions.

Additional dependencies:

Optional dependencies:

Debian / Ubuntu
# Optional dependencies
OPTIONALDEPS=""

# PulseAudio
OPTIONALDEPS="$OPTIONALDEPS libpulse-dev"

# Either:
# JACK 1
OPTIONALDEPS="$OPTIONALDEPS libjack-dev"
# JACK 2
OPTIONALDEPS="$OPTIONALDEPS libjack-jackd2-dev"

# Either / Both:
# System-RtAudio
OPTIONALDEPS="$OPTIONALDEPS librtaudio-dev"
# System-RtMidi
OPTIONALDEPS="$OPTIONALDEPS librtmidi-dev"

# Install dependencies
apt install \
  build-essential \
  qt5-default qttools5-dev-tools \
  libasound2-dev \
  $OPTIONALDEPS
Arch Linux / Manjaro
# Optional dependencies
OPTIONALDEPS=""

# PulseAudio
OPTIONALDEPS="$OPTIONALDEPS libpulse"

# Either:
# JACK 1
OPTIONALDEPS="$OPTIONALDEPS jack"
# JACK 2
OPTIONALDEPS="$OPTIONALDEPS jack2"

# Either / Both:
# System-RtAudio
OPTIONALDEPS="$OPTIONALDEPS rtaudio"
# System-RtMidi
OPTIONALDEPS="$OPTIONALDEPS rtmidi"

# Install dependencies
pacman -S \
  qt5-tools \
  alsa-plugins \
  $OPTIONALDEPS

BSD

Mostly like Linux:

If you managed to get BambooTracker manually compiled on a BSD system, feel free to open a Pull Request and add your dependency install instructions here!

Compilation

These compilation instructions assume CLI usage, though it's possible to use an IDE like Qt Creator instead. They should generally work on all platforms, specific changes are mentioned in the subsections below.

Qmake options (flags/switches):

<sup>1</sup>: Only works on Linux and BSD.
<sup>2</sup>: Shipped & auto-detected(?) on FreeBSD but possibly not functional in RtAudio.
<sup>3</sup>: API technically supported on Windows but unlikely to compile in Rt library.
<sup>4</sup>: Builds code that doesn't use an OSI-certified license. Only supported on Windows.

Example:

# Where you want to locally keep the source code clone
cd /home/owner/devel

# Replace --recurse-submodules with --recurse-submodules=submodules/emu2149/src if CONFIG+=system_rtaudio AND CONFIG+=system_rtmidi will be used
git clone https://github.com/BambooTracker/BambooTracker --recurse-submodules
cd BambooTracker

# Configure
qmake PREFIX=/usr/local CONFIG-=debug CONFIG+=release CONFIG+=use_alsa CONFIG+=use_pulse CONFIG+=use_jack

# Recursively initialises subprojects properly, dependency tests may be flakey if run multithreaded
make qmake_all

# Compile with 4 threads
make -j4

# Installs to PREFIX
make install

Windows

Enter a shell with Qt + your compiler set up before starting the above steps. (Qt installer adds scripts you can use for this)

Qt Creator may be used for a more graphical compilation process instead.

macOS

If you decided to use Homebrew's JACK without pkg-config, you may need to help the build process out by passing qmake some additional arguments: LIBS+=-L/usr/local/opt/jack/lib INCLUDEPATH+=/usr/local/opt/jack/include.

FreeBSD

BambooTracker can be built via FreeBSD ports instead:

cd /usr/ports/audio/bambootracker
make install clean

Changelog

See CHANGELOG.md.

License

This program and its source code are licensed under the GNU General License Version 2 or later.

See LICENSE and licenses/list.md for details.

Credits

I would like to thank the following people for making it: