# Marabu Marabu is a simple open-source music tracker built from Soundbox. ## Guide If this is your first time using a tracker, don't worry this quick introduction will cover the basics of writing a little track, and exporting it to an audio file. The interface is divided into 3 columns, the *sequencer*, the *pattern editor* and the *instrument*. By default, the application launches with an active pattern, in the first instrument. There is a maximum of 16 instruments that can play at the same time. To move the **pattern cursor**, use the arrow keys. Pressing the keyboard keys a,s,d,f,g,h & j will record a note in the first row of the first column. Pressing the ArrowDown and ArrowUp keys, will move the *cursor* up/down in the sequencer. Allowing you to fill `pattern #1` with notes. Pressing `space` will play the pattern, pressing `esc` will stop. To change the **sequencer patterns**, use the arrow keys while `holding alt`. To add notes to a second instrument, move to the second column and press `alt ArrowRight`, this will set the first row of the second instrument to 1, and allow you to record notes. Press `alt ArrowDown` to move to the second row, and press `alt ArrowRight` again twice, to extend the track to 2 rows, and begin adding notes to the second row of the second instrument. To change the **instrument controls**, use the arrow keys while `holding shift`. To save your song, press `ctrl s`, to render an audio file(.wav) press `ctrl r`. ## Controls ### Basics - `space` Play. - `esc` Stop. ### General - `ctrl n` New. - `ctrl s` Save. - `ctrl S` Save as. - `ctrl o` Open. - `ctrl r` Export .wav. - `ctrl i` Export .ins(instrument). - `ctrl t` Export .thm(instrument). ### Sequencer #### Arrows - `alt ArrowDown` Next Sequence. - `alt ArrowUp` Previous Sequence. - `alt ArrowRight` Increment Pattern Id +1. - `alt ArrowLeft` Decrement Pattern Id -1. #### Keys - `ctrl l` Loopmode, see below. ### Editor #### Arrows - `ArrowRight` Next Instrument. - `ArrowLeft` Previous Instrument. - `ArrowDown` Next Row. - `ArrowUp` Previous Row. #### Keys - `)` Increment Note Value +12. - `(` Decrement Note Value -12. - `0` Increment Note Value +1. - `9` Decrement Note Value -1. - `Backspace` Erase Note in Row. - `/` Add a Control Keyframe. - `Tab` Toggle **Composition Mode**. ### Instrument #### Arrows - `shift ArrowDown` Next Control. - `shift ArrowUp` Previous Control. - `shift ArrowRight` Increment Control Value +1. - `shift ArrowLeft` Decrement Control Value -1. #### Keys - `]` Increment Control Value +10. - `[` Decrement Control Value -10. - `}` Increment Control Value +1. - `{` Decrement Control Value -1. - `x` Next Octave. - `z` Previous Octave. ### Keyboard Hold `shift`, while pressing a note, to make chords. - `a` Play/Record C. - `s` Play/Record D. - `d` Play/Record E. - `f` Play/Record F. - `g` Play/Record G. - `h` Play/Record A. - `j` Play/Record B. - `w` Play/Record C#. - `e` Play/Record D#. - `t` Play/Record F#. - `y` Play/Record G#. - `u` Play/Record A#. ## Effects ### Envelope - `ATK` Attack - `SUS` Sustain - `REL` Release - `POW` Attack/Release curve ### Osc - `MOD` -- - `MIX` Dry/Wet between the 2 osc - `FRQ` Frequency - `DET` Detune, frequency offset between the 2 osc. ### LFO - `AMT` Amount - `FRQ` Frequency ### Efx - `LP` Low-pass - `HP` High-pass - `BP` Band-pass - `FRQ` Filter Frequency - `RES` Resonance ### Delay - `DLY` Delay Rate - `VOL` Delay Volume ### Shapers - `NOI` Noise Volume - `BIT` Bitcrusher - `DIS` Distortion - `PIN` Pinking - `CMP` Compressor - `DRV` Drive - `PAN` Pan ### UV - `VOL` UV Volume/Envelope - `WAV` UV Wave shape ## Cheatmode Press `ctrl k` to activate cheatmode. Press `esc` to exit cheatmode. ### Selection The cheatmode will catch 3 keys, corresponding to int/hex of `rate`, `length` & `offset` of the selection. The `/` key indicates that it does not loop through the whole pattern. - `4` Every 4th note. - `42` Every 4th note, and the following one. - `422` Every 4th note, and the following one, starting from the second. - `/` Only the first note. - `/ 44` Only the 5th, 6th, 7th and 8th first notes. ### Copy/Paste - `c` To copy the entire pattern. - `v` To paste copied notes. - `4 c` To copy every 4th note. ### Insert Multiple - `8 as` This will add C5 and D5 to the 1st and 9th note. ### Erase Multiple - `backspace` To clear a whole column. - `4 backspace` To clear every 4th bar. - `42 backspace` To clear every 4th bar, starting at the second bar. ### Modify Multiple - `+` Increment each note of the pattern. - `-` Decrement each note of the pattern. ### Use case To copy the first 16 bars, into the 16 following bars and play the following note. - `/ F c` Copy the first 16 bars. - `/ F F v` Paste the first 16 bars from the the 16th bar. ## Loopmode Press `ctrl l` to activate loopmode. ### Selective play - `enter` Will play from current sequencer row, for 1 track. - `/ enter` Will play from current sequencer row, only active instrument, for 1 track. - `4 enter` Will play from the current sequencer row, for 4 tracks. - `/ 4 enter` Will play from the current sequencer row, only active instrument, for 4 tracks. ### Copy/Paste - `c` To copy the selected sequence. - `v` To **insert** the selected sequence. ## Notes During render, the track time is displayed in the before-last row of the Editor in the `0252` format, or 2:52. ## Themes You can customize the look of your tracks by editing the .mar file and replacing the attributes' colors. ``` theme: { background:"#fff", f_high:"#f00", f_med:"#0f0", f_low:"#00f", f_inv:"#00f", b_high:"#ff0", b_med:"#f0f", b_low:"#0ff", b_inv:"#00f" } ``` ## Development There are currently no means to change the `bpm`, to do so, update the `bpm` value from the exported `.mar` file to an int between 50 and 450. Use `npm start` to develop locally. ### TODOs #### Optimisation - Trim tracks on export. - Load trimmed track. #### Feature - Continuous follow instead of pageview. - Template file of just sequencer sequences. #### Misc - Cancel render with escape. #### Bug - add .wav to export(cannot replicate?) - Clicking icon on dock, shows the application. Replicate on Left. ## License See the [LICENSE](LICENSE.md) file for license rights and limitations (CC).