2008-07-06

Massor av ljud i Python

Jag (erkänner helt öppet att jag) läste senaste numret av Linux Weekly News, där jag hittade nyheten att One Laptop Per Child-projektet har släppt ett samplingsbibliotek med över 8000 samplingar för fri nedladdning. Jag vet inte hur just du skulle reagera på en sådan nyhet, men min reaktion var att jag kände att jag måste skriva ett program som slumpar fram "musik" ur den här högen ljud.

Mina tidigare erfarenheter av att skriva ljudkod i mitt standardspråk C är att det brukar bli för jobbigt och att jag ger upp. Men Python då? Det har jag ju ändå tänkt lära mig någon gång. Att programmera i Python är typ 1000 gånger enklare än C, om man kan det, och det finns rutiner för att ladda och spara ljudfiler i standardbiblioteket. Bara att köra alltså. Jag skrev lite kod för att ladda och spara ljudfiler, vilket tog fem minuter. Mitt nästa steg var att testa lite enkla manipulationer av ljudbufferten. Där tog det stopp i över en timme, medan mr. Python n00b försökte ta reda på hur en int kan tryckas in i en sträng av bytes. I C hade man castat och varit klar. I Python, lärde jag mig till slut, kan man använda struct.pack(). Så nu sitter jag här med ett program på 21 rader som kan vända på en sampling, och känner mig nöjd tills vidare.

Kanske orkar jag vidare imorgon. Det känns som om jag har löst det ena av två svåra problem nu. (Det andra är hur jag ska få tag på 10GB ledigt diskutrymme till samplingarna.)

11 kommentarer:

Anonym sa...

Men hur gör man ett fullscreensraster i Python?

Seriöst så låter Python som något man borde lära sig, the good helt enkelt. Jag stör mig inte på saker som indentering för att markera block som vissa gör, och då borde det ju bara vara att tuta och köra.

puterman sa...

Fattar väl vem som helst att man använder ett dubbel-interrupt!

Indentering för att markera struktur funkar för mig också, men att man får syntaxfel om man bryter en tycker jag gör det lite svårt att jobba med. Men det är kul när det går fort att programmera.

Anonym sa...

Apropå struct.pack(), så kanske det här kan vara något gottet att sätta tänderna i:

Anonym sa...

Suck, vad är det med länkarna egentligen...

http://code.google.com/p/protobuf/

Ordverifiering: fatahvl (låter som en blandning av falafel och hnefatafl, om du minns det sistnämnda)

hjon sa...

Hnefatafl! Jag måste ha missuppfattat reglerna när jag var tio tolv och skulle spela det. Helt omöjligt att vinna om man inte var vikingarna?

struct.pack(this!);

puterman sa...

Hur skulle någon kunna glömma bort Hnefatafl? Jag gillar idén att det är helt olika förutsättningar för spelarna. En snabb nätsökning ger mig inte några resultat som visar huruvida det faktiskt är enklare att spela som den ena eller andra spelaren. Internet, varför sviker du mig? Och hur kan man ha en sajt som heter boardgamegeek.com, där sådana viktiga och nördiga analyser saknas?

[wv: hnefatafl]

[skämtar bara]

[haha, skitkul]

Anonym sa...

Hnefatafl kanske helt enkelt var en realistisk skildring av hur det var att vara en stad eller by som angrips av vikingar? Man hade ingen chans helt enkelt.

Lustigt att alla minns ett namn som mest ser ut som en slumpmässig bokstavskombination, för övrigt...

ville bara säga att det är lustigt att alla minns ett så konstigt ord

Anonym sa...

Här är för övrigt en bild på två personer som sitter och krökar och spelar ett parti hnefatafl, från runsten i Ockelbo!

http://upload.wikimedia.org/wikipedia/commons/6/6c/Gs_19%2C_Ockelbo_%28game%29.jpg

(Hoppas inte länkarna fuckar upp allt nu igen)

puterman sa...

Det känns lite grovhuggna, men det syns i alla fall att det är Hnefatafl de spelar. Någon du känner, eller?

Anonym sa...

Vi stannade aldrig i Ockelbo när vi åkte till fjällen, så nä, ingen jag känner.

När jag var liten minns jag att det började kännas häftigt när man åkte vidare efter Tierp och upp mot Gävle. I Ockelbo började det kännas exotiskt. Ljusdal var helt fantastiskt. (Obs! Inget skämt. Jag var väldigt fascinerad av det när jag var liten, precis som julen)

puterman sa...

"Ljusdal" är i alla fall ett tilltalande namn.

(Obs! Personerna på runstenen har inget med Ljusdal att göra.)