« Remixed version of an old favorite | Main | Early 90's cheese! Retro re-wind »

The music performance DSL

playSong {

# nobody I know (definitely not my band!!!)
# but nevertheless inspired by everyone who
# says "isn't it weird that there are so
# many musicians in tech?"

goodByePorkPieHat (musicians:[horn => trumpetGuywWhoWalkedIn,
keys => joeslick,
bass => ralphieboing,
drums => loudAndFast]) {
players = musicians

play { -> song

[players[drums] countUsIn(
withFeeling => true, noRushing => please,
softerThisTime => true)]
[song playHead]
[song solo [soloPattern => hornSolo()]]
[song solo [soloPattern => keySolo()]]
[song solo [soloPattern => bassSolo()]]
[song solo [soloPattern => drumSolo()]]
[song playHead]
[players.each | m -> m.stopPlayingIfYouCatchMyDrift]

hornSolo() {
with players[horn] as horn {
[players[horn] startOff reallyStrong]
[horn getLouder]
[horn loseSheetMusic]
[horn blowGumIntoMouthPieceAndThenRemove]
[horn playRandomSoloOutOfKey]
[horn lookAround]
[horn stopSolo]
[horn waitForTopofFigureThenStartComping]

keySolo() {
with players[keys] as keys {
[keys justStartPlayingTheHeadToSpain]
[keys lookAroundRealizeItsNotThatSong]
[keys startPlayingAnotherTuneMaybeMisty]
[keys playInWrongTimeSignature]
[keys getBackOnTrack]
[keys handSoloToBassGuyItsHisTurn]
[keys startComping]

bassSolo() {
with players[bass] as bass {
[bass startThumping]
[bass youCantDoAnyWrongJustKeepThumping]
[bass letsTakeItAround5Times]
[bass heyWhereDidEveryoneGo]
[bass stopPlayingAndGlareAtDrummer]

drumSolo() {
with players[drums] as drummer {
[drummer whatAreYouKiddingItsABalad]
[drummer playLoudlyAndInappropriately]
[drummer lookForLeverToSwingRiser]
if [riserDoesntSwingWeAintInAMetalBand] else [youRockMan]
[drummer justStartPlayingSomethingWithBrushes]
[drummer dropBrushesGlareAtHornPlayer]

Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>