Skip to content

Ncurses based audio tracker program inspired by goattracker and milkytracker

License

Notifications You must be signed in to change notification settings

danfrz/PLEBTracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PLEBTracker

PLEBTracker is a linux console based audio tracker program inspired by goattracker and milkytracker. ScreenShot

Pattern editor, main song editor window

On the right are the Wave, Pulse, and Filter tables. (described in docs/manual.txt). The sound an instrument makes is determined by the indicies it points to in these tables.

  • The WAVE table determines the waveform used for the instrument.
  • The PULSE table determines pulse width modulation (described in docs/wavetable.pdf and docs/manual.txt) of waveforms that use pulse width modulation.
  • The FILTER table allows tracks to filter out certain frequencies (described in docs/manual.txt) .

ScreenShot

Instrument Editor, with volume envelope visualization. The Volume table on the left determines the shape of the envelope

PLEBTracker is something I wrote because I wanted to have some experience with audio, and wanted to implement what I've been learning by using other trackers and studying music theory with the help of my piano teacher.

With this program, like other trackers, you can compose music (.plb modules) and listen to them. All of the sounds produced in this tracker are synthesized, meaning there are no samples.

If anyone is having trouble installing or compiling I'd be happy to hear about it! Make an issue or email me.

Requirements

In order to run and build PLEBTracker the following programs and libraries are required. program/library... (package... )

On Arch and Debian (at least) these packages are sufficient to get it working

  • ncurses (ncurses)
  • fftw3 (fftw)
  • aplay (alsa-utils)
  • inotifywait (inotify-tools)
  • sudo (sudo)

Some distributions may not have these exact package names but these names should work for at least Archlinux and Debian.

Right now, to get this working on ubuntu 16.04 (and probably variants?) you need

  • inotifywait (inotify-tools)
  • ncurses (libncursesw5 and libncursesw5-dev)
  • fftw3 (libfftw3 and libfftw3-dev)

(sudo and aplay are already installed, or were when I tested them)

Unfortunately, when libncursesw5 is installed on ubuntu, the headers are placed within /usr/include/ncursesw/, therefore each of the header files within Tracker/include/ and Tracker/src/main.cpp need to be modified so that

#include <ncurses.h>

becomes

#include <ncursesw/ncurses.h>

and in the Tracker/src/Makefile change the LIBS line so that

LIBS=-lncurses

becomes

LIBS=-lncursesw

Sorry about this badness, hopefully in a future (or current?) version of Ubuntu get_wch will be included within regular (ncurses.h)

Installation

Clone this project from git

git clone https://github.com/danfrz/PLEBTracker

cd to ./Tracker/src then as your user (not root) run

make ; ./INSTALL.sh;

cd to ./Interpreter/src

make ; ./INSTALL.sh;

Usage

To open a song within the tracker, the easiest way is from the commandline:

   plebtrk song.plb

To simply play a song without openning the tracker run:

   plebplay song.plb [OPTIONS...]

To render a song directly to flac run:

   plebrender song.plb [OPTIONS...]

And probably not a very popular option but to have the raw byte data go directly to stdout instead of aplay run:

   plebitp song.plb [OPTIONS...] 2>/dev/null

Example songs can be found in ./examples and their respective flac renderings in ./examples/render.

All of the programs that are installed have manual pages with important information on using the tracker. Most importantly, see the plebtrk manual page.

The most efficient and effective way to perform actions in the tracker's interface is by using the vim-like command bar, which is shown by pressing ':'. Those commands and other binds can be reviewed on the plebtrk man page.

If you're interested, look through the docs folder, the manual provides a good introduction to the tracker (I hope) and wavetable.pdf details what synths/wave generators have been implemented so far. patternedtr.pdf has information on the effects that are available in the pattern editor as well as going over some of its' quirks.

Custom Chromatic Scales

It is now possible to compile PLEBTracker to use arbitrary chromatic scales with the change of just two preprocessor directives! (so long as the notes you want in the scale are exponentially interpolated between octaves, not arbitrary.) The notes in the chromatic scale is 12 by default (C C# D D# E F F# G G# A A# B) this can be changed in Common/include/pattern.h Only values between 0 and 16 will work due to space restrictions of the module file. Change CHROMATIC_NOTES to 0 to 16, change NOTEMULT to the CHROMATIC_NOTES root of 2, e.g. if CHROMATIC_NOTES is 12, NOTEMULT = the twelvth root of two. The interface will automatically bind your new scale to the keys on your keyboard. Chromatic scales that aren't 12 or 16 are assigned letters starting from A and on, but placing C as the lowest in the octave regardless of scale.

About

Ncurses based audio tracker program inspired by goattracker and milkytracker

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published