Приложение для многодорожечной записи музыки — Version 0.1.1
2026-04-13
Musician's Canvas — это приложение для многодорожечной записи музыки для настольных ПК. Оно поддерживает запись звука с микрофонов и линейных входов, запись MIDI с клавиатур и контроллеров, а также сведение всех дорожек в один файл WAV или FLAC. Сопутствующее приложение Virtual MIDI Keyboard предоставляет программную фортепианную клавиатуру для отправки MIDI-нот.
Musician's Canvas разработано для удобства использования и при этом предоставляет функции, характерные для цифровых звуковых рабочих станций (DAW):
Запустите исполняемый файл musicians_canvas из каталога сборки или места установки:
./musicians_canvas
При первом запуске приложение открывается с пустым проектом. Перед записью необходимо указать каталог проекта.
При запуске приложение применяет сохранённую тему (тёмную или светлую) и, если ранее использовался каталог
проекта, содержащий файл project.json, проект загружается автоматически.
Укажите каталог проекта: введите или выберите папку в поле "Project Location" в верхней части окна. Здесь будут храниться записи и файл проекта.
Добавьте дорожку: нажмите кнопку + Add Track. Появится новая дорожка с настройками по умолчанию. Если это единственная дорожка в проекте и она ещё не записана, она автоматически ставится на подготовку к записи.
Назовите дорожку: введите название в текстовое поле рядом с кнопкой "Options". Это название используется в качестве имени файла записанного аудио.

Непосредственно под строкой меню находится панель инструментов с кнопками быстрого доступа:

Файл проекта (project.json) хранит названия дорожек, типы, MIDI-ноты, ссылки на аудиофайлы и все
настройки проекта. Аудиофайлы хранятся в том же каталоге, что и project.json, и именуются по названию
дорожки (например, My_Track.flac).
Если вы закрываете приложение с несохранёнными изменениями, появится диалог подтверждения с вопросом о сохранении перед выходом.
Когда проект открыт, вы можете перетащить один или несколько поддерживаемых аудиофайлов из файлового менеджера (Проводник Windows, Finder macOS, файловый менеджер Linux и т. д.) прямо в окно Musician's Canvas, чтобы добавить их как новые аудиодорожки.
.wav и .flac. Файлы в любых других форматах
молча пропускаются, а в конце диалоговое окно показывает, какие файлы были
пропущены.Bass Line.wav создаёт
аудиодорожку с именем "Bass Line".Каждая дорожка может быть настроена как Audio (для записи с микрофона/линейного входа) или MIDI (для записи с клавиатуры/контроллера).
Чтобы изменить тип дорожки:
Откроется диалог настройки дорожки, где можно выбрать источник входного сигнала.

Каждая строка дорожки содержит следующие элементы управления:
Если в проекте ровно одна дорожка и она ещё не записана, она автоматически подготавливается к записи. Это работает как при добавлении первой дорожки в новый проект, так и при открытии существующего проекта с одной пустой дорожкой.
Записанный звук сохраняется как файл FLAC в каталоге проекта с именем дорожки.
Во время записи и воспроизведения все интерактивные элементы управления (кнопки дорожек, настройки и т. д.) отключаются для предотвращения случайных изменений.
У аудиодорожек есть кнопка Эффекты под Options. Она открывает диалог Эффекты дорожки, где настраивается упорядоченная цепочка вставных эффектов для записи на этой дорожке:

Доступны Реверб, Хорус, Фленджер, Overdrive / distortion, Amp & cabinet (моделирование усилителя и кабинета: тип усилителя, кабинет, усиление, НЧ/СЧ/ВЧ, «воздух» и смесь) и Vibrato (Tremolo).
Vibrato (Tremolo) — это классическое фэндеровское “Vibrato” (на деле тремоло): периодическая модуляция громкости. Параметр Speed задаёт скорость пульсации, а Intensity (Depth) — глубину (от лёгкого мерцания до полного “chop”).
Снимки эффекта Amp & cabinet:


Эффекты применяются при остановке записи, после обычного захвата и передискретизации. Конфигурация
хранится в project.json в поле audioEffectChain.
Project → Project Settings → Mix Effects lets you build the same kind of ordered effect chain as Track effects (Reverb, Chorus, Flanger, Overdrive / distortion, Amp & cabinet, Vibrato (Tremolo)), but applied to the entire mixed program: when you press Play to hear all enabled tracks together, and when you export with Mix tracks to file (toolbar or Tools menu). The chain is saved in project.json under projectSettings → mixEffectChain.
Project → Project Settings → Aux / Send Bus configures a shared effect chain fed by each track’s Aux send slider (on the track row). The dry mix of all tracks is summed, each track’s post-gain/post-pan signal is scaled by its Aux level and sent through this bus, then the wet aux output is added back to the dry sum before Mix Effects run. Use it for a single shared reverb/delay while keeping per-track insert effects independent.
To reduce harsh digital clipping when processing pushes peaks toward full scale, the effect engine applies a soft limiter to normalized float samples immediately before conversion to 16-bit PCM. The EffectWidget base class documents guardFloatSampleForInt16Pcm() and softLimitFloatSampleForInt16Pcm() for any new real-time code that writes to 16-bit audio.
Each track row includes a compact mixer strip:
Options → Track Configuration also offers Clip trim (non-destructive): Trim start and Trim end skip that many seconds from the beginning and end of the clip for playback, mix, and export without deleting the underlying recording.
MIDI tracks can carry control change (CC) automation stored in the project and in exported .mid files; offline playback and mix use these events when rendering MIDI to audio.
Edit → Undo / Redo (standard shortcuts) apply to mixer and trim changes made on tracks.
Рядом с индикатором времени флажок Мониторинг звука при записи включает или отключает вывод живого входа на аудиовыход проекта во время захвата:
Параметр сохраняется в проекте (monitorWhileRecording в project.json). Отключите, чтобы уменьшить акустическую обратную связь по микрофону.
При записи новой дорожки, когда другие включённые дорожки уже содержат аудио- или MIDI-данные, Musician's Canvas выполняет запись наложением: существующие дорожки смешиваются и воспроизводятся в реальном времени во время записи новой дорожки. Это позволяет слышать ранее записанные партии при записи новой.
Микс существующих дорожек подготавливается до начала захвата, поэтому запись и воспроизведение начинаются приблизительно в один и тот же момент, обеспечивая синхронизацию всех дорожек.
Musician's Canvas поддерживает два бэкенда захвата звука:
Бэкенд записи можно настроить для каждого проекта в Project > Project Settings > Audio.
Musician's Canvas записывает на собственной частоте дискретизации аудиоустройства ввода, а затем автоматически преобразует в настроенную частоту дискретизации проекта с использованием высококачественной передискретизации. Это означает, что вы можете установить любую частоту дискретизации проекта (например, 44100 Гц или 48000 Гц) независимо от собственной частоты устройства. Преобразование точно сохраняет высоту тона и длительность.
Некоторые аудиоустройства (например, USB-микрофоны веб-камер) физически являются моно, но операционная система представляет их как стерео. Musician's Canvas автоматически обнаруживает это и соответствующим образом корректирует количество каналов. Если проект настроен на стерео, моносигнал дублируется на оба канала.
MIDI-ноты отображаются в визуализации «пианиноролл» на дорожке.
Musician's Canvas включает встроенный метроном, который можно использовать во время записи для поддержания темпа. Нажмите кнопку метронома на панели кнопок (под строкой меню), чтобы открыть диалог настроек метронома:

Диалог предоставляет:
Когда метроном включён, он начинает тикать, как только запись действительно начинается (после завершения 3-секундного обратного отсчёта), и останавливается по окончании записи.
Нажмите кнопку Play, чтобы смешать и воспроизвести все включённые дорожки. Подсказка кнопки меняется, указывая, будет ли выполнено воспроизведение или запись, в зависимости от того, подготовлена ли дорожка. Отключённые дорожки (снятые флажки) исключаются из воспроизведения.
Во время воспроизведения аудиодорожки декодируются из файлов FLAC, а MIDI-дорожки рендерятся в аудио с помощью встроенного синтезатора FluidSynth. Все дорожки смешиваются и воспроизводятся через устройство аудиовыхода системы.
Нажмите кнопку Stop, чтобы прекратить воспроизведение в любой момент.
Используйте Tools > Mix tracks to file (Ctrl+M) для экспорта всех включённых дорожек в один аудиофайл. Диалоговое окно позволяет выбрать путь вывода и формат:
Сведение использует настроенную частоту дискретизации проекта. MIDI-дорожки рендерятся с использованием настроенного SoundFont.
Используйте Settings > Configuration (Ctrl+,) для установки глобальных значений по умолчанию, применяемых ко всем проектам:



.sf2 для синтеза MIDI. В Linux системный SoundFont может быть
обнаружен автоматически, если установлен пакет fluid-soundfont-gm. В Windows и macOS путь к SoundFont
необходимо настроить вручную.

Используйте Project > Project Settings (Ctrl+P) для переопределения глобальных значений по умолчанию
только для текущего проекта. Это полезно для проектов, требующих определённой частоты дискретизации,
SoundFont или аудиоустройства. Настройки проекта сохраняются в файле project.json.


The Mix Effects tab is a scrollable list with the same controls as Track effects (Add effect…, drag ≡ to reorder, ✕ to remove). Processing order is top to bottom on the combined mix of all enabled tracks. These effects run during whole-project playback and when mixing to a single WAV or FLAC file; they are not baked into individual track files on disk. An empty list leaves the mixed signal unchanged aside from the mixer's own level handling.
Configure the shared aux effect chain (same effect types as track inserts). Each track’s Aux slider on the track row controls how much of that track’s signal is sent through this bus; the wet aux return is summed with the dry mix before Mix Effects are applied.
| Пункт меню | Сочетание клавиш | Описание |
|---|---|---|
| Save Project | Ctrl+S | Сохранить текущий проект на диск |
| Open Project | Ctrl+O | Открыть существующий файл проекта |
| Close | Ctrl+Q | Выйти из приложения |
| Пункт меню | Сочетание клавиш | Описание |
|---|---|---|
| Project Settings | Ctrl+P | Configure project-specific settings (includes Aux / Send Bus) |
| Tempo map | Edit tempo changes (seconds vs BPM) for metronome and MIDI quantization | |
| Add Demo Data to Selected Track | Добавить демонстрационные MIDI-ноты |
| Menu Item | Shortcut | Description |
|---|---|---|
| Undo | Ctrl+Z | Undo recent mixer/trim edits on tracks |
| Redo | Ctrl+Shift+Z | Redo |
| Пункт меню | Сочетание клавиш | Описание |
|---|---|---|
| Configuration | Ctrl+, | Открыть глобальные настройки приложения |
| Пункт меню | Сочетание клавиш | Описание |
|---|---|---|
| Mix tracks to file | Ctrl+M | Экспорт всех включённых дорожек в файл |
| Export stems to folder | One WAV stem per track (gain/pan/trim; no master Mix Effects) | |
| Recording options | Punch-in region for audio; loop playback for the whole project | |
| Quantize MIDI | Snap MIDI note starts to a grid (all MIDI tracks or armed track only) | |
| Add drum track | D | MIDI-ударная дорожка и .mid (см. ниже) |
| Virtual MIDI Keyboard | Запустить сопутствующее приложение клавиатуры |
| Пункт меню | Сочетание клавиш | Описание |
|---|---|---|
| Manual | Alt+M | Открыть PDF-руководство на текущем выбранном языке |
| About | Показать версию и сведения о приложении |
| Сочетание | Действие |
|---|---|
| Ctrl+S | Сохранить проект |
| Ctrl+Z | Undo (mixer/trim) |
| Ctrl+Shift+Z | Redo |
| Ctrl+O | Открыть проект |
| Ctrl+M | Сведение дорожек в файл |
| D | Добавить ударную дорожку (меню Tools) |
| Ctrl+P | Настройки проекта |
| Ctrl+, | Настройки / Конфигурация |
| Alt+M | Open PDF manual (Help) |
| Ctrl+Q / Alt+F4 | Выход |
Tools → Add drum track (клавиша D) добавляет MIDI-дорожку на канале 10 General MIDI (индекс 9). Имя по умолчанию — Drums.
Сразу записывается .mid в папку проекта: два такта 4/4. Темп:
Ссылки: Audient, MDrummer, Reddit, CS229 PDF.
Virtual MIDI Keyboard — это сопутствующее приложение (virtual_midi_keyboard), которое предоставляет
экранную фортепианную клавиатуру для отправки MIDI-нот. Его можно запустить из меню
Tools > Virtual MIDI Keyboard в основном приложении или запустить независимо.

Клавиатура компьютера сопоставлена с клавишами фортепиано на протяжении двух октав:
Нижняя октава (начиная с текущей октавы):
| Клавиша | Нота |
|---|---|
| Z | C |
| S | C#/Db |
| X | D |
| D | D#/Eb |
| C | E |
| V | F |
| G | F#/Gb |
| B | G |
| H | G#/Ab |
| N | A |
| J | A#/Bb |
| M | B |
Верхняя октава (на одну октаву выше):
| Клавиша | Нота |
|---|---|
| Q | C |
| 2 | C#/Db |
| W | D |
| 3 | D#/Eb |
| E | E |
| R | F |
| 5 | F#/Gb |
| T | G |
| 6 | G#/Ab |
| Y | A |
| 7 | A#/Bb |
| U | B |
| I | C (следующая октава) |
| 9 | C#/Db |
| O | D |
| 0 | D#/Eb |
| P | E |
Клавиши визуально подсвечиваются при нажатии (белые клавиши становятся голубыми, чёрные — затемняются).
Откройте диалог конфигурации (Settings > Configuration, Ctrl+,) для настройки MIDI- и аудиоустройств:

.sf2 для встроенного синтезатора.| Сочетание | Действие |
|---|---|
| Ctrl+, | Диалог конфигурации |
| Ctrl+U | Справка / информация |
| Ctrl+Q | Закрыть |
.sf2) для последующего воспроизведения.Ноты отображаются в рояльной раскладке. File > Save Project записывает файл .mid и project.json в папку проекта.
Воспроизведение идёт через FluidSynth с SoundFont из настроек. Проверьте Settings > Configuration > MIDI (или Project > Project Settings, если есть переопределения проекта): должен быть указан корректный путь к .sf2. В Linux системный SoundFont может находиться автоматически; в Windows и macOS обычно нужно выбрать файл вручную.
Это два отдельных приложения. Запускайте Virtual MIDI Keyboard через Tools > Virtual MIDI Keyboard (или отдельно). Чтобы экранная клавиатура попадала в Musician's Canvas при записи MIDI, ОС должна направить MIDI-выход клавиатуры на вход, который использует Musician's Canvas — часто через виртуальный MIDI-кабель или согласованные порты в обоих программах. Автоподключения нет.
Settings > Configuration задаёт глобальные значения по умолчанию (тема, язык, MIDI/аудиоустройства, SoundFont и т. д.). Project > Project Settings переопределяет часть параметров только для текущего проекта и сохраняется в project.json. Если поле оставлено на проектном умолчании, используется глобальное значение из Configuration.
Файлы принимаются только при заданном каталоге проекта и когда Musician's Canvas не воспроизводит и не записывает. Поддерживаются .wav и .flac; остальные расширения пропускаются и показываются в диалоге. Каждый файл становится новой аудиодорожкой с именем из базового имени файла.
Аудио сохраняется в каталоге проекта как <имя_дорожки>.flac (символы вроде / \ : * ? " < > | заменяются на подчёркивание). Файл проекта — project.json в той же папке. MIDI-дорожки при сохранении проекта записываются как <имя_дорожки>.mid (ноты также в project.json).
При сведении или воспроизведении MIDI сначала рендерится во временный WAV. Если известен путь проекта, Musician's Canvas также записывает кэширующий FLAC в папку проекта: <очищенное_имя_дорожки>.flac (те же правила очистки, что и у других файлов дорожек). Имя берётся от названия дорожки, а не от внутреннего ID.
Нет. Вооружена может быть только одна дорожка; на неё идёт следующая запись. Собирайте проект, записывая по очереди (overdub воспроизводит существующие дорожки при новой записи).
Нет. При включении метроном звучит через системный вывод только для вас. В файл записи он не микшируется.
В Windows основное приложение рассчитывает на драйвер ASIO для стабильного аудио с низкой задержкой. При ошибках установите ASIO4ALL или драйвер производителя интерфейса.
В пакете .app исполняемый файл Virtual MIDI Keyboard копируется внутрь Musician's Canvas.app (Contents/MacOS/), чтобы распространять один каталог приложения. Запуск по-прежнему через Tools > Virtual MIDI Keyboard.
amixer
или настройки звука вашего рабочего стола для проверки уровня громкости..sf2) настроен в Settings > Configuration > MIDI.fluid-soundfont-gm.libpipewire-0.3-dev (необходим для интеграции
PipeWire с синтезатором FluidSynth).Полные инструкции по сборке для Linux, macOS и Windows, включая все необходимые зависимости, см. в README.