The Fluid Music framework enables users to encapsulate professional music production techniques in reusable and reconfigurable JavaScript modules.

The following examples were scripted with the JavaScript based fluid score language and produced using the Fluid Music audio server. They aim to demonstrate that professional quality audio production can be automatically applied to symbolic digital scores.

The examples were generated completely in code. A GUI was only used in the final stages to trim and normalize the output of the Fluid Music audio server.

Example 1: Processed Guitar

See the score repository on github for the code that created this audio. To make the audio sound polished I packaged the following music productions techniques using the fluid music framework:

  • A sub-bass synthesizer adds low end to the kick drum, giving it extra OOMPH!
  • Reversed and processed guitar samples from the @fluid-music/g3rd npm package are time aligned with the musical grid.
  • Tempo synchronized stereo width modulation (this technique is subtly in the example, but can by much more dramatic).
  • A subtle reverb ‘glues’ the mix together.

These are just some of the kinds of productions techniques that can be encapsulated with the fluid music library. Used with care, techniques like these are a big part of what make prerecorded music stand out and sound professional.

Example 2: Trap Drums

Trap music is built around manipulated TR-808 drum samples. The next example uses the @fluid-music/tr-808 npm package as source material for the drum and bass samples.

  • Custom timing techniques applied to the drum samples to achieve the characteristically complex trap-style hi-hat patterns.
  • Micro timing adjustments shift drum samples off of the timeline grid so that the samples’ transients don’t mask each other when they overlap.
  • Subtle reverb and bus compression ‘glue’ the mix together.
  • This second Trap example builds on the techniques in the first one, expanding the sonic palette without duplicating effort
  • Side chain compression (with “ghost kicks”) pump one of the pad synthesizers in time with the musical rhythm
  • The @fluid-music/kit this package works like a drum sampler preset with features like sample randomization and dynamic layers.

Example 3: Seven and Five

In Seven and Five I tried to make a slightly longer composition that holds interest throughout. Additionally, I tried to make something that would be infeasible or impossible to make without Fluid Music.

The piece is based around a MIDI delay (echo), except that each delayed copy contains mutated MIDI content. The delays are grouped in five repetitions of seven notes, giving the composition its name.

Note that the code in the score repository is more complex that the previous examples, so it’s a more challenging starting point if you are just exploring Fluid Music for the first time.

  • Custom techniques insert up to 70 MIDI notes per invocation.
  • Features the unusual 35/32 time signature
  • Uses computationally generated custom Technique Libraries that create the arpeggiated patterns that make up the harmonic foundation of the piece.

Example 4: Nikhil Sing’s Fluid Adaptations

Composer Nikhil Sing worked with the Seven and Five score to compose Fluid Adaptations. His composition keeps the same harmonic material, mutates the existing timbres and adds new ones.

His score also converts the 35/32 time signature to 4/4, a change that would be difficult or impossible to do without the Fluid Music framework.

Read Nikhil’s full score on GitHub at nikhilsinghmus/fluid-demotrapremix. By reading the updated package.json file, we can also see that the score adds a dependency on the Battery 4 plugin adapter.