/DROP

D.R.O.P. (DJ's Real-time Operations Protocol) is a domain-specific language (DSL) to describe and automate the mixing of multiple tracks in real-time

MIT LicenseMIT

DROP

D.R.O.P. (DJ's Real-time Operations Protocol) is a domain-specific language (DSL) to describe and automate the mixing of multiple tracks in real-time

DROP is an advanced domain-specific language (DSL) specifically tailored for DJs and DJ equipment producers. It offers a powerful framework for DJs to automate and execute real-time mixing of multiple tracks, encompassing both fundamental and advanced DJ techniques. With a syntax inspired by JavaScript, DROP empowers DJs to script precise and intricate control over their equipment, enabling seamless and captivating live performances.

// v0.0.1

// Define the tracks
const track1 = loadTrack("track1.mp3");
const track2 = loadTrack("track2.mp3");
const track3 = loadTrack("track3.mp3");

// Set up the mixer
const mixer = new Mixer();

// Define basic DJ techniques
const techniques = {
const techniques = {
  beatmatch: (track, bpm) => mixer.setBPM(track, bpm),
  crossfade: (track, duration) => mixer.crossfadeTo(track, duration),
  cue: (track, position) => mixer.setCuePoint(track, position),
  loop: (track, startPoint, numBars) => {
    const startPosition = startPoint < 0 ? track.numBars - Math.abs(startPoint) : startPoint;
    mixer.setLoop(track, startPosition, numBars);
  },
  backspin: (track, duration) => mixer.applyBackspin(track, duration),
  vinylBreak: (track, duration) => mixer.applyVinylBreak(track, duration),
  filter: (track, cutoff, resonance) => mixer.applyFilter(track, cutoff, resonance),
  eq: (track, lowGain, midGain, highGain) => mixer.applyEQ(track, lowGain, midGain, highGain),
  sequencer: (sequence) => {
    for (const action of sequence) {
      const { technique, args } = action;
      techniques[technique](...args);
    }
  },
};

// Perform DJ automation
mixer.start();

// Apply DJ techniques to tracks
techniques.beatmatch(track1, 128);
techniques.crossfade(track2, 8);
techniques.cue(track3, 32);
techniques.loop(track3, 16, 32);

// Start the playback of tracks
mixer.play(track1);
mixer.play(track2);
mixer.play(track3);

// Example of sequencing techniques
sequencer(
  () => {
    techniques.cue(track1, 16);
    techniques.loop(track1, 8, 16);
    techniques.crossfade(track2, 4);
  },
  32
);

sequencer(
  () => {
    techniques.crossfade(track3, 8);
  },
  64
);

sequencer(
  () => {
    techniques.loop(track3, 0, 8);
    techniques.beatmatch(track3, 140);
  },
  128
);

At its core, DROP embraces the core principles of DJing, providing DJs with intuitive constructs to interact with their tracks and manipulate their mixes. DJs can effortlessly load tracks, configure mixers, and employ techniques such as beatmatching, crossfading, cue points, and looping. By leveraging the flexibility of DROP, DJs gain precise control over essential parameters like BPM, duration, and position, facilitating seamless transitions and ensuring a smooth flow throughout their sets.

DROP extends beyond the basics, enabling DJs to orchestrate complex sequences of techniques using the versatile sequencer function. This functionality empowers DJs to define intricate combinations and transformations of tracks with precise timing. The result is a new level of automation, allowing DJs to experiment, express their unique style, and deliver extraordinary performances.

In addition to serving DJs, DROP is also an ideal choice for DJ equipment producers. By adopting DROP as the standard DSL for their products, manufacturers can provide DJs with a unified and efficient interface to control their gear. DROP's flexibility and extensibility make it compatible with a wide range of DJ equipment, ensuring seamless interoperability across different brands and models.

With DROP, DJs can unleash their full potential, pushing the boundaries of creativity and efficiency in their performances. By automating routine tasks and harnessing advanced mixing techniques, DROP empowers DJs to focus on delivering immersive and captivating musical experiences to their audiences.

Embrace the technical prowess of DROP (DJ's Real-time Operations Protocol) and elevate your DJing capabilities to unparalleled heights. Join the community of skilled DJs and equipment producers who leverage the power of DROP to unlock innovative possibilities in real-time mixing. Experience the precision and control of DROP, and witness the seamless fusion of technology and artistry in the world of DJing.