Ljuduppspelning

Tråden skapades och har fått 7 svar. Det senaste inlägget skrevs .
1

Jag funderar på vad det finns för bra lösningar för att spela upp ljud. Inga stora krav, men ljudet skall spelas bums när jag vill, och helst kunna stereoplaceras. Jag har gammal kod som spelar upp med Sound Manager, och det är riktigt bra om det inte var för två saker:

- Apple har lagt ner Sound Manager, den är på väg ut. (Not invented here slår till igen - det var inget fel på APIet, mycket enklare än Core Audio.)
- Icke portabelt, funkar ingen annan stans.

Jag vill ha en lösning som
- funkar överallt
- statiskt bibliotek, så man inte måste installera och tramsa
- inte bundet till något specifikt språk
- stöd för lämpliga filformat
- smidigt att jobba med

QuickTime är riktigt bra, om det inte varit för portabiliteten (och mina tvivel om dess framtid, har dock inte besannats än).

PortAudio hade varit bra om det inte hade saknat stöd för filformat helt och hållet. FMOD, möjligen. OpenAL och SDL är starka spelare på banan, men installationsfällan hotar.

Finns det något annat bra att ta till som jag har missat?

  • Medlem
  • Stockholm
  • 2009-03-20 13:37

NSSound finns ju som är en del av cocoa, men jag är osäker på om du kan panorera med det iofs, tror inte det. Men det är enkelt att använda.

OpenAL och Ogg Vorbis känns som de starkaste korten. NS bör undvikas så långt det går, det är inte portabelt för fem öre, men kanske man måste gå genom det för att spela musik på iPhone. Lite klisterkod kan man ju ha.

  • Medlem
  • Stockholm
  • 2009-03-21 10:25

Nej det är klart, portabelt är det ju inte men jag tänkte efter som du nämnde core audio som inte heller är det. iPhone har ju AV Foundation oxå som verkar enklare än core audio men med mer möjligheter än NSSound. Inte heller portabelt iofs.

  • Medlem
  • Stockholm
  • 2009-03-23 08:20
Ursprungligen av Ingemar Ragnemalm:

QuickTime är riktigt bra, om det inte varit för portabiliteten (och mina tvivel om dess framtid, har dock inte besannats än).

Vad gäller portabiliteten är den ju ett problem, men överlevnaden känns väl tämligen trygg. Apple har ju verkligen investerat i cocoa wrapper-klasser i QTKit, och även flaggat för vidareutveckling i Snow Leopard!

Med QTKit får du ju ett visst overhead, men samtidigt kanske det inte behöver vara portabelt om du bara måste skriva några rader kod!

Vänligen, Ylan

Ursprungligen av Ylan:

Med QTKit får du ju ett visst overhead, men samtidigt kanske det inte behöver vara portabelt om du bara måste skriva några rader kod!

I någon mån tål man icke-portabla lösningar, som man döljer med ett lager klister. Det måste skrivas om då och då, men bara på ett ställe - utom när man måste revidera klister-APIet på grund av att någonting vänds annorlunda så gamla antaganden inte gäller. Sånt är rätt jobbigt.

Jag missade två alternativ:

SDL: Portabelt och bra. Kanske bästa alternativet.
libao: Enkelt, och... enkelt. Lite för enkelt.

Sedan jag startade denna tråden har jag fått fram en lösning med OpenAL. Men det var inte bara gröna skogar, för Apples OpenAL-stöd är inte jättebra. Tilläggsbiblioteket ALUT ingår inte, och vad värre är, delar av det ingår i hemlighet, så om man stoppar in sin egen ALUT så får man mer eller mindre konflikter.

Min lösning var att ha en egen WAV-laddare ovanpå OpenAL, och skippa ALUT. Verkar rätt bra. Bra lösning för ljudeffekter, mindre bra för musik.

Vad gäller QuickTime så får man väl tro att Apple inte dumpar det så snart. Jag har fixat lite modernare QuickTime-kod för musikspelning (dvs ingen bild) som inte kräver FSSpec utan använder FSRef i stället. Det var aningen bökigare än vad som kändes nödvändigt, men det gick. Kan posta här om någon är intresserad.

1
Bevaka tråden