Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
bin
 
 
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 

README.md

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

Releases

No releases published

Packages

No packages published