Aratu a language for musical performance and algorithmic composition

15. Playing live

▶ Open in Aratu to hear and change the examples

While a piece plays, you change it; you do not rewrite it.

The stage. To play in front of an audience, the Stage button in Play (or Ctrl+Shift+F) leaves only the code on the screen, full screen and in large type for a projector. The frame flashes on the first beat of each bar, the symbols light up as they sound and the first message shows at the foot. A rail at the top always shows the bar, the beats and the tempo, with a line that runs for the length of one bar. The buttons on the rail play and stop, bring back scenes, change the type size (A− and A+), show the rhythm map below and leave the stage; they fade when the mouse rests and stay on a touch screen. Esc leaves too. The 2 columns button splits the code in two columns, like a newspaper: the second starts where the first ends, and keeps doing so while you write. Each column scrolls on its own: scrolling one does not move the other, and each stays where you left it until the type size changes. Editing in either changes the same text. On a phone the stage has one column and its own type size. Fit the screen makes the letters smaller as the piece grows, so that all of it shows without scrolling, down to a size still easy to read; past that, the columns scroll. Off, the letters keep the size set with A− and A+, and you scroll.

Following the music and seeing the sound. The Follow button, in Play and on stage, takes the screen to the code that is playing; it waits while you type, click or scroll. The display shows the piece's wave as it plays, and a click on it shows the frequencies. A line with the name of a part or a line, a dot and wave (bass.wave) draws that part's wave under it; with roll (drums.hh.roll), the notes of the bar passing under a moving line, a row for each note or drum. A part's wave is its real sound after its effects, read from Manguebyte's scope of that part and held still on a rising zero crossing, about three cycles of the lowest note across; a drum line, or a part the stand-in plays, is drawn from the notes it plays. The drawings do not change the sound. The rhythm map, under the editor, shows the piece in time: a column for each bar, in the order it plays, with its section on top, and a row for each part; an orange line runs across it and it scrolls along. A piece that starts again (a form, a loop) shows one round.

The account. The Sign in button, at the top, opens a MusiMind account, the same one MusiMind's own Aratu uses, or makes one (a name, an e-mail, a password of 8 characters or more, the date of birth, a parent's or guardian's name and e-mail under 18, and MusiMind's terms accepted). Signed in, Keep it in my account saves the piece in the editor there; from then on every change is saved about a second after the typing stops, as a draft, and Save a version keeps a numbered version that Versions can bring back (what the editor had is kept as a version first). My pieces lists them, to open, rename or delete. A piece is at most 64 KB, and its name and comments go through MusiMind's moderation. Opening an example, a shared link or a piece from the book leaves the account's piece as it was. The session is an access token of a few minutes and a refresh token traded for a new pair when it runs out, kept in this browser; Sign out ends it. The button is there only where MusiMind's API answers beside the editor (under /api).

Playing in a DAW. The DAW button, in Play, connects to Manguebyte's Aratu Bridge plugin on a DAW's track (port 47870 unless the plugin is set to another, ws://127.0.0.1). The page then sends the plugin what it would play itself, the parts, their effects and numbers, the recorded voices' files and every note, and the plugin plays them with the same engine, on the track; the browser makes no sound of its own. Times on the page become beats on the DAW's timeline at the DAW's tempo, and every bar line is put back on the DAW's beat, so the two clocks do not drift apart. The DAW leads: its play starts the piece on its next bar line, a jump of its cursor starts it again there, its stop stops it, and its tempo is written in the piece's tempo: line. While the DAW loops, the piece goes on in its own time and each lap is played. While the DAW is stopped, the piece plays from the page and is heard in the DAW. The parts' scopes (bass.wave) and levels do not come over the connection; the wave is drawn from the notes. If the plugin goes away, the sound comes back to the browser.

Sharing and recording. The Share button, in Play, copies a link with the piece inside it: whoever opens the link hears and edits the same piece, and Ctrl+Z brings back what was in their editor. The piece travels in the part of the address after #, so it never passes through a server. The Record button records everything that reaches the speakers, from the moment it is pressed (and it starts playing, if the music is stopped) until it is pressed again; then the file downloads, as WAV when the browser can make one.

Stage gestures. One word changes the whole arrangement, at the next bar line, at the next beat with now:, or at the bar named with at bar:

Write What it does
breakdown the drums, the percussion and the bass go out
build over 8 bars a snare roll in quarters, eighths, sixteenths and thirty-seconds, growing louder, while a highpass filter rises on every part and goes back at the end; with no length, 4 bars
drop everything comes back, with a crash on the first beat
solo bass, solo off only one part plays; solo off (or all: in) brings the rest back

from bar 17 to 24: breakdown holds for those bars only.

Ready-made grooves. groove house writes the lines of a beat: house, techno, trap, dnb, breakbeat, hiphop, funk, rock, reggaeton, funk carioca, bossa, samba, baião, maracatu. The grooves are in 4/4. While they play, the word lights up; a line written with the same name, in the same part, takes the place of the groove's line.

Shortcuts. Ctrl+Enter plays or updates; Ctrl+. stops; Ctrl+/ comments the selected lines out (they stop sounding); Alt+M writes or removes part: out for the part of the cursor's line; Alt+S writes or removes solo part.

Scenes. Eight places, in Play and on stage, keep the editor's piece and bring it back: click an empty scene to keep it, a kept one (or Ctrl+Shift+1 to 8) to bring it back, and Shift+click to keep over it. While the music plays, the scene comes in at the next bar line, and Ctrl+Z undoes it. The scenes are kept in this browser.