Skip to content

Latest commit

 

History

History
63 lines (45 loc) · 2.54 KB

README.md

File metadata and controls

63 lines (45 loc) · 2.54 KB

TheoryTracker

🎼 Try it right now on your browser!

Join the Discord server!

This is a multi-track piano-roll-style song editor app with an emphasis on music theory, where notes and chords are color-coded according to the key, and some editing tools work diatonically.

The app can currently import .mid and its own .ttproj project files, which are in plain JSON format. It can currently export .ttproj files and render .wav files.

Several soundfonts are readily available from an online repository.

How to use

General usage:

  • Use the middle or right mouse buttons to pan.

  • Hold A to draw elements with the mouse.

  • Right-click on an element to change its properties.

    • Do a long right-click for a context menu with more commands.
  • Double-click on a note block to edit its notes.

    • Click on "Project Root" on the breadcrumb bar to exit note editing mode.
  • Press Space to toggle playback starting from the cursor.

  • Press Esc to rewind.

  • Use Backspace to delete incrementally.

  • Use Ctrl + Z to undo, and Ctrl + Y or Ctrl + Shift + Z to redo.

  • Also use 1234567 to create notes and chords.

When elements are selected:

  • Use to move.

    • Combine with Ctrl for faster movement.
  • Use to change the pitch of notes, and the root of chords.

    • Combine with Ctrl to change pitch by octaves.
    • Combine with Shift to change pitch chromatically.
  • Also use ,. to change pitch chromatically.

  • Use Shift + to stretch.

  • Hold Alt then drag with the mouse to duplicate.

  • Press Enter to unselect all.

  • Press Delete to delete.

  • Use Ctrl + X, C, or V for the usual cut/copy/paste commands.

Building from source

Install npm dependencies with npm install, then perform a build with npm run build. You can also run npm run watch to work locally.

Then, run npm start or any other simple HTTP web server from the repository folder, and navigate to http://127.0.0.1.