Arpeggiata is a modular arpeggio engine based on the Quasar framework.
You can install it for yourself or check out a live demo at arpeggiata.tk!
Arpeggiata consists of four independent synth modules, each with the following features:
- power button: toggle mute
- A/D knobs: attack and decay for the amplitude envelope,
- F knob: cutoff frequency for the lowpass filter,
- buttons for choosing the note value of the arpeggio,
- buttons for choosing one of three user-defined scales and sequences,
- buttons for modifying the octave (+/0/-).
All four synth components are tied to a global clock with start/stop buttons and changeable tempo.
Arpeggiata's defining feature is its ability to independently specify scales and sequences: while a scale is a list of notes and/or frequencies, a sequence denotes the order in which the notes of a scale are triggered:
let majorScale = ["C4", "D4", "E4", "F4", "G4", 440.0, "B4", "C5"];
let sequence = [1, 3, 5, 3]; // C4, E4, G4, E4
Here, the C major scale is paired with a sequence that would result in an up/down arpeggio of a C major chord. Note that both note/octave string notation and integers/floats can be used to define a scale.
If we were to change the scale, for example to C minor, the same sequence would result in a C minor chord.
let minorScale = ["C4", "D4", "Eb4", "F4", "G4", 440.0, "B4", "C5"];
let sequence = [1, 3, 5, 3]; // C4, Eb4, G4, E4
If a sequence element exceeds the scale's array size, it gets wrapped back to the start of the scale. Note also that scale indices begin at one, not at zero:
let sequence = [1, 10]; // C4, D4
Navigate to the base project directory:
cd arpeggiata
Install the dependencies:
npm install
Start the app in development mode (hot-code reloading, error reporting, etc.):
quasar dev
Build the app for production:
quasar build
Arpeggiata was developed as part of a student project at the Institute of Electronic Music and Acoustics in Graz, Austria.
It is distributed under the GNU General Public License v3.0.