Skip to content

Speed of multichannel audio file writing #4

Description

@weefuzzy

Work on #1 has revealed that, even for quite moderate cases, writing a multichannel audio file can take longer than processing, e.g.

./fluid-nmf -source ~/dev/flucoma-core/AudioFiles/Tremblay-ASWINE-ScratchySynth-M.wav -components 5 -resynth out.wav

At root, this is down to something that's already marked as a FIXME in the HISSTools audio file source: https://github.com/AlexHarker/HISSTools_Library/blob/5cf4a3ad60005cb8208f10be460607eb9b91248e/AudioFile/OAudioFile.cpp#L597

Basically, when writing channel-wise, the code spends a lot of time in seek() which is not a quick thing for a file.

For our part, the reading/storing/writing in the wrapper should change to be interleaved. This is not as huge a change as it seems:

  1. Use readInterleaved from IAudioFile
  2. In common with the BufferAdaptors for other hosts, rely on FluidTensorView to handle the layout logic (obtaining a channel -> reading a column when using interleaved layout)
  3. Use writeInterleaved from OAudioFile
  4. For CSV output we probably want to use the transpose of the interleaved data. I think.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions