Skip to content

bigmistqke/pianissimo

Repository files navigation

🎹 Pianissimo

A collaborative pianoroll ⚡ by solid-js and automerge.

Modes

🎹 What happens when you touch the pianoroll's background
🎵 What happens when you touch a single note

  • Note
    • 🎹 Draw a note at and extend it when moving the pointer
    • 🎵 Drag a single note
  • Duration
    • 🎹 Draw selection-area and select notes
    • 🎵
      • If note was selected: update duration of all selected notes
      • If note wasn't selected: select note and update its duration
    • Sub Menu:
      • 🔒 Locks the current selection
        • When touching the pianoroll it updates the selected notes' duration instead of drawing a selection-area
  • Velocity
    • 🎹 Draw selection-area and select notes
    • 🎵
      • If note was selected: update velocity of all selected notes
      • If note wasn't selected: select note and update its velocity
    • Sub Menu:
      • 🔒 Locks the current selection
        • When touching the pianoroll it updates the selected notes' velocity instead of drawing a selection-area
  • Erase
    • 🎹 Draw selection-area and erase all selected notes
    • 🎵 Erase a single note
  • Snip
    • 🎹 Draw selection-area and snip the notes that are intersecting with the front of the selection-area in two
    • 🎵 (Same as above)
  • Select
    • 🎹 Draw selection-area, move the virtual cursor and select notes
    • 🎵
      • If note was selected: drag all selected notes in time/pitch
      • If note wasn't selected: select note
    • Sub Menu:
      • 🔒 Locks the current selection
        • When touching the pianoroll it updates the selected notes' position instead of drawing a selection-area
      • 📋 Copy
        • Add all the selected notes to the clipboard
      • 📄 Paste
        • Paste the notes in the clipboard at the cursor's current position
  • Loop
    • 🎹 Draw selection-area, after releasing create a loop from selection-area's start- and end-time
    • 🎵 (Same as above)
  • Pan
    • 🎹 Pan the pianoroll
    • 🎵 (Same as above)

📝 TODO

  • change measure
  • collaborative feature: add automerge/chee's lib
  • change tempo/bpm
    • needs fix: bpm is not correct and creates glitches when changing tempo
  • change volume
    • ui implemented, but needs more work: should connect the instrument to a GainNode and control this.
  • zoom
    • controls for desktop
    • pinch on mobile?
  • theming
    • dark mode
    • light mode

💡 Feature Ideas

  • layers: stack music instruments
  • loop multiple different sections at the same time
  • load from midi
  • WebMidi
  • different color schemes
  • desktop mode/mobile mode
    • we develop mobile-first since it's trickier to pull of right
  • arpeggiator / arpeggio-pattern designer
    • select area/notes
    • select pattern
    • arpeggio made within selection-area using the selected notes and according to current grid-size
  • record jam to a new sequence
    • it's fun to let a loop play and play around with it (mute parts, extend notes, ...)
    • it would be cool to be able to record all these jams into a new sequence

About

collaborative piano roll ⚡ by solid and automerge

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages