# Виртуальная MIDI Клавиатура-пианино

- Введение
- Начало работы
  - Принципы MIDI
  - Привязки клавиш и описания инструментов
  - Соединения MIDI и виртуальные MIDI кабели
- Часто задаваемые вопросы
- Загрузка
- Установка из исходников
  - Требования
  - Замечания для пользователей Windows
  - Замечания для пользователей Mac OSX
  - Замечания для упаковщиков и продвинутых пользователей
- Благодарности

## Введение

Виртуальная MIDI Клавиатура-Пианино — это генератор и приёмник событий MIDI. Программа не производит никакого звука сама по себе, но позволяет управлять MIDI синтезатором (аппаратным, программным или внешним). Вы можете использовать клавиатуру компьютера или мышь, чтобы проигрывать ноты MIDI. Вы можете использовать Виртуальную MIDI Пианино Клавиатуру, чтобы отображать проигранные MIDI ноты из другого инструмента или проигрывателя MIDI файлов. Чтобы сделать это, соедините порт MIDI со входным портом VMPK.

VMPK была протестирована на Linux, Windows и Mac OSX, но, возможно, вы сможете собрать её и на других системах. Если вы сделаете это, напишите автору письмо.

На написание это приложения меня вдохновила Virtual Keyboard (vkeybd), написанная Takashi Iway. Это замечательная программа, хорошо служившая нам в течение многих лет. Спасибо!

VMPK использует современную графическую библиотеку: Qt5, дающую превосходные возможности и функциональность. Drumstick-rt предоставляет возможности ввода/вывода MIDI. Обе библиотеки свободные и платформонезависимые, доступны для Linux, Windows и Mac OSX.

Алфавитно-цифровые привязки клавиш могут быть настроены в самой программе, c использованием графического интерфейса, а настройки хранятся в файлах XML. Сделаны некоторые схемы привязок для испанских, немецких и французских клавиатур, сконвертированные из тех, что были в VKeybd.

VMPK может посылать программные изменения и регулировки на MIDI синтезатор. Описания для различных стандартов и устройств могут быть предоставлены, как .INS файлы, в формате, используемом QTractor и TSE3. Он был разработан Cakewalk и также используется в Sonar.

Эта программа находится в очень ранней стадии разработки. Чтобы узнать о нереализованных возможностях, смотрите список TODO. Пожалуйста, пишите автору, если у вас возникают вопросы, если вы встретите ошибку или хотите предложить улучшение. Вы можете использовать трекер на странице проекта на SourceForge.

Copyright (C) 2008-2024, Pedro Lopez-Cabanillas <plcl AT users.sourceforge.net> и другие.

Виртуальная MIDI Клавиатура-Пианино ‒ это свободное программное обеспечение, распространяющееся по лицензии GPL v3.

## Начало работы

### Принципы MIDI

MIDI — это индустриальный стандарт соединения музыкальных инструментов. Он основан на пересылке действий, производимых музыкантом, играющим на музыкальном инструменте, на другой инструмент. Музыкальные инструменты, оснащённые MIDI интерфейсами, обычно имеют два DIN разъёма, обозначенные MIDI IN и MIDI OUT. Иногда встречается третий разъём, обозначенный MIDI THRU. Чтобы соединить два MIDI инструмента, нужно соединить MIDI кабелем разъём MIDI IN инструмента, посылающего события, и MIDI IN принимающего. Вы можете найти больше информации, а также обучающие уроки, как этот в сети Интернет.

Для компьютеров также существуют аппаратные MIDI интерфейсы с MIDI IN и OUT портами, к которым вы можете подключать MIDI кабели, чтобы соединить комьютер с внешними MIDI инструментами. Если аппаратный интерфейс не нужен, компьютер может использовать программное обеспечение MIDI. Пример тому VMPK, которая предоставляет MIDI IN и OUT порты. Вы можете подключать к портам VMPK виртуальные MIDI кабели, чтобы соединить программу с другими программами или с физическими портами MIDI интерфейса компьютера. Больше деталей об этом будет написано позже. Скорее всего вы захотите соединить MIDI выход VMPK со входом какого-нибудь синтезатора, который переводит MIDI в звук. Другим примером для соединения может быть MIDI монитор, который переводит события MIDI в читаемый текст. Это поможет вам понять, что за информация посылается, используя протокол MIDI. В Linux вы можете попробовать KMidimon, а в Windows — MIDIOX.

VMPK не производит никакого звука сама по себе. Вам потребуется программный синтезатор MIDI, чтобы услышать проигрываемые ноты. Я советую попробовать прямой вывод Fluidsynth, предоставляемый drumstick-rt. В Windows также можно использовать «Microsoft GS Wavetable SW Synth», который идёт в комплекте со всеми версиями Windows. Конечно, использовать внешний MIDI синтезатор будет даже лучше.

### Привязки клавиш и описания инструментов

VMPK может помочь вам изменить звуки в вашем MIDI синтезаторе, но только если вы сначала предоставите описание для звуков синтезатора. Описания ‒ это текстовые файлы с расширением .INS, в том же формате, что используют Qtractor (Linux) и Sonar (Windows).

Когда вы запускаете VMPK в первый раз, вам нужно открыть диалоговое окно Параметры и выбрать файл описаний, а затем выбрать название инструмента из тех, что предоставляет файл описаний. Вы можете найти такой файл в директории с данными VMPK (обычно «/usr/share/vmpk» в Linux, и «C:\Program Files\VMPK» в Windows). Он называется «gmgsxg.ins» и содержит описания для стандартов General MIDI, Roland GS и Yamaha XG. У этого файла очень простой формат, и вы можете использовать текстовый редактор, чтобы просмотреть, изменить его и создать новый. Вы можете найти библиотеку описаний инструментов на ftp-сервере cakewalk.

Начиная с выпуска 0.2.5 вы также можете импортировать файлы Sound Font (в форматах .SF2 или DLS), как описания инструментов, используя диалог, доступный через меню Файл→Импортировать SoundFont.

Другая настройка, которую вы возможно захотите совершить ‒ это привязки клавиш. Раскладка по умолчанию охватывает около двух с половиной октав для QWERTY клавиатуры, но в директории с данными находятся ещё несколько описаний привязок, адаптированных для других международных раскладок. Вы даже можете задать собственные схемы привязки, используя диалоговое окно, доступное через меню Правка→Привязки клавиш. Также есть опции для загрузки и сохранения схем привязок, как XML файлов. Последняя загруженная схема привязок будет восстановлена при следующем запуске VMPK. На самом деле, все ваши параметры, выбранный банк MIDI и программа, и значения регуляторов будут сохранены при выходе и восстановлены, когда вы в следующий раз запустите VMPK.

### Соединения MIDI и виртуальные MIDI кабели

Чтобы соединить два аппаратных MIDI устройства, вам нужны физические MIDI кабели. Чтобы соединить MIDI программы, вам нужны виртуальные MIDI кабели. В Windows вы можете использовать такие MIDI кабели, как MIDI Yoke, Maple, LoopBe1 или Sony Virtual MIDI Router.

В процессе установки MIDI Yoke будут установлены драйвер и апплет панели управления, в котором можно изменять доступное количество MIDI портов (вам потребуется перезагрузить компьютер после изменения этой установки). MIDI Yoke работает, посылая каждое событие MIDI, записанное на OUT порт, на соответствующий IN порт. Например, VMPK можно соединить с выходом порта 1, а другая программа, к примеру QSynth, может считывать события с порта 1.

Используя MIDIOX, можно добавить больше маршрутов между портами MIDI Yoke и другими системными MIDI портами. Эта программа также предоставляет много интересных функций, например проигрыватель MIDI файлов. Вы можете слушать песни, проигрываемые MIDI Synth и в то же время видеть проигрываемые ноты (только один канал) в VMPK. Чтобы сделать это, вам нужно в окне «Маршруты» в MIDIOX соединить входной порт 1 с портом Window Synth. Также настройте порт MIDI проигрывателя, чтобы он посылал события на MIDI Yoke 1. И настройте входной порт VMPK, чтобы читать из MIDI Yoke 1. Проигрыватель будет посылать события на выход 1, который будет перенаправлять их на входной порт 1 и порт Synth одновременно.

В Linux виртуальные кабели предоставляются секвенсером ALSA. Порты создаются динамически, когда вы запускаете программу, так что их количество не фиксировано, как в MIDI Yoke. Утилита командной строки «aconnect» позволяет соединять и разъединять виртуальные MIDI кабели между любыми портами, будь то аппаратные интерфейсы или приложения. Есть хорошая графическая утилита, делающая то же самое ‒ QJackCtl. Главное назначение этой программы ‒ управление службой Jack (запуск, остановка и мониторинг состояния). Jack предоставляет виртуальные аудио кабели, чтобы соединять порты аудио карт с аудио программами, подобно тому, как это происходит с виртуальными MIDI кабелями, но для цифровых аудио данных.

## Часто задаваемые вопросы

### Как отобразить 88 клавиш?

Начиная с версии 0.6 вы можете задать любое число (между 1 и 121) клавиш и начальную клавишу в диалоге Настройки.

### Нет звука

VMPK не производит никакого звука сама по себе. Вам необходим MIDI синтезатор. Пожалуйста, перечитайте документацию.

### Некоторые клавиши молчат

Когда вы выбираете канал 10 на стандартном MIDI синтезаторе, он играет звуки перкуссии, назначенные на многие клавиши, но не на все. На мелодичных каналах (не на 10 канале) вы можете выбирать патчи с ограниченным рядом нот. Это известно в музыке, как Тесситура.

### Названия патчей не совпадают с реальными звуками

Вам нужно предоставить .INS файл, в точности описывающий набор звуков вашего синтезатора или SoundFont. Включённый в программу файл (gmgsxg.ins) содержит только описания для стандартных GM, GS и XG инструментов. Если ваш MIDI синтезатор не совпадает ни с одним из них, вам нужно достать другой .INS файл либо создать его самостоятельно.

### Какой синтаксис у файлов Описаний Инструментов (.INS)?

Одно из описаний формата INS можно найти здесь.

### Могу ли я перевести мои Описания Инструментов для vkeybd в .INS файл?

Конечно. Используйте сценарий AWK «txt2ins.awk». Вы можете даже использовать утилиту sftovkb из vkeybd, чтобы создать .INS файл из любого SF2 SoundFont, но функция импорта названий инструментов из файлов SF2 и DLS есть и в VMPK.

    $ sftovkb SF2NAME.sf2 | sort -n -k1,1 -k2,2 > SF2NAME.txt
    $ awk -f txt2ins.awk SF2NAME.txt > SF2NAME.ins

Вы можете найти сценарий AWK «txt2ins.awk» в директории с данными VMPK.

## Загрузка

Вы можете найти последнюю версию исходных кодов, пакетов для Windows и Mac OSX на сайте проекта SourceForge.

Существуют готовые к установке пакеты Linux для:

- openSUSE
- Arch Linux
- Gentoo
- Fedora (старая версия)
- Debian (старая версия)
- Ubuntu (старая версия)

## Установка из исходных кодов

Скачайте исходники с http://sourceforge.net/projects/vmpk/files. Распакуйте исходники в вашу домашнюю директорию, и перейдите в распакованную директорию.

    $ cd vmpk-x.y.z

Вы можете выбирать между сборочными системами CMake и Qmake, но qmake предусматривается только для тестирования и разработки.

    $ cmake .
    или
    $ ccmake .
    или
    $ qmake

После этого скомпилируйте программу:

    $ make

Если программа успешно скомпилировалась, вы можете установить её:

    $ sudo make install

### Требования

Чтобы собрать и использовать VMPK, вам понадобится Qt версии 5.1 или новее. (установите пакет -devel для вашей системы или загрузите open source версию с сайта qt-project.org

На всех платформах требуется Drumstick RT. Эта библиотека использует секвенсор ALSA в Linux, WinMM в Windows и CoreMIDI в Mac OSX, то есть системы MIDI, родные для каждой из поддерживаемых платформ.

Система сборки основана на CMake.

Вам также потребуется компилятор GCC C++. MinGW — это его Windows порт.

Опционально, вы можете собрать установочную программу Windows, используя NSIS.

### Замечания для пользователей Windows

Чтобы скомпилировать исходники в Windows, вам потребуется скачать архив в формате .bz2 или .gz и распаковать его, используя любую программу, которая поддерживает этот формат, например 7-Zip.

Чтобы сконфигурировать исходники, вам потребуется qmake (из Qt5) или CMake. Вам необходимо установить переменную среды PATH, чтобы она включала директории с исполняемыми файлами Qt5, MinGW и CMake. Программа CMakeSetup.exe — это графическая версия CMake для Windows.

Если вам нужен синтезатор, может, вы захотите взглянуть на Virtual MIDI Synth или FluidSynth.

### Замечания для пользователей Mac OSX

Вы можете найти прекомпилированный пакет приложения, включающий библиотеки Qt5, на странице загрузок проекта. Если вы предпочитаете устанавливать из исходников, вы можете использовать CMake или Qmake, чтобы собрать пакет приложения, скомпонованный с установленными системными библиотеками. Вы можете использовать как Qt5 от qt-project.org, так и пакет, распространяемый Homebrew.

Система сборки сконфигурирована, чтобы производить пакет приложения. Вам потребуются инструменты разработчика Apple, а так же библиотеки Qt5.

Чтобы скомпилировать VMPK, используя файлы сборки Makefile, сгенерированные qmake:

    $ qmake vmpk.pro -spec macx-g++
    $ make
    опционально:
    $ macdeployqt build/vmpk.app

Чтобы скомпилировать, используя файлы сборки Makefile, сгенерированные CMake:

    $ cmake -G "Unix Makefiles" .
    $ make

Чтобы создать файлы проекта Xcode:

    $ qmake vmpk.pro -spec macx-xcode
    или
    $ cmake -G Xcode .

Если вам нужно что-нибудь, чтобы производить шум, возможно вы захотите взглянуть на SimpleSynth, или FluidSynth. Для маршрутизации MIDI, также есть MIDI Patchbay.

### Замечания для упаковщиков и продвинутых пользователей

Вы можете попросить компилятор выполнять некоторую оптимизацию во время сборки программы. Есть два пути сделать это: во первых, используя предопределённый тип сборки.

    $ cmake . -DCMAKE_BUILD_TYPE=Release

Тип CMake «Release» использует флаги компилятора: «-O3 -DNDEBUG». Другие предопределённые типы сборки, это «Debug», «RelWithDebInfo», и «MinSizeRel». Второй путь, это выбрать флаги компилятора самостоятельно.

    $ export CXXFLAGS="-O2 -march=native -mtune=native -DNDEBUG"
    $ cmake .

Вам следует подобрать лучшие CXXFLAGS для вашей собственной системы.

Если вы хотите установить программу в иное место, чем заданное по умолчанию (/usr/local), используйте следующую опцию CMake:

    $ cmake . -DCMAKE_INSTALL_PREFIX=/usr

## Благодарности

В дополнение к вышеупомянутым инструментам, VMPK использует работы из следующих open source проектов.

- из Qtractor, от Rui Nuno Capela
  Классы данных описаний инструментов
- Значок и логотип нарисованы Терезой Кнотт

Огромное вам спасибо!