# Виртуальная 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 использует современную графическую библиотеку: Qt4, превосходную по своим возможностям и функциональности. RtMIDI предоставляет возможности ввода/вывода MIDI. Обе библиотеки свободные и платформонезависимые, доступны для Linux, Windows и Mac OSX.

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

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

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

Copyright (C) 2008-2013, 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, чтобы услышать проигрываемые ноты. Я советую попробовать QSynth, графическую оболочку для Fluidsynth. Также можно использовать «Microsoft GS Wavetable SW Synth», который идёт с XP. Конечно, использование внешнего 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 клавиш?

88 ‒ это случайное число, используемое большинством современных производителей пианино, но производители органов и синтезаторов не всегда следуют этому соглашению. VMPK может быть настроена, чтобы отображать от 1 до 10 октав. При использовании 7 октав она показывает 84 клавиши, а при 8 октавах ‒ 98 клавиш. Нет способа показать ровно 7 с 1/4 октавы.

### Нет звука

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

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

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

### Опция «Захватывать клавиатуру» не работает

Это известная проблема для пользователей Linux. Возможность хорошо работает в окружении KDE3/4 при использовании стандартного оконного менеджера kwin; она также работает с Enlightenment и Window Maker, но не работает с оконными менеджерами Compiz и Metacity, обычными для сборок Gnome. Также известно, что использование этой опции мешает нормальному использованию контекстных меню в приложениях GTK2. Для этой проблемы нет известного решения, кроме как избегать сломанных сценариев, если вам действительно нужна эта возможность.

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

Вам нужно предоставить .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 пакеты для:

- Debian
- Ubuntu
- UbuntuStudio (Tango Studio)
- Arch Linux (Aur)
- Pardus
- Gentoo
- Zenwalk
- Mandriva (Cooker)

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

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

    $ cd vmpk-x.y.z

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

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

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

    $ make

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

    $ sudo make install

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

Чтобы успешно собрать и использовать VMPK, вам потребуется Qt 4.6, либо более новая версия. (установите -devel пакет для вашей системы или скачайте open source редакцию с qtsoftware.com, бывший Trolltech.)

RtMIDI включён в пакет исходных кодов. Он использует секвенсер ALSA в Linux, WinMM в Windows и CoreMIDI в Mac OSX, которые являются встроенными MIDI системами для каждой из поддерживаемых платформ.

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

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

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

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

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

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

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

Вы можете найти прекомпилированный пакет приложения, включающий библиотеки Qt4, на странице скачек проекта. Если вы предпочитаете устанавливать из исходников, вы можете использовать CMake или Qmake, чтобы собрать пакет приложения, скомпонованный с установленными системными библиотеками. Вы можете использовать как Qt4 от qtsoftware.com, так и пакет, распространяемый Fink.

Система сборки сконфигурирована, чтобы производить универсальный исполняемый файл (x86+ppc) в пакете приложений. Вам потребуются инструменты разработчика Apple, а так же Qt4 SDK от Nokia.

Чтобы скомпилировать 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 (доступен с Fink). Для маршрутизации 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
  Классы данных описаний инструментов
- из QSynth, от Rui Nuno Capela
  Виджет ручка
- Значок и логотип от Theresa Knott

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

## Примечание переводчика

Этот документ был переведён на русский язык Sergey Basalaev <sbasalaev AT gmail.com>. Пожалуйста, напишите мне, если вы обнаружили в тексте ошибки или неточности перевода.

This document was translated into Russian by Sergey Basalaev. Please mail me if you find any mistakes or translation inaccuracies in the text.