Håller på och leker lite med libsndfile, ett bibliotek för läsning och skrivning av ljudfiler. De funktioner som finns för att läsa ljudfiler lägger ljuddatat i minnet på följande sätt (kallar variabeln i detta exempel för just ”Ljuddata” och exemplet förutsätter vanligt stereoljud):
Kod: Markera allt
ljuddata[0]=Sampel 1, kanal 1
Ljuddata[1]=Sampel 1, kanal 2
Ljuddata[2]=Sampel 2, kanal 1
Ljuddata[3]=Sampel 2, kanal 2
och så vidare.
Själv hade jag nog helst velat ha en tvådimensionell matris:
ljuddata[Kanal][Sampel]
Eller någon
struct, kanske.
Men nu är det en dimension som gäller.
Så för att fippla med sina ljuddata kan man exempelvis ha en for-loop inuti en annan:
Kod: Markera allt
for(i=0;i<LastValue;i+=Channels){ // Variabeln Channels innehåller antalet kanaler
for(Ch=0;Ch<Channels;Ch++){
Ljuddata[i+Ch]=Something;
}
}
Tyckte inte detta såg så begripligt ut som man kunde önska, så jag tänkte att man borde kunna skriva så här istället:
Kod: Markera allt
for(i=0;i<LastValue;){
for(Ch=0;Ch<Channels;Ch++,i++){
Ljuddata[i]=Something;
}
}
Bara funderar på vilka nackdelar man skulle kunna råka på med detta skrivsätt. Tycker i alla fall att jag har fler invändningar mot första skrivsättet än mot andra. Förmodligen kan det ena vara mer rätt än det andra i vissa situationer och tvärt om i andra. Vill bara höra lite åsikter.