Sånn koder Captain Credible musikk i C++: – Liker begrensninger!

– Enklere å bli god på et instrument du har laget selv, sier musikeren, kunstneren og koderen Captain Credible.

Daniel Lacey-McDermott, eller "Captain Credible", under en opptreden på kode24-dagen oktober 2023. 📸: Kurt Lekanger
Daniel Lacey-McDermott, eller "Captain Credible", under en opptreden på kode24-dagen oktober 2023. 📸: Kurt Lekanger Vis mer

Hvorfor jeg kan kode?

Captain Credible, eller Daniel Lacy-McDermott som han egentlig heter, må tenke seg om da vi spør hvordan det har seg at han som musiker og kunstner driver og koder i programmeringsspråk som C++, TypeScript og assembler.

– Da jeg begynte med musikk så var det forventet at når man spilte elektronisk musikk live, skulle man sitte bak et bord med laptop og stirre inn i skjermen. Men hva drev de egentlig med? Spilte de Minesveiper?

Dette syntes ikke Lacy-McDermott så spesielt givende ut. Han mener også at en musiker på en scene har en rolle å spille når det gjelder å formidle musikken. Han bestemte seg derfor for å lage sine egne musikkinstrumenter.

– Jeg innså at det er konkurranse om å bli virkelig flink til å spille et instrument. Lager jeg mine egne instrumenter, er det mindre konkurranse.

Captain Credible holder workshops der både barn og voksne kan lære om kreativ programmering, som her å bygge en trommerobot. 📸: Daniel Lacey-McDermott
Captain Credible holder workshops der både barn og voksne kan lære om kreativ programmering, som her å bygge en trommerobot. 📸: Daniel Lacey-McDermott Vis mer

I dag lever Captain Credible av å opptre på scenen med noen av de merkeligste og mest kreative instrumentene du antagelig har sett – alt laget av ham selv med blant annet mikrokontrollere som han programmerer i C++.

I tillegg lager han elektroniske kunstinstallasjoner og reiser rundt og holder foredrag og workshops der han lærer andre å bygge instrumenter – for eksempel trommemaskiner.

Og på dagtid underviser han i interaksjonsdesign på Arkitektur- og designhøgskolen i Oslo.

De som deltok på kode24-dagen på Scandic Fornebu den 13. oktober fikk se den kreative multikunstneren i full vigør på scenen:

📹: Kurt LekangerVis mer Vis mer

Telys og hjelmer som instrumenter

Daniel Lacey-McDermott kaller Captain Credible sitt "crazy-scientist"-prosjekt. Og for de som har sett han opptre kan han nok fremstå som en "gal vitenskapsmann" med sine vanvittige instrumenter og temmelig utagerende sceneopptreden.

Når vi møter han på Arkitektur- og designhøgskolen fremstår han derimot som en ganske vanlig – riktignok uvanlig kreativ – fyr. I hvert fall veldig forskjellig fra karakteren han spiller på scenen.

Kreativiteten og kunnskapen om programmering og elektronikk har han klart å gjøre til levebrød – både ved å opptre, men også ved å lære andre om gleden ved kreativ programmering.

Daniel Lacey-McDermott underviser på Arkitektur- og designhøgskolen i Oslo. 📸: Kurt Lekanger
Daniel Lacey-McDermott underviser på Arkitektur- og designhøgskolen i Oslo. 📸: Kurt Lekanger Vis mer
«Jeg ble betatt av det å kunne skape grensesnitt som var annerledes enn man var vant til.»

Lacey-McDermott flyttet fra England til Norge som liten, og har studert fonetikk og lingvistikk på NTNU. Han har en bachelor fra Kunstakademiet i billedkunst, som i hans tilfelle betyr å lage interaktive lydinstallasjoner og performance-kunst.

– Det fantes ingen instrumenter som fungerte slik jeg ville de skulle fungere, og ofte hadde de funksjonalitet jeg ikke var interessert i.

Ved å heller lage instrumentene selv kunne han gjøre dem billige, slik at han slapp å være redd for å ødelegge dem. Lacy-McDermott sier han husker åpenbaringen han fikk da Arduino kom på markedet, og hvem som helst kunne begynne å kode ting. Og da han vred på et potmeter og umiddelbart kunne se ting skje på skjermen.

– Jeg ble betatt av det å kunne skape grensesnitt som var annerledes enn man var vant til. Jeg lagde for eksempel instrumenter som brukte telys, der lysintensiteten styrer parametere i en synth.

Telys kan også lage musikk! Fra Captain Credibles opptreden på kode24-dagen. 📸: Kurt Lekanger
Telys kan også lage musikk! Fra Captain Credibles opptreden på kode24-dagen. 📸: Kurt Lekanger Vis mer

Lacey-McDermott oppdaget at når man styrer lyd på helt nye måter, begynner man også å lage en annen type musikk.

– Når man står på scenen med en hjelm og lager musikk ved å riste på hodet, så blir de fysiske mulighetene annerledes. Man får lyst til å interagere med musikken på en annen måte.

Etter hvert begynte han å gi ut generativ musikk på kretskort, hvor musikk som er helt unik for hver enhet blir generert av kode han har skrevet.

– Den bruker tilfeldighet og et sett med regler. Og vilkårlige tall, som målinger av "floating pins" som egentlig bare måler bakgrunnsstråling. Da kan jeg si sånne ting som at 1 prosent av det vilkårlige tallet som lager musikken er bakgrunnsstråling fra "big bang".

📸: Kurt Lekanger
📸: Kurt Lekanger Vis mer

Robotvegg på Teknisk Museum

Kreativiteten til Captein Credible ble etter hvert lagt merke til av andre.

– Teknisk Museum ville gjerne at jeg skulle lage noe med Micro:bit, som de skulle bruke til å undervise barn i programmering.

Det førte til at han bygde en hel vegg med robotinstrumenter i et rom på Teknisk Musem. Veggen er ikke bare en kunstinstallasjon, men også et verktøy for å spille konserter.

– Jeg har hatt flere konserter der, og også skrevet verk for robotveggen.

Du kan se en interaktiv 3D-representasjon av rommet og robotveggen her, eller sjekk denne videoen for hvordan den fungerer:

– Robotveggen brukes også som undervisningsverktøy. De som lærer å programmere Micro:bit-en kan kode et musikalsk forløp og så kan det spilles på robotinstrumentene.

Lacey-McDermott har laget tre andre robotvegger som står andre steder i landet.

Noe av det han setter mest pris på, er å lære bort det han kan og få andre til å oppdage gleden ved å være kreativ med elektronikk og kode. For eksempel har han hatt workshops ved Skaperfestivalen som avholdes på Deichmanske bibliotek i Oslo.

Også når han underviser i interaksjonsdesign på Arkitektur- og designhøgskolen går det gjerne i å bygge instrumenter eller la studentene bruke kreativiteten sin til å lage noen sprø maskiner.

En av studentene på Arkitektur- og designhøgskolen demonstrerer en maskin han har laget som lar en styre musikk ved å peke på knapper med en laserpeker. 📸: Kurt Lekanger
En av studentene på Arkitektur- og designhøgskolen demonstrerer en maskin han har laget som lar en styre musikk ved å peke på knapper med en laserpeker. 📸: Kurt Lekanger Vis mer

Egenutviklet løsning sørger for at alt er i synk

– På kode24-dagen viste du noen av instrumentene dine, blant annet noen små trommeroboter du kalte "kaniner" som sto rundt i lokalet og spilte i synk med musikken. Hvordan virker de?

– Jeg hadde en hovedkontrollenhet på scenen for å programmere hendelsesforløpet. Jeg sitter og "jammer" med et slags notasjonsark som er en grid med lys, så jeg kan styre alle robotene synkront i takt med musikken som spiller fra datamaskinen, forklarer Lacey-McDermott.

Flere roboter av denne typen sto rundt på bordene på kode24-dagen og tappet takten i synk med musikken fra scenen. 📸: Kurt Lekanger
Flere roboter av denne typen sto rundt på bordene på kode24-dagen og tappet takten i synk med musikken fra scenen. 📸: Kurt Lekanger Vis mer

Instrumentene baserer seg på MIDI-standarden, og for å få de ulike instrumentene til å spille i synk brukes radiomeldinger som sendes på samme frekvens som Bluetooth (2,4 GHz). Det er ingen sjekk av om radiomeldingene kommer frem ("fire and forget"), eneste prioritet er at det skal være så responsivt som mulig.

Noen av de mer avanserte musikkrobotene Lacey-McDermott har laget har en hovedenhet som synkroniserer opptil 16 parallelle sequencere, som igjen styrer andre.

– Da blir koden litt vanskeligere!

Det er ingen feildetektering, og går et instrument glipp av et signal kommer det heller ingen lyd. Det gjør i utgangspunktet ikke så mye, men for at det skal fungere er det likevel viktig at ikke mer enn én radiomelding sendes av gangen.

– Jeg har laget et timesharesystem der alle underenhetene har et ID-nummer. For eksempel venter underenhet nummer 5 noen millisekunder før den sender.

Noe av oppsettet til Captain Credible på kode24-dagen. 📸: Kurt Lekanger
Noe av oppsettet til Captain Credible på kode24-dagen. 📸: Kurt Lekanger Vis mer

Vil lage verktøyene selv

Lacey-McDermott sier at noe av det han liker aller best med å lage egne instrumenter og roboter og programmere dem, er at han da lager de verktøyene han trenger. Han får dem akkurat som han vil.

– Det har vært et poeng for meg i musikkarrieren å bygge mine egne verktøy for å skape noe med, og sette premissene selv. Da føler jeg at jeg har mer kontroll over den kreative prosessen, sier Lacey-McDermott.

Han følger samme filosofi når han underviser i programmering, musikk og elektronikk. I stedet for å bruke noe andre har laget, lager han verktøyene selv.

«Jeg programmerer vanligvis i C++.»

– Hva liker du best å kode i?

– Jeg programmerer vanligvis i C++, eller i Arduino-kode på Arduino.

Mye av det Lacey-McDermott gjør er i undervisningsøyemed, og da brukes ofte MakeCode-editoren for å kunne lage ting for nybegynnere som er kompatibelt med blokkonseptet til MakeCode for å programmere Micro:bit.

– Når jeg programmerer egne ting til nett, er det gjerne JavaScript og Typescript. Jeg er også glad i P5.js, og jeg har også lekt litt med GLSL – det er gøy.

Når han skal lage noe til for eksempel en musikkvideo, har han ikke tålmodighet til å lage for eksempel 3D-animasjoner fra bunnen av med for eksempel Blender.

– Men hvis man bruker GLSL så rendres det i sanntid. Jeg har også skrevet i assembler på noen få prosjekter der jeg skal gjøre noe CPU-intensivt.

Liker å jobbe med begrensninger

Han tror imidlertid ikke det å skrive i assembler gir særlig mening fremover for sånne som han selv, ettersom mikrokontrollere har blitt raske nok til at man kan gjøre det meste med høyere-nivå språk som C++.

Det at mikrokontrollerne har blitt så kraftige, er imidlertid ikke bare gøy – synes Lacey-McDermott.

– For at jeg skal gidde å holde på å programmere elektronikk, så er det viktig at jeg synes det er gøy. Noe av det jeg synes er fryktelig gøy, er når man jobber med begrensninger.

Begrenset minne og begrenset klokkehastighet gjør at det er mye vanskeligere å lage noe avansert som er effektivt nok – selv om man programmerer i C++. Det betyr at man må skrive bra og effektiv kode.

– Jeg får i inspirasjon av begrensningene. Man mister litt med de nye kraftige mikrokontrollerne, litt av den morsomme utfordringen i å omgå begrensningene, avslutter Lacey-McDermott.