Svelte Piano Roll
- A simple, interactive piano roll interface
- Fully interactive for touch and mouse
- Will reliably scale to any size
- Note labelling
- Key highlighting
- Functions for key interactions for easy integration
- Svelte is the only dependency
Usage
<script>
import { PianoRoll } from '@ashfrench-dev/svelte-piano-roll'
let startingKey = 35
let keyCount = 18
let height = '100%'
let width = '100%'
let showNoteLabels = false
let showHighlightKeys = false
let highlightKeys = []
let onKeyPress = (e) => {}
let onKeyUnpress = (e) => {}
</script>
<PianoRoll
starting_key={startingKey}
key_count={keyCount}
height={height}
width={width}
show_note_labels={showNoteLabels}
show_highlight_keys={showHighlightKeys}
highlight_keys={highlightKeys}
on_key_press={onKeyPress}
on_key_unpress={onKeyUnpress}/>
PianoRoll parameters
starting_key: <int>; The key the piano roll should start rendering keys. Range is from 1 (A0) to 88 (C8). Defaults to 35 (G3).
key_count: <int>; The total number of keys the piano roll should render. Range is from 1 to 88, but will not render keys before A0 or beyond C8. Defaults to 18.
height: <string>; The height of the piano's container. A CSS-valid height value. Default is '100%'.
width: <string>; The width of the piano's container. A CSS-valid width value. Default is '100%'.
show_note_labels: <boolean>; Whether to show note labels or not. Default is false.
show_highlight_keys: <boolean>; Whether to show highlighted notes or not. Default is false.
highlight_keys: <array>; A list of keys (<int>) to highlight on the piano roll. Key range is from 1 (A0) to 88 (C8). Don't forget to set highlight_keys to true!
on_key_press: <function>; A callback to execute after a key is pressed down. The callback will be passed a standard Event as an argument.
on_key_unpress: <function>; A callback to execute after a key is released. The callback will be passed a standard Event as an argument.