I am a Junior CS major enrolled in a data structures course. For a final project I have to select a piece of open source software to modify. I want to work with Audacity, but need some help getting started. Ultimately, the goal of the project is to modify an existing data structure to marginally improve performance. I was hoping to field suggestions on what data structure I should focus my efforts. I have compiled Audacity on Linux and have browsed through the source code. I find this task a little daunting because I have never dealt with a program so big. Thank you in advance for your ideas!
Our favorite data structure is the Audacity Project. Audacity saves shows as Projects and does not save sound files. If you need a stand-alone sound file, you have to Export one from your timeline.
“My computer crashed while I was saving the project and now my show won’t open.”
“I deleted my AUP Project Manager file by accident and now I have several hundred thousand AU files. Can you put them back together?”
There is some documentation on the Audacity wiki:
Ok here’s a suggestion for you to try …
As you will see, from the link that Koz posted anbove, the project structure uses lots of little snippets of audio stored in the .au files (and managed by the associated .aup file).
These .au files are usually buckets of 1 mb (or less) - this is done to speed processing performance when editing. So you could try tweaking the size of the .au files that Audacity creates and then measure the effect on processing speed with say one of the compute-intensive effects or analyzers. Plot the results - recommend a bucket-size.
How you do it I’ve no idea (I’m a documenter and QA person not a coder) I’ve never even looked at the code …
Launch Audacity with the “blocksize” argument, for example:
"S:audacityaudacity-win-2.0.3-alphaaudacity.exe" -blocksize 531950
which has Audacity writing 0.5 MB blocks instead of 1 MB.