Skip to content

Music tracker written in Phoenix LiveView for the Phoenix Phrenzy contest

Notifications You must be signed in to change notification settings

kevinkoltz/live_tracker

Repository files navigation

LiveTracker

.___   .___ ___    .____________._._____ .______ ._______ .____/\._______._____
:   |  : __|:  |___: ._____\__ _:: __   \:   _  \:_.  ___\:   /  \ .____/ __   \
|   |  | : |   |   | : _/\   |  :|  \____|   .   |  : |/\ |.  ___/ : _/\|  \____|
|   |/\|   |   :   |   /  \  |   |   :  \|   :   |    /  \|     \|   /  \   :  \
|   /  \   |\      |_.: __/  |   |   |___\___|   |. _____/|      \_.: __/   |___\
|______/___| \____/   :/     |___|___|       |___|:/      |___\  /  :/  |___|
                                                  :            \/           v.3030

An entry for the Phoenix Phrenzy contest.

First there was Amiga Soundtracker and ProTracker. Then DOS FastTracker. Now LiveView LiveTracker.

LiveTracker preview

Overview

LiveTracker is a fun attempt to capture the quirkyness of early music trackers. It uses LiveView for the user interface to capture notes being played from a computer keyboard while displaying the song sequence realtime. Unlike traditional trackers, LiveTracker does not load samples from a module file (yet?). Instead, it uses a separate websocket connection /tone to send one-way messages to Tone.js on the client side to play samples in realtime (or close to it).

Note: Safari audio playback requires the page to be clicked first see issue #1

How to play

A demo can be viewed at https://livetracker.kevinkoltz.com.

Notes can be played using built-in keyboard mappings:

  • Play white notes C4-C5 with keyboard keys a-k starting at the 4th octave.
  • Black keys are w (Cb4), e (Db4), t (Fb4), y (Gb4), and u (Ab4).
  • Octave can be shifted up or down using z and x, respectively.
  • Select a track (instrument) using the left or right arrow keys.
  • Press m to clear notes in the selected track (while recording).

Font and Sample Credits

Wishlist

  • Multiple users using Phoenix.Presence
    • Ability to record notes from multiple computers simultaneously
  • Support for patterns (series of notes) and song edit (arrangement of patterns)
  • Scale selector (shifts played notes to nearest key in scale)
  • Ability to save sequences (maybe .mods too for export), along with autosave (for when things crash)
  • VU Meters
    • Tone.FFT
    • or, just use a CSS animation when notes are played
  • Support uploading and parsing of MOD files
  • Sample/Instrument edit (Tone.js has many options)
  • Update status when LiveView loses connection
  • Fix [initial playback with Safari][#1]

Deployment

How you deploy your app is up to you. A couple of the easiest options are:

The Usual README Content

To start your Phoenix server:

  • Install dependencies with mix deps.get
  • Create and migrate your database with mix ecto.setup
  • Install Node.js dependencies with cd assets && npm install && cd -
  • Start Phoenix endpoint with mix phx.server

Now you can visit localhost:4440 from your browser.

Learn more

About

Music tracker written in Phoenix LiveView for the Phoenix Phrenzy contest

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published