Skip to content

alvadub/midi-on-scoops

Repository files navigation

MIDI on SCOOPS

Translate DAW (from GUI-world) to ASCII (to text-world) as "Fast DUB Prototyping" approach.

I spent lots of time using DAWs just for settings up pet projects, sandboxes, laboratories, etc.

Just having fun and brainstorming is difficult because I don't have enough instruments for playing music.

Since technology is a good solution because it's already cheap, I would like to have a "tool" for writing DUB in text format.

TODO: About FIXME in builder.js.

Libraries

Syntax

Each expression would generate a value or an array of values, sub-expressions are resolved and would produce one or more values, etc.

Once declared, all expressions are concatenated into a single array where possible.

# track 1

@instrument: 1

%sequence: x--- *16
%range: 10..120 /11

notes: c3 d3
pattern: %sequence
accentMap: 5 %range 127x3

The code above would produce the next scribbletune's settings:

{
  notes: ['c3', 'd3'],
  pattern: 'x---'.repeat(16),
  accentMap: [5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 127, 127, 127],
}

Using the CLI

When calling dub it will use timidity as default for MIDI playback.

  • If you specify a file, it will be loaded an played. e.g. dub sample (.dub will be appended if missing)
  • Opening a directory will watch and play on any changes. e.g. dub music/src/

Use a different player by appending the arguments:

$ dub music/src fluidsynth -i --gain 2 music/sf2/PC51f.sf2
# under the hood it will be called as `fluidsynth music/sf2/PC51f.sf2 path/to/generated_midi_file.mid`

Try the included examples:

$ dub examples/billy_jean.dub
$ dub examples/locks.dub
$ dub examples/x.dub

MIDI Drums

To enable the Drumkit you must use the channel 9, e.g.

@tempo: 90

# hat
@channel: 9

notes: f#2
pattern: xxxx *16

# snare
notes: e2
pattern: [---x][-x] *32
Note/Sound Mappings
  • d1 — Heart Bit
  • d#1 — Zap
  • g1 — Stick
  • a1 — Side Stick
  • a#1 — Ring Bell
  • b1 — Acoustic Bass Drum
  • c2 — Bass Drum 1
  • c#2 — Side Stick
  • d2 — Acoustic Snare
  • d#2 — Hand Clap
  • e2 — Electric Snare
  • f2 — Low Floor Tom
  • f#2 — Closed Hi Hat
  • g2 — High Floor Tom
  • g#2 — Pedal Hi-Hat
  • a2 — Low Tom
  • a#2 — Open Hi-Hat
  • b2 — Low-Mid Tom
  • c3 — Hi-Mid Tom
  • c#3 — Crash Cymbal 1
  • d3 — High Tom
  • d#3 — Ride Cymbal 1
  • e3 — Chinese Cymbal
  • f3 — Ride Bell
  • f#3 — Tambourine
  • g3 — Splash Cymbal
  • g#3 — Cowbell
  • a3 — Crash Cymbal 2
  • a#3 — Vibraslap
  • b3 — Ride Cymbal 2
  • c4 — Hi Bongo
  • c#4 — Low Bongo
  • d4 — Mute Hi Conga
  • d#4 — Open Hi Conga
  • e4 — Low Conga
  • f4 — High Timbale
  • f#4 — Low Timbale
  • g4 — High Agogo
  • g#4 — Low Agogo
  • a4 — Cabasa
  • a#4 — Maracas
  • b4 — Short Whistle
  • c5 — Long Whistle
  • c#5 — Short Guiro
  • d5 — Long Guiro
  • d#5 — Claves
  • e5 — Hi Wood Block
  • f5 — Low Wood Block
  • f#5 — Mute Cuica
  • g5 — Open Cuica
  • g#5 — Mute Triangle
  • a5 — Open Triangle
  • a#5 — Cabasa 2
  • c6 — Curtain

MIDI Instruments

Those are enabled through the @instrument annotation, e.g.

@tempo: 127

# skank

@instrument: 1

notes: c4|d#4|g4 % % c4|f4|g#4
pattern: -x-x *16
Number/Sound
  • 0-7 — Piano
  • 8-15 — Chromatic Percussion
  • 16-23 — Organ
  • 24-31 — Guitar
  • 32-39 — Bass
  • 40-47 — Strings
  • 48-55 — Ensemble
  • 56-63 — Brass
  • 64-71 — Reed
  • 72-79 — Pipe
  • 80-87 — Synth Lead
  • 88-95 — Synth Pad
  • 96-103 — Synth Effects
  • 104-111 — Ethnic
  • 112-119 — Percussive
  • 120-127 — Sound Effects

About

[WIP] MIDI/DAW for the DUB enthusiast!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published