.___ .___ ___ .____________._._____ .______ ._______ .____/\._______._____
: | : __|: |___: ._____\__ _:: __ \: _ \:_. ___\: / \ .____/ __ \
| | | : | | | : _/\ | :| \____| . | : |/\ |. ___/ : _/\| \____|
| |/\| | : | / \ | | : \| : | / \| \| / \ : \
| / \ |\ |_.: __/ | | |___\___| |. _____/| \_.: __/ |___\
|______/___| \____/ :/ |___|___| |___|:/ |___\ / :/ |___|
: \/ v.3030
An entry for the Phoenix Phrenzy contest.
First there was Amiga Soundtracker and ProTracker. Then DOS FastTracker. Now LiveView LiveTracker.
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
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 keysa
-k
starting at the 4th octave. - Black keys are
w
(Cb4
),e
(Db4
),t
(Fb4
),y
(Gb4
), andu
(Ab4
). - Octave can be shifted up or down using
z
andx
, respectively. - Select a track (instrument) using the
left
orright
arrow keys. - Press
m
to clear notes in the selected track (while recording).
- 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]
How you deploy your app is up to you. A couple of the easiest options are:
- Heroku (instructions)
- Gigalixir (doesn't limit number of connections)
- Render
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.