Soniare

Beat DJ

Beat DJ is a microtonal sample based music program that uses a command line interface for improvising electronic music. Essentially you type in what you want it to do and it makes music! It also uses AI (artificial intelligence) to help with commands. And it works great for live performances! The beta is now available for download below. We will switch to a paid pricing model but you can currently use the beta for free. Read the instructions below to get started.

Beat DJ

Install Instructions

  • Mac - Download, Unzip, Move to applications, Double click
  • Windows - Unzip, Leave .exe file in folder, Double click .exe

Basic Usage

Run the "s" command to load random samples! Run "s kick" to load a kick sample etc.

Run the "help" command to learn other commands!

You must have a collection of wavs in your music folder. Beat DJ doesn't come with any sounds built in.

The key is tied to the BPM. For example to have a fundamental that is equal to C you would need the BPM to be 122.625. This will be more flexible in new versions. The idea is that if the fundamental oscillates at the rate of the tempo its more harmonic.

Scales are microtonal. There is a scale building command for just intonation and equal divisions of the octave.

Most number inputs go from 0 to 9. For example max volume is 9, silence is 0.

Example Commands:

  • help (shows all other commands)
  • s (loads random sample)
  • s clap (loads a clap sample by searching the file paths)
  • s hat (loads a hat sample by searching the files paths)
  • bpm 180 0 (sets the bpm to 180 instantly)
  • 0 d (deletes node zero)
  • 0,3,4 d (deletes nodes 0,3,4)
  • a d (deletes all nodes)
  • o d (deletes the oldest 3 nodes)
  • ai `how does beat dj work?` (asks the AI for help)
  • ai `make a techno beat` (the AI will respond with help then use the `run` command to run the suggested commands)
  • snare d (deletes snares)
  • kick,snare,12 d (deletes kicks, snares, and node 12)
  • h ve 900 (sets a shorter decay on high frequency nodes)
  • m mel (changes the melody of mid frequency nodes)
  • l,3 mut (mutes all low frequency nodes and node 3)
  • a mut off (unmutes all)
  • stop (stop playback)
  • play (start playback)
  • 1 see (look at the original and modified waveforms of node 1)
  • sc r (create a random just intonation scale)
  • sc re (create a random edo scale)
  • sc j (build a just intonation scale)
  • sc e (build an edo scale)
  • sc scl /filepathToSclFile (imports a .scl file)
  • a exp j (export all sounds joined together, effects not included)
  • a exp s (export all sounds separately, effects not included)
  • rec & rec stop (record and stop recording, effects included)
  • tts `hello world` (speaks hello world)
  • feedback (request features or improvements)
  • bug (report a bug)
  • a hum 9 (sets the humanize level to the max for all nodes, it will sound drunk :))
  • signUp (links your anonymous account to an email so you can use your account on other devices)
  • added "choose->" text to make it easier to see when input is required

Live Performance

When performing live you will need to create an aggregated sound output device so you can preview the sounds on your headphones. On Mac you can do it with the Audio Midi Setup program. I'm not sure how to do it on Windows.

Plug in your headphones to your headphone jack on your computer and plug in another audio interface via USB. Then create an aggregated sound output with those two devices. 2 channels going to headphones and 2 channels going to your audio interface.

Then select the aggregated output device as your default output in your sound settings before starting Beat DJ.

There are 4 large grey spheres on Beat DJ. The bottom left one is the left headphone channel, the bottom right is the right headphone channel. The top ones represent the speakers left and right channels. If that is backwards then redo your aggregated sound device in the reverse way.

Use the 'mov' command to send nodes to the speakers 'mov 1' and 'mov -1' to send them back to the headphones.

How do the microtonal scales work?

We plan to make Beat DJ a super flexible solution for microtonality. Currently in the beta the fundamental frequency is always linked with the BPM and the way the microtonality works is via the scale command like so:

  • when the program starts it will generate a random justly tuned microtonal scale
  • run `fun` to set the fundamental frequency (which will change the bpm)
  • run the `sc p` command to play the current scale
  • run `sc r` to generate a new random sca
  • run `sc j` to build a just intonation scale
  • run `sc e` to build an edo scale
  • run `sc m 1-1.25-1.5-1.75-2` to manually enter specific ratios
  • run `sc scl` to import .scl files
  • run `sc exp` to export the scale
  • run `sc s` to stop the playback of the scale
  • run `sc pri` to print the scale
  • all new sounds will be in the current scale, to modify a sound to use the current scale use the melody command `mel`
  • run `help mel` or `ai how does mel work?` to learn more

Music made with Beat DJ

Loading...

Change Log

What's new in version 1.0.8:

  • added a pat command for creating beat grid patterns
  • added a span command for creating song structure
  • exporting now supports span command
  • fixed feedback command
  • set up tts voice models to be downloaded at runtime to reduce app file size
  • fixed bug with command building

What's new in version 1.0.7:

  • simplified the clock
  • improved command history / command construction
  • moved background color behind 3d objects so it doesn't obstruct the view of dancers
  • changed default volume from 5 to 6
  • added multi-word searching to splitter command
  • fixed scrolling bug when font size changes
  • added a command to adjust the volume trigger height for splitter instruments
  • reduced delay time when running a command on multiple sounds
  • loop lengths now automatically snap to octaves of 2,3,5,7, and 9 instead of just powers of 2
  • added a command to change the octave without changing the melody
  • added ability to process compressed WAVs which greatly expands the number of files that can be used
  • added support for mp3, aiff, and ogg
  • added multi-threading to sound initializing to remove lag for compressed formats
  • fixed bug with solo command
  • fixed bugs with continue and duplicate commands
  • made sound naming more accurate
  • added type selection to sel command like t:drums

What's new in version 1.0.6:

  • if sounds are continued or duplicated they will be placed below the original in the list
  • if sounds are continued or duplicated they will have a .c or .d extension in their name
  • new selection type 1r,2r,3r...9r for 10% to 90% random selection of sounds; for example `9r d` will randomly delete 90% of sounds
  • made "r" selection capable of selecting up to 90% of sounds instead of only 2 to 3
  • added a new ranges selection type like 0-3 and 7-22 for example `1-3 d` would delete sounds 1,2, and 3
  • added ability to invert selection by putting i* at the front of you selection e.g. `i*0 d` would delete all sounds except 0
  • added version number to info bar
  • fixed cosmetic bug with fundamental frequency command
  • added a Select command so the docs have some information about how selection works
  • added a Dancer command to create procedural dancers
  • added more color options to the font command and background command
  • improved the way all commands work which will help the docs and the AI

What's new in version 1.0.4:

  • fixed a bug with BPM changing
  • added a duplicate/copy sound function
  • stopped extend from randomly changing loop index
  • removed createScale and setScale from command keywords
  • added an info bar on bottom
  • added an audio time clock
  • moved bpm and recording indicator to info bar
  • added fundamental frequency to info bar
  • added function to change fundamental frequency
  • added prefix/suffix/replace to tag/setName function. default is replace.
  • added default humanize to info bar and a function to set the default humanize amount
  • fixed a bug with constructing commands from input
  • fixed bugs with duplicating and continuing sounds
  • fixed bug with feedback command
  • rewrote scale function to allow edo scales and more customization
  • removed redundant commands in command history
  • fixed command line bugs
  • improved input formatting
  • added names to reverb presets
  • added ability to select options by clicking on them
  • changed disableOptionalArgs command to just be optionalArgs
  • tweaked pan command
  • removed a focus ratios scale feature that was overkill and confusing
  • added a print option to scale command
  • stopped muted sounds from being exported with joined export

What's new in version 1.0.3:

  • now ui drag positions are stored between sessions
  • sky/background/font are stored between sessions
  • added a resetInterface command to set the interface back to defaults
  • renamed the resetNodes command to resetOutput
  • removed Command not found when input is empty
  • added negative indexing to sounds
  • changed volume transition speed default from 8 whole notes to 0 aka instant
  • added an AI help command 'ai'
  • created a loading animation for the command line
  • added a quit command to close the app
  • added "choose->" text to make it easier to see when input is required

What's new in version 1.0.2:

  • added logarithmic scaling to node list frequency bands (aka more human friendly frequency visualization)
  • added random option to loop index command "in" such as "in r"
  • added speakers icon to node list items to show which nodes are live to the audience
  • changed "P" text to play button icons on the sound inspector
  • added another playback bar to the sound inspector
  • you can now select sounds by fx rack number: example command would be "r1 mel" or "r1,r2 shu"
  • trimmed sound names if they are longer than 12 characters
  • added "mv" as an alternate name for the move command
  • multi input commands are now printed in output and added to command history as one command
  • fixed a bug with down arrow when using command line history
  • removed input "junk" from command line history
  • changed echo default decay and wet mix to 3
  • added a visualization to nodes when an edit is made to them
  • separated deleteFromDisk and delete into different commands
  • separated play and playFrom into different commands
  • added an "are you sure?" check when deleting all sounds
  • continue command will now keep the same "mov" position as the previous sound
  • slightly improved file naming conventions by doing bpm/scale instead of bpm_scale
  • improved scale folder naming convention and added an open file location option after exporting
  • improved layout of help docs by adding arguments in the command name and indenting args further
  • added a SetName command for renaming or tagging the sounds
  • improved command line by allowing multiple word input with quotes like [tts "hello world"] or [0 tag 'electric guitar']
  • changed naming convention on sounds to allow longer sound names
  • increased ui drag sensitivity just a bit
  • stopped setting prompt output to lowercase which improves understanding of logs
  • added a getOneshots command for splitting audio files into oneshots (sample management)
  • made sound searching much more likely to find the correct sound
  • added some logs to sound searching

What's new in version 1.0.1:

  • Added command - font: size, color
  • Added command - log: export, copy
  • Higher scrolling sensitivity
  • Fixed bug with effects rack 2 echo
  • Fixed bug with echo delay input
  • Possibly fixed database errors causing crash
  • Improved logging by using batch updates
  • Added command - feedback: yourMessageToTheDeveloper
  • Added command - bugReport: whatWentWrong
  • Improved scrolling speed of node list
  • Made (delete from disk option) actually delete from disk
  • Fixed recording breaking command line input
  • Reduced drag sensitivity on UI elements

Contact

Still have questions or suggestions? Email me at nes@soniare.net

Thank you!

- Nes