Tracker-style microtonal MIDI sequencer

Faunatone

A tracker-style microtonal MIDI sequencer. Since MIDI does not have any widely-implemented native support for microtonality, Faunatone uses pitch bending to play non-12edo pitches. The tradeoff is that in this model, you cannot generally have more than 15-voice melodic polyphony without experiencing artifacts, although GM 1 only guarantees 16 melodic voices anyway.

Management of individual output MIDI channels by the user is not required or even possible; Faunatone operates in terms of virtual channels which it maps dynamically.

Features

  • First-class support for various approaches to microtonality
  • MIDI input, output, and export including support for all GM 1 channel events
  • Remap keyboard and MIDI note input (intervals and layout)
  • Control how pitches are notated
  • Free transposition and modulation (with notation caveats)
  • Define and use accidentals to modify pitches
  • Flexible rhythms via freely variable beat division
  • Import Scala scale files

Status

Faunatone has not seen extensive testing and it is still under initial development. Users may experience quirks, bugs, crashes, design changes, etc, although backwards-incompatible changes to the save and config file formats are less likely to happen.

Download

Prebuilt standalone binaries for Windows and Linux are available from the releases page.

Differences from other trackers

If you are familiar with tracker interfaces (Renoise, OpenMPT, SunVox, etc), you will probably not have trouble picking up Faunatone. If you are not familiar with tracker interfaces, then maybe find a tutorial somewhere? Faunatone does make a few significant departures from "conventional" trackers:

  1. There are no "rows"; beats can be divided into arbitrarily many equal divisions, and events are placed with MIDI tick precision (in this case, 960 ticks per beat). The beat division can be adjusted on the fly using menus or keyboard shortcuts; this only affects the cursor's behavior and does not change the timing of any events that were already placed.
  2. There are no "columns", only "tracks" that can each contain any type of event. Multiple tracks can be associated with the same virtual "channel" such that ex. a controller change in a track labeled "channel 1" will affect all tracks with that label.
  3. There are no "patterns"; a song is one continuous sequence of events.
  4. As in most trackers, the mapping of keys to intervals/pitches defaults to 12edo, but this is completely configurable and the mapping can be changed at any time. Pitches that don't have names in the current mapping are displayed numerically instead of symbolically.

Also, percussion notes are entered by holding the Shift key. The keymap for percussion notes is separate from the keymap for melodic notes.

File format

Faunatone save files (*.faun) are zlib-compressed JSON.

Further documentation

Comments
  • faunatone prompts for save file name despite passing in file on launch

    faunatone prompts for save file name despite passing in file on launch

    To reproduce: Save a file with faunatone and open it by passing the file as a parameter to the executable (or by double clicking after associating the filetype in Windows). Attempt to save.

    faunatone will prompt for a name for the save file instead of saving over the existing file

    Windows 10-20H2 faunatone v0.1.0

  • Unable to open .faun save files outside of executable folder when using Windows associated file typing

    Unable to open .faun save files outside of executable folder when using Windows associated file typing

    To reproduce: Associate .faun filetype with faunatone.exe in Windows. Double click a .faun file outside of the folder of the executable. faunatone will launch with an error "Couldn't open assets".

    To temporarily fix: Move the .faun file into the same folder as the executable and double clicking it to open the save will work.

    Windows 10-20H2 faunatone v0.1.0

  • Inserting/Deleting a Channel when cursor doesn't exist crashes faunatone

    Inserting/Deleting a Channel when cursor doesn't exist crashes faunatone

    To reproduce: Scenario 1: Delete channels until no more exists so the cursor disappears, then try to insert one Scenario 2: Delete channels until no more exist so the cursor disappears, undo to restore them, then try to insert/delete

    Windows 10-20H2 faunatone v0.1.0

  • Transpose by 1 Value Keybind

    Transpose by 1 Value Keybind

    Feature Request: ctrl+F1/F2 Keybind to decrement/increment notes and events.

    This be super helpful for quickly changing Notes and Program Change Events without inputting the notes/values again.

  • Polyphony while Key Jazzing

    Polyphony while Key Jazzing

    Feature request to input multiple notes while key jazz is enabled without notes cutting out.

    Having polyphony while key jazzing would be super nice, for previewing how chords sound. rn it adds a note off on a new keypress on both keyboard and midi keyboard. Have to resort to arps to test out sounds.

Pigiron is a MIDI routing utility with an extensive OSC interface.

Pigiron README (c) 2021 Steven Jones Pigiron is a fully configurable MIDI routing utility written in Go. It includes a MIDI file player and has a comp

Nov 24, 2022
HIDI - flexible HID to MIDI translation layer
HIDI - flexible HID to MIDI translation layer

This application is a translation layer between HID devices like keyboards or gamepads and MIDI interface

Dec 1, 2022
MIDI tunneling through BGP, for times when you want to broadcast your music instead of your IP packets.

BGPiano MIDI tunneling through BGP, for times when you want to broadcast your music instead of your IP packets. Usage bgpiano-send and bgpiano-recv Po

Jun 9, 2022
Fastq demultiplexer for single cell data from MGI sequencer (10x converted library).

fastq_demultiplexer Converts fastq single cell data from MGI (10x converted library) to Illumina compatible format. Installation go install github.com

Nov 24, 2021
LeetCode in Go with the code style strictly follows the Google Golang Style Guide
LeetCode in Go with the code style strictly follows the Google Golang Style Guide

LeetCode in Go LeetCode Online Judge is a website containing many algorithm questions. Most of them are real interview questions of Google, Facebook,

Nov 13, 2021
EasyMidi is a simple and reliable library for working with standard midi file (SMF)

EasyMidi EasyMidi is a simple and reliable library for working with standard midi file (SMF). Installing A step by step series of examples that tell y

Sep 21, 2022
Software modular synthesizer with Midi support

go-modular A software modular synthesizer with Midi support. !! Warning: High amplitude sounds can cause serious ear damage. Lower your headphone volu

Mar 31, 2022
Pigiron is a MIDI routing utility with an extensive OSC interface.

Pigiron README (c) 2021 Steven Jones Pigiron is a fully configurable MIDI routing utility written in Go. It includes a MIDI file player and has a comp

Nov 24, 2022
HIDI - flexible HID to MIDI translation layer
HIDI - flexible HID to MIDI translation layer

This application is a translation layer between HID devices like keyboards or gamepads and MIDI interface

Dec 1, 2022
MIDI tunneling through BGP, for times when you want to broadcast your music instead of your IP packets.

BGPiano MIDI tunneling through BGP, for times when you want to broadcast your music instead of your IP packets. Usage bgpiano-send and bgpiano-recv Po

Jun 9, 2022
Private BitTorrent tracker generator

Private BitTorrent tracker for everyone PrivTracker allows to share torrent files just with your fiends, nobody else. Unlike public trackers, it share

Jan 6, 2023
🐈🌐 nyaa.si terminal BitTorrent tracker
🐈🌐 nyaa.si terminal BitTorrent tracker

koneko - TUI Client for nyaa.si ?? ?? Download Anime, Literature, Audio, Live Action, Pictures, Software Data - go-nyaa TUI - tview Installation ?? go

Dec 30, 2022
Stonks is a terminal based stock visualizer and tracker that displays realtime stocks in graph format in a terminal.
Stonks is a terminal based stock visualizer and tracker that displays realtime stocks in graph format in a terminal.

Stonks is a terminal based stock visualizer and tracker. Installation Requirements: golang >= 1.13 Manual Clone the repo Run make && make install Pack

Dec 16, 2022
A basic presence tracker, that sends messages when the provided user's presence changed, written with discordgo

presenceTracker A basic presence tracker, that sends messages when the provided user's presence changed, written with discordgo Just put the User ID t

Oct 12, 2022
Telegram + Google Sheet daily routine trackerTelegram + Google Sheet daily routine tracker

Telegram + Google Sheet daily routine tracker Deploy as serverless function Fork this repository and set secrets github secrets: API_DOMAIN - your ver

Oct 13, 2021
A restart tracker that gives context to what is restarting in your cluster

A restart tracker that gives context to what is restarting in your cluster

Dec 20, 2022
Distributed, offline-first bug tracker embedded in git, with bridges
Distributed, offline-first bug tracker embedded in git, with bridges

Distributed, offline-first bug tracker embedded in git, with bridges

Dec 30, 2022
Ethereum event tracker

Eth-event-tracker Tracker of Ethereum events. Example package main import ( "context" "encoding/binary" "flag" "fmt" "os" "os/signal" "syscall

Nov 29, 2022
SaltStack transactions tracker
SaltStack transactions tracker

Peephole Peephole is a web-based events explorer of SaltStack transactions. It can be used to watch for events on several SaltStack master nodes by GE

Nov 23, 2022
Time tracker for nerds

track Time tracker for nerds Installation Binaries Grab binaries for different OS from https://github.com/neonxp/track/releases Homebrew brew install

May 25, 2022