классическая проблема для редакторов, обрабатывающих относительно большие файлы, состоит в том, как справиться с удалением и вставкой. Текстовые редакторы, очевидно, сталкиваются с этим, так как обычно пользователь вводит символы по одному. Аудиоредакторы обычно не выполняют вставки «семпл за семплом», то есть пользователь не вводит один семпл за один раз в интерактивном режиме, но у вас есть несколько операций вырезания и вставки. Я бы начал с представления, где аудиофайл представлен кусками данных, которые хранятся в (двоичном) дереве поиска. Вставка работает путем разделения фрагмента, который вы вставляете, на два фрагмента, добавления вставленного фрагмента в качестве третьего и обновления дерева. Чтобы сделать это эффективным и отзывчивым для пользователя, у вас должен быть фоновый процесс, который дефрагментирует представление на диске (или в памяти), а затем выполняет атомарное обновление дерева, содержащего фрагменты. Это должно сделать вставки и удаления как можно быстрее. Многие другие аудио операции (эффекты, нормализация, микширование) работают на месте и не требуют изменений в структуре данных, но делают, например, Нормализация всего аудиосэмпла - это хорошая возможность одновременно дефрагментировать его. Если аудиосэмплы велики, вы можете сохранить фрагменты, так как это стандартно для жесткого диска. Я не верю, что куски должны быть фиксированного размера; они могут иметь переменный размер, предпочтительно 1024 x (степень двух) байтов, чтобы сделать файловые операции эффективными, но стратегию фиксированного размера легче реализовать.