Об этом проекте

flashback-sampler — это настольное аудио-приложение, которое непрерывно записывает системный звук в кольцевой буфер, позволяя пользователям вырезать фрагмент из недавнего прошлого, прослушивать и редактировать его, затем сохранять или перетаскивать прямо в DAW. Кольцо продолжает работать во время всех операций. Ключевые цели: никогда не терять запись — кольцо хранит последние N минут с частотой до 192 кГц, а вырезанные фрагменты сразу записываются на диск, чтобы выживать при сбоях. Перетаскивание использует стандартный механизм файлового дропа ОС, чтобы любой хост DAW мог его принять. Экспортированные фрагменты содержат дополнительный аудио-материал («ручки») по краям, позволяя пользователям в DAW тянуть края клипа для раскрытия большего объёма звука. Сам фрагмент остаётся целым, а метки WAV (cue, smpl, adtl) помечают его внутри файла. Опционально можно перетаскивать Ableton Live Clip (.alc) вместо WAV. Движок — это библиотека на Zig без зависимостей, расположенная в core/, отвечающая за захват, микширование, воспроизведение, кольцо, пики, WAV и временный кэш. Python используется как оболочка PySide6/Qt, создающая интерфейсные элементы, запускающая и останавливающая их, читающая числовые данные; он никогда не видит аудио-кадры. Тот же движок может быть использован под плагином CLAP, доком OBS или мобильным приложением. Текущая версия — 0.4.1, только Windows. Захват, микширование и воспроизведение осуществляются через WASAPI в ядре Zig. Ядро кросс-компилируется для Linux и macOS, но соответствующие бэкенды пока не реализованы. UI на Qt запланирован к переписыванию на нативный Zig. Интерфейс представляет собой пару проигрывателей: левый — живой кольцевой буфер, правый — вырезанные клипы. Пользователь выбирает источник (по умолчанию — выход, устройство захвата, один процесс или несколько смешанных входов), запускает/останавливает захват, задаёт длительность и позицию фрагмента, замораживает отображение для точного вырезания при продолжающемся захвате, вырезает выборки, прослушивает и редактирует клипы, сохраняет как WAV (по умолчанию 32-битный float) или перетаскивает в DAW. Вырезанные фрагменты сохраняются после остановки захвата и хранятся в временной папке как float32 WAV. Память выделяется заранее при активации слота: секунды × частота × каналы × 4 байта. Предустановка на 15 минут стерео 48 кГц занимает 346 МБ. Перед созданием кольца выполняются две проверки: ограничение максимального объёма (по умолчанию 25% физической памяти) и отказ, если кольцо превышает свободную физическую память. Поведение маркеров DAW протестировано только в Ableton Live 12. Reaper, Logic, Cubase, Bitwig, FL Studio, Studio One и Pro Tools указаны, но не тестировались. Требуется Python 3.10+ и Zig 0.16.0. Лицензия MIT; встроенные шрифты Monaspace распространяются под SIL Open Font License 1.1.