{"id":36445159,"url":"https://github.com/schollz/collidertracker","last_synced_at":"2026-03-05T15:32:54.485Z","repository":{"id":311365836,"uuid":"1043492435","full_name":"schollz/collidertracker","owner":"schollz","description":"A terminal-based music tracker that uses SuperCollider for synthesis and sample playback.","archived":false,"fork":false,"pushed_at":"2026-01-14T14:48:28.000Z","size":18852,"stargazers_count":133,"open_issues_count":1,"forks_count":3,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-01-24T02:57:02.578Z","etag":null,"topics":["music-tracker","supercollider","tracker","tui"],"latest_commit_sha":null,"homepage":"https://schollz.com/docs/software/collidertracker","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/schollz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-24T01:12:36.000Z","updated_at":"2026-01-14T14:48:32.000Z","dependencies_parsed_at":"2025-09-13T17:47:50.808Z","dependency_job_id":"3ee92c39-901d-471e-861c-77d1d6b218cd","html_url":"https://github.com/schollz/collidertracker","commit_stats":null,"previous_names":["schollz/221e","schollz/2n","schollz/collidertracker"],"tags_count":38,"template":false,"template_full_name":null,"purl":"pkg:github/schollz/collidertracker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schollz%2Fcollidertracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schollz%2Fcollidertracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schollz%2Fcollidertracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schollz%2Fcollidertracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/schollz","download_url":"https://codeload.github.com/schollz/collidertracker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schollz%2Fcollidertracker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30133258,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T14:41:47.141Z","status":"ssl_error","status_checked_at":"2026-03-05T14:41:21.567Z","response_time":93,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["music-tracker","supercollider","tracker","tui"],"created_at":"2026-01-11T22:05:03.979Z","updated_at":"2026-03-05T15:32:54.478Z","avatar_url":"https://github.com/schollz.png","language":"Go","funding_links":["https://github.com/sponsors/schollz"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e \u003ca href=\"https://www.youtube.com/watch?v=zViMACW6VbQ\"\u003e \u003cimg\nwidth=\"600\" alt=\"vlcsnap-2025-08-23-18h24m04s244\"\nsrc=\"https://github.com/user-attachments/assets/7d4c36c0-bd28-4611-a41b-ddf864af045c\"\n/\u003e \u003c/a\u003e \u003cbr\u003e \u003ca\nhref=\"https://github.com/schollz/collidertracker/releases/latest\"\u003e \u003cimg\nsrc=\"https://img.shields.io/github/v/release/schollz/collidertracker\"\nalt=\"Version\"\u003e \u003c/a\u003e \u003ca\nhref=\"https://github.com/schollz/collidertracker/actions/workflows/build.yml\"\u003e\n\u003cimg\nsrc=\"https://github.com/schollz/collidertracker/actions/workflows/build.yml/badge.svg\"\nalt=\"Build Status\"\u003e \u003c/a\u003e \u003ca href=\"https://github.com/sponsors/schollz\"\u003e \u003cimg\nalt=\"GitHub Sponsors\" src=\"https://img.shields.io/github/sponsors/schollz\"\u003e\n\u003c/a\u003e \u003c/p\u003e\n\nA terminal-based music tracker powered by SuperCollider.\n\n_IMPORTANT NOTE: this software is currently in development and is definetly unstable and chock full of bugs._\n\n**COMPATIBILITY WARNING**: Major version changes (X.0.0 -\u003e Y.0.0) are not backward compatible. Save files from version X.0 cannot be used with version Y.0 and vice versa. Back up your projects before upgrading across major versions.\n\nThis is a music tracker designed to be used with any terminal (Linux, macOS, Windows WSL/terminal). It is the first tracker (to my knowledge) that uses [SuperCollider](https://supercollider.github.io/downloads.html) as the sound engine, which allows for very flexible sound design and synthesis.\n\n## Prerequisites\n\n- **SuperCollider** (required; extensions are checked at launch). Download [here](https://supercollider.github.io/downloads.html).\n- **collidertracker** binary. See installation options below.\n\n### Automatic Plugin Downloads\n\nColliderTracker will automatically download required SuperCollider extensions on first run if they are not already installed. These extensions are downloaded to your system's standard SuperCollider extensions directory:\n\n- **macOS**: `~/Library/Application Support/SuperCollider/Extensions`\n- **Linux**: `~/.local/share/SuperCollider/Extensions`\n- **Windows**: `%LOCALAPPDATA%/SuperCollider/Extensions`\n\nThe following extensions are automatically downloaded:\n\n- **PortedPlugins** ([schollz/portedplugins](https://github.com/schollz/portedplugins)) - Audio effects including Fverb and AnalogTape\n- **mi-UGens** ([v7b1/mi-UGens](https://github.com/v7b1/mi-UGens)) - Mutable Instruments synthesizer modules including MiBraids\n- **Open303** ([schollz/open303](https://github.com/schollz/open303)) - TB-303 bassline synthesizer emulator\n- **Juno60** ([schollz/juno-60](https://github.com/schollz/juno-60)) - Roland Juno-60 analog polysynth emulator with chorus\n- **SC3 Plugins** ([supercollider/sc3-plugins](https://github.com/supercollider/sc3-plugins)) - Community collection of SuperCollider plugins including FM7\n\n### Checking the SuperCollider Installation Worked\n\nFirst, open the SuperCollider IDE by searching for and running 'SuperCollider IDE'. The IDE should open and give you three main panes:\n\n- a large blank text window\n- a help window\n- a post window containing text about how the startup process went.\n\nSecondly, boot the server using the command in the Language menu, or Ctrl+B.\n\nThirdly, enter the following into the blank text window:\n\n```supercollider\n{SinOsc.ar}.play\n```\n\nEnsure the cursor is on this line and hit Ctrl+Enter. You should now hear a sine tone. Kill the sine tone by hitting Ctrl+.. If you don't hear the tone, remember to check your speakers, volume control – all the regular suspects!\n\n## Installation\n\n### macOS\n\n**Option 1: Homebrew (Recommended)**\n\n```bash\nbrew tap schollz/tap\nbrew install collidertracker\n```\n\n**Option 2: Manual Download**\nGrab the latest build from **[Releases](https://github.com/schollz/collidertracker/releases/latest)**.\n\n### Linux/Windows\n\nGrab the latest build from **[Releases](https://github.com/schollz/collidertracker/releases/latest)**.\n\n## Run\n\n**Option 1: (Recommended)**\n\nSimply run collidertracker - it will automatically detect if SuperCollider is already running with ColliderTracker code, or start a new instance if needed:\n\n```bash\n./collidertracker\n```\n\n_Note:_ On Windows, you may need to add SuperCollider to the list of approved programs. Run the following commands in an Administrator-level PowerShell:\n\n```powershell\nAdd-MpPreference -ExclusionProcess \"C:\\Program Files\\SuperCollider-3.13.0\\sclang.exe\"\nAdd-MpPreference -ExclusionProcess \"C:\\Program Files\\SuperCollider-3.13.0\\scsynth.exe\"\n```\n\n**Option 2: Manual SuperCollider Management**\n\nIf you prefer complete manual control:\n\n1. Run SuperCollider and then open `collidertracker/internal/supercollider/collidertracker.scd` in SuperCollider. Then, in SuperCollider, goto \"Language\" -\u003e \"Evaluate File\". SuperCollider should become Active.\n2. Run collidertracker with the `--skip-sc` flag to bypass all detection and management:\n\n```bash\n./collidertracker -s\n```\n\n### Command-line Options\n\n| Flag                  | Default | Description                                                                            |\n| --------------------- | ------- | -------------------------------------------------------------------------------------- |\n| `-p, --project \u003cdir\u003e` | `save`  | Project directory for songs and audio files                                            |\n| `--port \u003cport\u003e`       | `57120` | OSC port for SuperCollider communication                                               |\n| `-r, --record`        | `false` | Enable automatic session recording (entire session to SuperCollider recordings folder) |\n| `-s, --skip-sc`       | `false` | Skip SuperCollider detection and management entirely                                   |\n| `-l, --log \u003cfile\u003e`    | -       | Write debug logs to specified file                                                     |\n\n## Tutorial\n\n\n\u003cp align=\"center\"\u003e \u003ca href=\"https://www.youtube.com/watch?v=pFGIcI3h3m0\"\u003e \u003cimg width=\"600\" alt=\"vlcsnap-2025-08-23-18h24m04s244\"src=\"https://github.com/user-attachments/assets/7d4c36c0-bd28-4611-a41b-ddf864af045c\"/\u003e \u003c/a\u003e\n\u003c/p\u003e\n\n## Keyboard — Quick Reference\n\n### Navigation Between Views\n\n| Key Combo       | Description                                                                                                                                                                     |\n| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **Shift+Right** | Navigate deeper into structure:\u003cbr\u003e• Song → Chain (selected track/row)\u003cbr\u003e• Chain → Phrase (selected row)\u003cbr\u003e• Phrase → Retrigger/Timestretch/Arpeggio (if set) or File Browser |\n| **Shift+Left**  | Navigate back to parent view                                                                                                                                                    |\n| **Shift+Up**    | Go to Settings (from Song/Chain/Phrase) or File Metadata (from File Browser)                                                                                                    |\n| **Shift+Down**  | Go to Mixer (from Song/Chain/Phrase) or back from Mixer                                                                                                                         |\n| **p**           | Toggle Preferences (Settings) view                                                                                                                                              |\n| **m**           | Toggle Mixer view                                                                                                                                                               |\n\n### Navigation Within Views\n\n| Key Combo       | Description                                                    |\n| --------------- | -------------------------------------------------------------- |\n| **Arrow keys**  | Move cursor/navigate within current view                       |\n| **Left/Right**  | Navigate tracks (Song), chains (Chain), or columns (Phrase)    |\n| **PgUp/PgDown** | Jump to previous/next 16-row boundary (0x00, 0x10, 0x20, etc.) |\n\n### Playback and Recording\n\n| Key Combo  | Description                                                                                                                                                                                                                                |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| **Space**  | Play/stop from current position                                                                                                                                                                                                            |\n| **Ctrl+@** | Play/stop from top (global)                                                                                                                                                                                                                |\n| **C**      | Smart trigger/fill function:\u003cbr\u003e• **Non-empty values**: Triggers `EmitRowDataFor` (plays row with full parameters)\u003cbr\u003e• **Empty values**: Fills with next available content or copies last row\u003cbr\u003e• Works in Song, Chain, and Phrase views |\n| **Ctrl+R** | Toggle recording mode                                                                                                                                                                                                                      |\n\n## Recording Features\n\nColliderTracker offers two types of recording:\n\n### Session Recording (`-r, --record` flag)\n\n- Records the **entire session** from start to finish\n- Output saved to SuperCollider's default recordings folder\n- Captures everything: all tracks, effects, and audio output\n- Automatic recording begins when the program starts\n\n### Multitrack Recording (**Ctrl+R** in program)\n\n- **Context-aware recording** of active tracks only\n- Records current track (Chain/Phrase view) or all active tracks (Song view)\n- **Output**: Generates master mix + individual track stems with timestamps\n- Toggle recording on/off during playback for selective capture\n\n### Value Editing\n\n| Key Combo           | Description                                     |\n| ------------------- | ----------------------------------------------- |\n| **Ctrl+Up/Down**    | Coarse adjust values (+/-16, coarse increments) |\n| **Ctrl+Left/Right** | Fine adjust values (+/-1, fine increments)      |\n| **Backspace**       | Clear cell/value                                |\n| **Ctrl+H**          | Delete entire row                               |\n| **S**               | Paste last edited row                           |\n\n### Copy and Paste\n\n| Key Combo  | Description |\n| ---------- | ----------- |\n| **Ctrl+C** | Copy cell   |\n| **Ctrl+X** | Cut row     |\n| **Ctrl+V** | Paste       |\n| **Ctrl+D** | Deep copy   |\n\n### File Operations and System\n\n| Key Combo  | Description                                                                |\n| ---------- | -------------------------------------------------------------------------- |\n| **Ctrl+S** | Manual save                                                                |\n| **Ctrl+F** | Smart fill/clear for DT column (Delta Time)                                |\n| **Ctrl+O** | Open project selector to switch projects (press \"n\" to create new project) |\n| **Esc**    | Clear selection highlight                                                  |\n| **Ctrl+Q** | Quit                                                                       |\n\n## Views\n\n### Main Structure Views\n\n| View       | Description                                                                                                                                                        |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| **Song**   | Top-level arrangement: 8 tracks × 16 rows (chains per track)\u003cbr\u003e• Each track can be either Instrument or Sampler type                                              |\n| **Chain**  | Pattern sequences: 16 rows mapping to phrases                                                                                                                      |\n| **Phrase** | Main tracker grid with two modes:\u003cbr\u003e• **Sampler** – Full sample manipulation (pitch, effects, files)\u003cbr\u003e• **Instrument** – Note-based with chords, ADSR, arpeggio |\n\n### Support Views\n\n| View         | Description                                                                                   |\n| ------------ | --------------------------------------------------------------------------------------------- |\n| **Settings** | Global configuration (BPM, PPQ, audio gains, etc.)\u003cbr\u003e• Access with **p** key or **Shift+Up** |\n| **Mixer**    | Per-track volume levels and mixing\u003cbr\u003e• Access with **m** key or **Shift+Down**               |\n\n### File Management Views\n\n| View              | Description                                                                                              |\n| ----------------- | -------------------------------------------------------------------------------------------------------- |\n| **File Browser**  | Select audio files for sampler tracks                                                                    |\n| **File Metadata** | Configure BPM and slice count per file\u003cbr\u003e• Metadata is automatically saved with samples for portability |\n\n### Effect Configuration Views\n\n| View            | Description                                                  |\n| --------------- | ------------------------------------------------------------ |\n| **Retrigger**   | Envelope settings for retrigger effects                      |\n| **Timestretch** | Time-stretching parameters                                   |\n| **Arpeggio**    | Arpeggio pattern editor (Instrument tracks only)             |\n| **Modulate**    | Note modulation with randomization, scaling, and probability |\n\n## Modulation Settings\n\nThe Modulation system provides powerful note transformation capabilities for both Instrument and Sampler tracks. Access it by navigating to a **MO** (Modulate) column value and pressing **Shift+Right**.\n\n### Overview\n\nModulation settings allow you to:\n- Add controlled randomness to notes\n- Apply mathematical transformations (add/subtract)\n- Quantize notes to musical scales\n- Create incremental note sequences\n- Control probability of modulation effects\n\n### Parameters\n\n| Parameter     | Range     | Description |\n|---------------|-----------|-------------|\n| **Seed**      | none/random/1-128 | Random number generator seed:\u003cbr\u003e• `none` = No randomization\u003cbr\u003e• `random` = Time-based seed (different each time)\u003cbr\u003e• `1-128` = Fixed seed for reproducible results |\n| **IRandom**   | 0-128     | Random variation range applied to notes (0 = no randomization) |\n| **Sub**       | 0-120     | Value subtracted from the note after randomization |\n| **Add**       | 0-120     | Value added to the note after subtraction |\n| **Increment** | 0-128     | Increment value applied based on playback counter |\n| **Wrap**      | 0-128     | Wrap point for increment counter (0 = no wrapping) |\n| **ScaleRoot** | C-B       | Root note of the scale (C, C#, D, etc.) |\n| **Scale**     | Various   | Musical scale for quantization:\u003cbr\u003e• `all` = No scale quantization\u003cbr\u003e• `major`, `minor`, `dorian`, `mixolydian`\u003cbr\u003e• `pentatonic`, `blues`, `chromatic` |\n| **Probability** | 0-100%  | Chance that modulation will be applied (100% = always) |\n\n### Processing Order\n\nModulation is applied in this sequence:\n1. **Increment** - Added based on playback counter (if active)\n2. **Random Variation** - Applied if IRandom \u003e 0 and Seed is not \"none\"\n3. **Subtraction** - Sub value is subtracted\n4. **Addition** - Add value is added\n5. **Scale Quantization** - Note is quantized to nearest scale note (if not \"all\")\n\n### Usage Examples\n\n#### Basic Randomization\n- **Seed**: `random`, **IRandom**: `12`, **Sub**: `6`, **Add**: `0`\n- Adds ±6 semitones of random variation to notes\n\n#### Incremental Sequences  \n- **Increment**: `2`, **Wrap**: `12`\n- Each successive trigger moves the note up 2 semitones, wrapping after 12 semitones\n\n#### Scale Quantization\n- **ScaleRoot**: `C`, **Scale**: `major`, **Probability**: `75%`\n- 75% chance to quantize notes to C major scale\n\n#### Controlled Chaos\n- **Seed**: `42`, **IRandom**: `24`, **Sub**: `12`, **Add**: `5`, **Scale**: `minor`\n- Reproducible random variations within a minor scale\n\n### Track-Specific Behavior\n\n**Instrument Tracks**: Modulation applies to:\n- Individual notes when no chord/arpeggio is active\n- All chord notes when chords are used without arpeggio\n- All arpeggio notes (including root) when arpeggio is active\n\n**Sampler Tracks**: Modulation applies to the sample's playback pitch\n\n### Tips\n\n- Use **fixed seeds** (1-128) for reproducible \"random\" patterns\n- Set **Probability** \u003c 100% to create organic, non-mechanical variations\n- Combine **Increment** with **Wrap** for cyclical melodic patterns\n- Use scale quantization to keep random variations musically coherent\n\n## Smart 'C' Key Functionality\n\nThe **C** key provides context-aware trigger and fill functionality across all views:\n\n### Phrase View\n\n- **Non-empty row**: Triggers `EmitRowDataFor` with complete parameter set:\n  - **Instrument tracks**: Note, Chord (C/A/T), ADSR (A/D/S/R), Arpeggio (AR), MIDI (MI), SoundMaker (SO)\n  - **Sampler tracks**: All traditional sampler parameters\n- **Empty row**: Copies last row with increment\n\n### Chain View\n\n- **Non-empty slot**: Triggers first row of the referenced phrase\n- **Empty slot**: Fills with next unused phrase\n\n### Song View\n\n- **Non-empty slot**: Finds first phrase in referenced chain and triggers its first row\n- **Empty slot**: Fills with next unused chain\n\nThis unified approach allows instant playback testing of any musical element while maintaining the original fill functionality for composition workflow.\n\n## Phrase Columns\n\n### Sampler View\n\n```\nSL  DT  NN  PI  GT  RT  TS  Я  PA  LP  HP  CO  VE  VL  MO  FI\n```\n\n### Instrument View\n\n```\nSL  DT  NOT  C  A  T  A D S R  AR  MI  SO  VL  MO\n```\n\n### Column Descriptions\n\n- **SL** (slice) – Row number display\n- **DT** (delta time) – **Unified playback control**: `--`/`00` = skip, `\u003e00` = play for N ticks\n- **NN/NOT** (note) – MIDI note (hex) or note name\n- **PI** (pitch) – Pitch bend (sampler only)\n- **GT** (gate) – Note length/gate time\n- **RT** (retrigger) – Retrigger effect index\n- **TS** (timestretch) – Time-stretch effect index\n- **Я** (reverse) – Reverse playback probability (0-F hex: 0=0%, F=100%)\n- **PA** (pan) – Stereo panning\n- **LP/HP** (filters) – Low-pass/High-pass filters\n- **CO** (comb) – Comb filter effect\n- **VE** (reverb) – Reverb effect\n- **VL** (velocity) – Note velocity (0-F hex, affects volume and expression)\n- **MO** (modulate) – Modulation settings index for note randomization and scaling\n- **FI** (file index) – Sample file selection (sampler only)\n- **C** (chord) – Chord type: None(-), Major(M), minor(m), Dominant(d) (instrument only)\n- **A** (chord addition) – Chord addition: None(-), 7th(7), 9th(9), 4th(4) (instrument only)\n- **T** (transposition) – Chord transposition: 0-F semitones (instrument only)\n- **A D S R** (ADSR) – Attack/Decay/Sustain/Release envelope (instrument only)\n- **AR** (arpeggio) – Arpeggio pattern index (instrument only)\n- **MI** (MIDI) – MIDI settings index for external MIDI output (instrument only)\n- **SO** (SoundMaker) – SoundMaker settings index for built-in synthesis (instrument only)\n- **VL** (velocity) – Note velocity (0-F hex, affects volume and expression)\n\n### Key Features\n\n#### Unified DT Column\n\nBoth Sampler and Instrument views now use the same **DT** (Delta Time) column for playback control, replacing the previous separate P/DT system. This provides consistent behavior across both track types.\n\n#### Velocity Support\n\nThe **VL** (Velocity) column provides expressive control over note dynamics. SuperCollider tracks and responds to velocity values for both volume and expression, enabling more musical and dynamic performances.\n\n#### Probability-Based Reverse Effect\n\nThe **Я** (Reverse) column in Sampler view now uses a probability system instead of a simple on/off flag:\n\n- **0** = Never reverse (0% chance)\n- **1** = ~6.7% chance to reverse\n- **F** = Always reverse (100% chance)\n- **Values 1-E** = Linear probability scaling between 6.7%-93.3%\n\nEach time a note plays, the system randomly determines whether to apply reverse playback based on the probability value, adding dynamic variation to your tracks.\n\n#### Portable Sample Management\n\nThe application now uses a local folder structure (tracker-save/) instead of a single save file, automatically storing samples and their metadata together for complete project portability.\n\n## Building from source\n\n### Prerequisites for Building\n\n- **Go** (latest stable version)\n- **C/C++ compiler** (GCC on Linux, Xcode on macOS, MinGW on Windows)\n- **System dependencies** (varies by platform)\n\n### Windows\n\n1. **Install MSYS2**: Download from [https://www.msys2.org/](https://www.msys2.org/)\n\n2. **Install required packages** in MSYS2 terminal:\n\n   ```bash\n   pacman -S --noconfirm mingw-w64-x86_64-rtmidi mingw-w64-x86_64-toolchain\n   ```\n\n3. **Set environment variables**:\n\n   ```bash\n   export CGO_ENABLED=1\n   export CC=x86_64-w64-mingw32-gcc\n   export CGO_LDFLAGS=-static\n   export CGO_CXXFLAGS=\"-D__RTMIDI_DEBUG__=0 -D__RTMIDI_QUIET__\"\n   ```\n\n4. **Build**:\n   ```bash\n   go build -v -o collidertracker.exe\n   ```\n\n### macOS\n\n1. **Install dependencies** with Homebrew:\n\n   ```bash\n   brew update\n   brew install pkg-config rtmidi\n   ```\n\n2. **Set environment variables**:\n\n   ```bash\n   export CGO_ENABLED=1\n   export CGO_CXXFLAGS=\"-D__RTMIDI_DEBUG__=0 -D__RTMIDI_QUIET__\"\n   ```\n\n3. **Build**:\n   ```bash\n   go build -v -o collidertracker\n   ```\n\n### Linux\n\n#### Standard Build (Dynamic Linking)\n\n1. **Install dependencies** (Ubuntu/Debian):\n\n   ```bash\n   sudo apt-get update\n   sudo apt-get install -y libasound2-dev\n   ```\n\n   **For other distros**: Install equivalent packages for ALSA development headers\n\n2. **Set environment variables**:\n\n   ```bash\n   export CGO_CXXFLAGS=\"-D__RTMIDI_DEBUG__=0 -D__RTMIDI_QUIET__\"\n   ```\n\n3. **Build**:\n   ```bash\n   go build -v -o collidertracker\n   ```\n\n#### Static Build (Portable)\n\nFor a fully static binary that runs on any Linux system:\n\n1. **Use Alpine Linux environment** (Docker recommended):\n   ```bash\n   docker run --rm -v $(pwd):/workspace -w /workspace golang:1.25-alpine sh -c '\n   apk add --no-cache git build-base autoconf automake libtool linux-headers alsa-lib-dev \u0026\u0026\n   cd /tmp \u0026\u0026\n   git clone https://github.com/alsa-project/alsa-lib.git \u0026\u0026\n   cd alsa-lib \u0026\u0026 git checkout v1.2.10 \u0026\u0026\n   libtoolize --force --copy --automake \u0026\u0026 aclocal \u0026\u0026 autoheader \u0026\u0026\n   automake --foreign --copy --add-missing \u0026\u0026 autoconf \u0026\u0026\n   ./configure --prefix=/usr/local --enable-shared=no --enable-static=yes --disable-ucm \u0026\u0026\n   make -j$(nproc) \u0026\u0026 make install \u0026\u0026\n   cd /workspace \u0026\u0026\n   export PKG_CONFIG_PATH=\"/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH\" \u0026\u0026\n   export CGO_CFLAGS=\"-I/usr/local/include\" \u0026\u0026\n   export CGO_LDFLAGS=\"-L/usr/local/lib\" \u0026\u0026\n   export CGO_CXXFLAGS=\"-D__RTMIDI_DEBUG__=0 -D__RTMIDI_QUIET__\" \u0026\u0026\n   CGO_ENABLED=1 go build -buildvcs=false -ldflags \"-linkmode external -extldflags \\\"-static -L/usr/local/lib\\\"\" -o collidertracker\n   '\n   ```\n\n### Testing the Build\n\nAfter building, verify the binary works:\n\n```bash\n./collidertracker --help\n```\n\n### Build Notes\n\n- The build requires CGO (C bindings) for MIDI and audio functionality\n- Static linking is used on Windows and in the Alpine Linux build for portability\n- The RTMIDI debug flags are disabled for release builds to reduce verbosity\n- Version information can be embedded using: `go build -ldflags \"-X main.Version=\u003cversion\u003e\"`\n\n## Big list of trackers\n\n## Popular Modern / Commercial\n\n- [Renoise](https://www.renoise.com/)\n- [SunVox](https://www.warmplace.ru/soft/sunvox/)\n- [DefleMask](https://deflemask.com/)\n- [dirtywave m8](https://dirtywave.com/)\n\n## Cross-Platform / General Trackers \u0026 Experimental\n\n- [OpenMPT (ModPlug Tracker)](https://github.com/OpenMPT/openmpt)\n- [MilkyTracker](https://github.com/milkytracker/MilkyTracker)\n- [Schism Tracker](https://github.com/schismtracker/schismtracker)\n- [Furnace](https://github.com/tildearrow/furnace)\n- [Radium Music Editor](https://github.com/kmatheussen/radium)\n- [Psycle](https://sourceforge.net/projects/psycle/)\n- [Buzztrax](https://www.buzztrax.org/)\n- [SoundTracker (GTK/Unix)](https://www.soundtracker.org/) · [Source](https://sourceforge.net/p/soundtracker/git/ci/master/tree/)\n- [ChibiTracker](https://github.com/reduz/chibitracker)\n- [Propulse Tracker](https://github.com/hukkax/Propulse)\n- [Pata Tracker](https://pixwlk.itch.io/pata-tracker)\n\n## Classic Trackers \u0026 Clones\n\n- [FastTracker II (original info)](https://en.wikipedia.org/wiki/FastTracker_2) · [ft2-clone](https://github.com/8bitbubsy/ft2-clone)\n- [ProTracker 2 clone (pt2-clone)](https://github.com/8bitbubsy/pt2-clone)\n- [HivelyTracker](https://github.com/petet/hivelytracker)\n- [Impulse Tracker (mirror)](https://github.com/hx2A/impulsetracker)\n- [Scream Tracker 3](http://www.screamtracker.com/)\n- [Skale Tracker](http://www.skale.org/)\n- [MadTracker](https://www.madtracker.org/)\n\n## Game Boy / NES / Console-Focused / Chiptune\n\n- [LSDj (Little Sound Dj)](https://littlesounddj.com/25th/)\n- [0CC-FamiTracker](https://github.com/0xCDA/0CC-FamiTracker)\n- [FamiStudio](https://github.com/BleuBleu/FamiStudio) · [Website](https://famistudio.org/)\n- [LittleGPTracker (LGPT)](https://github.com/Mdashdotdashn/LittleGPTracker) · [Website](https://www.littlegptracker.com/)\n- [NitroTracker](https://nitrotracker.tobw.net/) · [GitHub Fork](https://github.com/TobWen/NitroTracker)\n- [klystrack](https://kometbomb.github.io/klystrack/) · [Itch.io page](https://kometbomb.itch.io/klystrack)\n- [Lovely Composer](https://lovelycomposer.itch.io/lovely-composer)\n\n## Commodore 64 / SID\n\n- [GoatTracker 2](https://sourceforge.net/projects/goattracker2/)\n- [SID Factory II](https://github.com/Chordian/sidfactory2)\n- [CheeseCutter](https://github.com/theyamo/CheeseCutter)\n- [SID-Wizard (C64 release info)](https://csdb.dk/release/?id=221555)\n- [JITT64 (Java Ice Team Tracker)](https://iceteam.itch.io/jitt64)\n\n## Yamaha / FM \u0026 Multi-Chip\n\n- [BambooTracker](https://bambootracker.github.io/BambooTracker/)\n- [Protrekkr](https://github.com/hitchhikr/protrekkr)\n- [Reality Adlib Tracker (RAD)](https://realityproductions.itch.io/rad)\n\n## Web / Browser / Mobile Trackers\n\n- [BassoonTracker](https://github.com/steffest/BassoonTracker) · [Live Demo](http://www.stef.be/bassoontracker/)\n- [XO-Tracker DEMO](https://kouzeru.itch.io/xo-tracker-demo)\n- [Sound Composer NX](https://kero.itch.io/sound-composer-nx)\n\n## Niche / Experimental\n\n- [Shield Tracker (sTracker)](https://bleep.toys/) · [Shortcuts](https://bleep.toys/stracker/keyboard_shortcuts.html)\n- [1tracker (1-bit ZX/retro)](https://randomflux.info/1bit/viewtopic.php?id=24\u0026p=4)\n- [WaveTracker](https://squiggythings.itch.io/wavetracker) \n- [Oxide Tracker](https://paranoidcactus.itch.io/oxidetracker)\n\n## Uninstalling ColliderTracker\n\nTo completely remove all ColliderTracker-related data from your system:\n\n### 1. Remove ColliderTracker Binary and Project Data\n\n- **Delete the ColliderTracker binary** from wherever you installed it (e.g., `/usr/local/bin/collidertracker` or the downloaded location)\n- **Delete your project directory** (default: `./save/` in the directory where you run ColliderTracker, or custom directory specified with `-p` flag)\n\n### 2. Remove Downloaded SuperCollider Extensions\n\nColliderTracker automatically downloads SuperCollider extensions to the following locations:\n\n- **macOS**: Remove `~/Library/Application Support/SuperCollider/Extensions/PortedPlugins/`, `~/Library/Application Support/SuperCollider/Extensions/mi-UGens/`, `~/Library/Application Support/SuperCollider/Extensions/Open303/`, `~/Library/Application Support/SuperCollider/Extensions/Juno60/`, and `~/Library/Application Support/SuperCollider/Extensions/SC3plugins/`\n- **Linux**: Remove `~/.local/share/SuperCollider/Extensions/PortedPlugins/`, `~/.local/share/SuperCollider/Extensions/mi-UGens/`, `~/.local/share/SuperCollider/Extensions/Open303/`, `~/.local/share/SuperCollider/Extensions/Juno60/`, and `~/.local/share/SuperCollider/Extensions/SC3plugins/`\n- **Windows**: Remove `%LOCALAPPDATA%/SuperCollider/Extensions/PortedPlugins/`, `%LOCALAPPDATA%/SuperCollider/Extensions/mi-UGens/`, `%LOCALAPPDATA%/SuperCollider/Extensions/Open303/`, `%LOCALAPPDATA%/SuperCollider/Extensions/Juno60/`, and `%LOCALAPPDATA%/SuperCollider/Extensions/SC3plugins/`\n\n**Note**: These extensions may also be used by other SuperCollider applications. Only remove them if you're sure they're not needed by other software.\n\n### 3. Clean Up Temporary Files\n\nColliderTracker may create temporary `.scd` files in your system's temp directory during operation. These are automatically cleaned up when the application exits, but you can manually remove any remaining files with names like:\n\n- `collidertracker_*.scd`\n- `dx7_*.afx`\n- `dx7_*.scd`\n\n### 4. SuperCollider Recordings (Optional)\n\nIf you used the recording feature (`-r` flag), recordings are saved to SuperCollider's default recordings directory. You may want to back up or remove these files:\n\n- **macOS**: `~/Music/SuperCollider Recordings/`\n- **Linux**: `~/SuperCollider/`\n- **Windows**: `%USERPROFILE%/Music/SuperCollider Recordings/`\n\n## Notes\n\nLOC: \n\n```bash\ncloc --by-file --include-ext=go --not-match-f='dx7' internal\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschollz%2Fcollidertracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fschollz%2Fcollidertracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschollz%2Fcollidertracker/lists"}