/arpeggiata

Vue.js based modular arpeggio engine

Primary LanguageVueGNU General Public License v3.0GPL-3.0

Arpeggiata (arpeggiata)

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!

Usage

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/-).

synth

All four synth components are tied to a global clock with start/stop buttons and changeable tempo.

Scales and Sequences

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

Installing

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

License

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.