-
12-04-2012, 17:23 #16Member
- Registered
- 26/07/02
- Location
- Lokeren/Gent
- Posts
- 861
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/2
Uitgezonderd zijn eenvoud natuurlijk (groter? rechts! kleiner? links!), daar waar de operaties op een B-tree al heel wat complexer worden indien knopen gesplitst of samengevoegd moeten worden.
Goed, ik denk dat we gewoon over andere zaken bezig zijn, ik heb het meer over de inwendige datastructuur, jij eerder over een database systeem.no votes
-
-
12-04-2012, 18:53 #17Approved 9-lifer
- Registered
- 21/08/08
- Location
- Hasselt
- Posts
- 2,653
- iTrader
- 8 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 5/46
no votes
-
12-04-2012, 19:17 #18Approved 9liver
- Registered
- 18/01/04
- Location
- Melle
- Posts
- 10,535
- iTrader
- 56 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/102
Muziek speelt toch gewoon sequentieel af? Als je een simpele queue gebruikt en steeds kijkt of de eerst volgende noot binnen het te komen tijdsinterval valt, heb je toch de oplossing? Het is toch niet zo dat je voor elke nieuwe sample heel je vector opnieuw gaat aflopen?
“In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
PSN: Cycloon - Final Fantasy XIV: A realm reborn characterno votes
-
12-04-2012, 19:31 #19Member
- Registered
- 26/07/02
- Location
- Lokeren/Gent
- Posts
- 861
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/2
Hoe dan ook is het gebruik van een aparte databank in dit geval af te raden. Dit omwille van het feit dat real time audio nergens op kan wachten, of je zit met glitches. Complexe berekeningen in de callbackfunctie zijn meestal geen probleem. Anders is het wanneer je locks op andere threads moet aanvragen, hetgeen bij een databank normaalgezien gebeurt wanneer je een tabel wil raadplegen om inconsistenties te voorkomen.
In het algemeen moet je bij het werken met audio opletten op eender welke call die kan blokkeren, waar je zelf de controle niet hebt over hoe lang hij zal blokkeren. Zo ook bijvoorbeeld het alloceren van geheugen is gevaarlijk, aangezien dit een blokkerende call naar het besturingssysteem aanroept.
Vandaar:
-opgelet met het gebruik van de "new" operator in de callback
-geen nieuwe elementen toevoegen aan de set tijdens callback
-nooit zaken in vectoren pushen in callback. Algemener: let in het geval van werken met real time audio altijd op de worst case uitvoeringstijd, nooit op de gemiddelde. Wanneer bijvoorbeeld de achterliggende tabel van je vector net vol zit en wordt vervangen door een tabel met dubbele grootte -> geheugen alloceren -> blokkerende call -> grote kans op glitches.
Een héél interessante blogpost over deze materie:
Real-time audio programming 101: time waits for nothing | Ross Bencinano votes
-
12-04-2012, 22:04 #20Member
- Registered
- 09/08/05
- Location
- Kieskring BHV
- Posts
- 1,683
- iTrader
- 5 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 1/22
Ziet er interessant uit, zal het eens doornemen.
Wel goed om weten dat ik op geen enkel moment met nieuwe objcten mag afkomen tijdens het afspelen. Ik ga nog eens goed moeten nadenken hoe ik ga bijhouden hoeveel samples al gestuurd zijn en waar ik moet hervatten want door dat artikel weet ik het weer even niet
Het is niet gezegd dat alle noten in volgorde worden ingevoerd en ik ze zo kan afspelen achter elkaar en er kunnen ook meerdere noten tegelijk vallen.
Daarbij vraagt de buffer om de zoveel tijd x aantal samples dus moet er worden bijgehouden hoeveel samples van een noot al gestuurd zijn.Last edited by sanzo; 12-04-2012 at 22:15.
no votes
-
12-04-2012, 22:51 #21Approved 9liver
- Registered
- 18/01/04
- Location
- Melle
- Posts
- 10,535
- iTrader
- 56 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/102
Je kan de input uiteraard gesorteerd in memory plaatsen. En dat er eventueel meerdere noten uit de queue moeten gehaald worden is toch ook niks onoverkomelijk? Je kijkt gewoon naar de x aantal volgende tot je een noot vindt die buiten je gezochte timeframe ligt.
“In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
PSN: Cycloon - Final Fantasy XIV: A realm reborn characterno votes

Anders hebt ge gelijk ja.
