67 lines
2.5 KiB
Plaintext
67 lines
2.5 KiB
Plaintext
# nibble dice tracker
|
|
|
|
a 3-channel music tracker based on the {nibble dice} described by maleza.
|
|
|
|
programmed for the {uxn} virtual machine.
|
|
|
|
=> ./img/screenshot_nibble-dice-tracker.png screenshot of the nibble dice tracker: 6 columns of 8 pairs of two dice each
|
|
|
|
=> https://video.anartist.org/videos/watch/6d2d4a2c-78ef-48c8-abd0-e124451805cb uxn nibble dice tracker - demo video
|
|
|
|
# interface
|
|
|
|
the interface consists in 3 sections, one for each audio channel/device.
|
|
|
|
each section consists in 2 columns. the right column of a section has an indicator for the position of the "beat", and its state (playing or not).
|
|
|
|
each column consists in 8 bytes.
|
|
|
|
a byte consists in 2 contiguous nibble dice: the one at the left is the high nibble, and the one at the right is the low nibble.
|
|
|
|
the bytes in a section map to the following aspects of the tracker and uxn audio device
|
|
|
|
## first column
|
|
|
|
* period ( 1 byte ) - how many frames have to happen to trigger a beat. if 0, the device is off
|
|
* pattern ( 8 bits ) - each bit indicates if a note has to be played or not in that beat. bit 0 (least significant bit) corresponds to beat 0, bit 1 to beat 1, and so on.
|
|
* beatcount ( 2 nibbles ) - definition of the beat count behavior. low nibble: how many beats happen in a cycle; if 0, there are no beats. high nibble: beat offset; starting value for the beat count. e.g. if high nibble is 2, and low nibble is 4, the beat count will repeat as 2, 3, 4, 5
|
|
* adsr ( 2 bytes ) - envelope values, as described by the audio device reference
|
|
* volume ( 2 nibbles ) - left and right volume values, as described by the audio device reference
|
|
* sample ( 2 nibbles and 1 byte ) - definition of the sample to be used. high nibble: index of sample to use. low nibble + byte: length of the sample to use
|
|
|
|
available samples:
|
|
|
|
* 0: saw
|
|
* 1: main (program code)
|
|
* 2: piano
|
|
* 3: triangular
|
|
|
|
## second column
|
|
|
|
* melody ( 8 bytes ) - midi notes corresponding to beats 0 to 7, from top to bottom.
|
|
|
|
## external notes
|
|
|
|
=> https://wiki.xxiivv.com/site/uxnemu.html#audio uxn audio device
|
|
=> https://wiki.xxiivv.com/site/midi.html midi notes
|
|
|
|
|
|
# controls
|
|
|
|
* Arrow key up, or 'k' : move cursor to previous byte
|
|
* Arrow key down, or 'j': move cursor to next byte
|
|
* Arrow key left, or 'h': move cursor to previous nibble
|
|
* Arrow key right, or 'l': move cursor to next nibble
|
|
* 'Ctrl' or '+': increment nibble
|
|
* 'Alt' or '-': decrement nibble
|
|
* '0' to '9' and 'a' to 'f': assign hexadecimal value to nibble
|
|
|
|
# the code
|
|
|
|
you can find the code in the {uxnería}
|
|
=> https://codeberg.org/sejo/uxneria uxnería repo
|
|
|
|
# possible improvements
|
|
|
|
* midi output?
|