Voor een projectje ben ik bezig om een soort van editor te maken welke werkt op basis van een geluidsspoor. Op dit spoor moeten 'keyframes' kunnen worden gelegd. Deze keyframes kunnen ook weer over meerdere sporen worden gelegd. Globaal overzicht:
• Geluidsspoor links
• Geluidsspoor recht
• Keyframespoor 1
• Keyframespoor 2
• Keyframespoor 3
• Keyframespoor 4
Maximaal 16 geluidssporen en maximaal 32 keyframesporen.
De lengte van een audiofragment kan een aantal uur zijn in theorie, voorlopig beperk ik mij tot een uur. Dit wil zeggen dat ik dus in ieder geval een waveform moet inlezen van dit betreffende geluidsspoor. Wat ik nu eigenlijk doe is de Wave (PCM16LE Stereo) in ieder geval in zijn geheel inlezen in het geheugen (3 minuten is ongeveer 22 MB).
Echter dan kom ik op het renderen van het geheel. Meest eenvoudige is om een scrollbar naast dit alles te leggen en de inhoud van de betreffende widgets met een offset te laten verplaatsen tov de data die ze in zich hebben.
Wat ik nu had gemaakt is dat ik de wave in zijn geheel in een QPixmap stop. Echter deze QPixmaps hebben een limiet per OS kwam ik achter, namelijk 32768x32768. Daarna is de QPixmap niet valid meer en wordt hij in zijn geheel niet meer getekend zonder waarschuwing of iets
.
Ik moet nog benchmarken of het niet sneller is om de Waveforms gewoon direct te tekenen binnen het bereik van het venster. Maar ik heb wel gemerkt dat als je de scrollbar mee laat lopen met muziek dat dit aardig wat cpu gaat vreten. Het cachen met QPixmaps is dan een must.
Eigenlijk kom ik tot de conclusie dat ik niet moet werken met QWidgets die bijvoorbeeld 13.000.000 pixels breed zijn (een volledige waveform van 3 minuten). Intern kan QT het wel aan, echter er valt niets mee te renderen.
Wat is nou wijsheid. Werken met een offset en alle tekenacties in eigen hand houden of de vlakken echt met QWidgets laten vullen. Iets zegt mij dat als ik met Waveforms van een uur ga werken QT de afmetingen niet trekt.
Maar anno 2011 zijn er dus eigenlijk geen toolkits waarmee je zoiets dergelijks kan degelijk kan renderen?
• Geluidsspoor links
• Geluidsspoor recht
• Keyframespoor 1
• Keyframespoor 2
• Keyframespoor 3
• Keyframespoor 4
Maximaal 16 geluidssporen en maximaal 32 keyframesporen.
De lengte van een audiofragment kan een aantal uur zijn in theorie, voorlopig beperk ik mij tot een uur. Dit wil zeggen dat ik dus in ieder geval een waveform moet inlezen van dit betreffende geluidsspoor. Wat ik nu eigenlijk doe is de Wave (PCM16LE Stereo) in ieder geval in zijn geheel inlezen in het geheugen (3 minuten is ongeveer 22 MB).
Echter dan kom ik op het renderen van het geheel. Meest eenvoudige is om een scrollbar naast dit alles te leggen en de inhoud van de betreffende widgets met een offset te laten verplaatsen tov de data die ze in zich hebben.
Wat ik nu had gemaakt is dat ik de wave in zijn geheel in een QPixmap stop. Echter deze QPixmaps hebben een limiet per OS kwam ik achter, namelijk 32768x32768. Daarna is de QPixmap niet valid meer en wordt hij in zijn geheel niet meer getekend zonder waarschuwing of iets

Ik moet nog benchmarken of het niet sneller is om de Waveforms gewoon direct te tekenen binnen het bereik van het venster. Maar ik heb wel gemerkt dat als je de scrollbar mee laat lopen met muziek dat dit aardig wat cpu gaat vreten. Het cachen met QPixmaps is dan een must.
Eigenlijk kom ik tot de conclusie dat ik niet moet werken met QWidgets die bijvoorbeeld 13.000.000 pixels breed zijn (een volledige waveform van 3 minuten). Intern kan QT het wel aan, echter er valt niets mee te renderen.
Wat is nou wijsheid. Werken met een offset en alle tekenacties in eigen hand houden of de vlakken echt met QWidgets laten vullen. Iets zegt mij dat als ik met Waveforms van een uur ga werken QT de afmetingen niet trekt.
Maar anno 2011 zijn er dus eigenlijk geen toolkits waarmee je zoiets dergelijks kan degelijk kan renderen?
Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!