Це командний мідж, який можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних онлайн-робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн- емулятор Windows або онлайн-емулятор MAC OS
ПРОГРАМА:
ІМ'Я
midge - створити midi-файл з текстового опису музики
СИНТАКСИС
мошка [параметри] [назва файлу]
ОПИС
мошка створює MIDI-файл типу 1 з текстового опису музики. мошка приймає це
введення з stdin, якщо ім'я файлу вказано.
ВАРІАНТИ
-h or --допомога
Показати текст довідки.
-- версія or --гарантія або --про
Показати інформацію про версію та ліцензію.
-v or -багатослівний
Роздрукуйте докладний вихід на стандартний вихід.
-d or --відлагоджувати
Друк налагоджувального виводу на стандартний вихід (автоматично встановлює докладний режим).
-q or --спокійно
Спокійно. немає стандартного виведення.
-o файл or --outfile файл
Міді вихід на файл. Інакше до a.out.mid
-c or --перевірте
Перевірте лише введення; Немає міді-виходу.
-u or --розгортання-петлі
Розгорніть усі повторювані блоки перед аналізом і збережіть розгорнутий вихідний код у a
новий файл (*.long.mg). За потреби слід встановити автоматично.
-U or --no-unroll-save
Не зберігайте розгорнуті джерела у файл.
-R or --без скидання
Не вставляйте подію "скинути всі контролери" на початку треків.
-t ударів в хвилину or -- темп ударів в хвилину
Встановіть темп ударів в хвилину ударів за хвилину, значення, яке переважає, встановлене у вхідному файлі.
-b кроки or -- кроки згину кроки
Встановіть кількість кроків на четвертну ноту для простого синтаксису згину.
-- небезпечно
Не використовуйте Safe.pm для запуску коду Perl %eval блоки
-s номер or --насіння номер
Скористайтесь номер як початкове значення для генератора випадкових чисел.
-S [масштаб [корінь]] or --шоу-масштаб [масштаб [корінь]]
Перелічіть нотатки в масштаб починаючи з корінь. Якщо корінь пропущено c4 використовується. Якщо масштаб is
опущено, відображається список підтримуваних шкал.
-I шлях or --включати шлях
додавати шлях включити шляхи. Можна вказати кілька разів або шлях може бути список
відокремлюються двокрапками або комами.
ВХІД МОВА
Зразок вихідного файлу для відтворення гами Е.
================почати файл=======================
# цей рядок є коментарем
@голова { # має бути рівно 1 розділ @head
# встановити тактовий розмір
$time_sig 4/4
# встановити темп у BPM
$tempo 120
} # кінець розділу @head
@тіло { # має бути рівно 1 розділ @body
# запустити музичний трек на каналі 1
# кілька треків можуть використовувати один канал
@канал 1 {
# встановити патч на електричний бас
$patch 34
# нотаток. див. нижче для пояснення.
/l4/e3 # чверть ноти е в третій октаві
f+ # f диез тієї ж октави тієї ж довжини
# використовуйте `-' для квартири
g+ ab # решта нотаток
c+4 d+ e # зміна октави на c
} # кінець доріжки
} # кінець розділу @body
======================== кінцевий файл=====================
Більше прикладів включено в каталог examples/ архіву.
У наступному, є обов’язковим параметром, а [ім’я] – необов’язковим параметром.
Примітки.
Формат нотатки: [/опції/]<ім'я>[+|-][октава]
Команда /опції/ розділ може містити наступне:
l[чисельник:]
Встановлює довжину нотатки (чисельник або один) розділений на знаменник. тобто. l4 = чверть
нота, l1 = ціла нота, l3:4 = нота 3/4 (3 чверті зав’язані). Великий регістр `L' можливо
замість цього використовується, щоб відрізнити його від '1'.
r
Встановлює кількість повторень нотатки. Наприклад
/l8r16 /
робить тривалість ноти 1/8 і повторює ноту 16 разів.
a
Встановлює ноту щодо швидкості (атаки)
d
Встановлює швидкість ноти (затухання)
z[+|-] [%]
Зміщує нотатку на номер клацання midi. Позитивні значення відтворюють ноту із запізненням і негативне
цінності грають це рано. Якщо номер після `%´ символ приймається у відсотках
поточної довжини ноти. Значення зсуву є НЕ успадковані наступними нотами.
Z[+|-] [%]
Як зазначено вище `z´, але використовується випадкове значення. Якщо номер є негативним або позитивним
(знак плюс вимагається), значення між нулем і номер використовується. Якщо знаку немає, а
значення між плюсом і мінусом номер використовується.
Опція зміщення не працюватиме з repeat note опція, але той самий ефект може бути
досягнуто за допомогою а % повторити блок
Ноти не можна зміщувати назад (тобто грати раніше), якщо їм не передує пауза. До
обійти це я додав $скоротити ключове слово, описане нижче. Дивись також $ unquantise.
ім'я це назва нотатки, тобто. [ag] вимагається.
+ гострий
- квартира.
октава є міді октава, тобто. [1-11]. Хоча більшість програмного забезпечення midi використовує 0 для найнижчого
октава, я використав 1 для узгодженості з міді-каналами та назвами інструментів, які
обидва рахуються від 1.
Якщо не вказано, довжина, октава, атака та загасання успадковуються від попереднього
Примітка.
У доріжці ударних замість назв нот можна використовувати псевдоніми. Наприклад, щоб отримати
відкрити привіт, замість `f+3"ви можете використовувати "hh_o'. Повний список див. у README.drums
псевдоніми.
Відпочиває.
Решта записується як примітка `r', з /опції/ те саме, що і для нотаток, але лише з
Використані параметри довжини та повторення. Значення довжини успадковується від ноти до паузи та віце
навпаки.
Бари.
Символ труби (`|') можна використовувати для позначення стовпчиків. Довжина брусків не перевіряється --
це лише для того, щоб зробити вихідні файли більш читабельними. Стрічки можна пронумерувати, додавши а
номер до символу труби. Вони можуть бути розділені символом підкреслення, але не пробілами.
Простий приклад панелі: | cdef | gabc
Приклади пронумерованих панелей: |1 cdef |2 gabc
|_1 cdef |_2 gabc
Консистенцію брусків можна перевірити за допомогою $bar_strict ключове слово в @голова
розділ. Це дає помилку або попередження, якщо всі треки не мають однакову кількість смуг і
пронумеровані смуги з'являються одночасно на кожній доріжці:
$bar_strict попереджати # Надрукуйте попередження про невідповідні смуги.
$bar_strict помилка # Вийдіть із повідомленням про помилку для невідповідних смуг.
Ключові слова вищого рівня.
@голова { вміст }
Має бути точно один @голова розділ. Нижче дивіться опис зміст.
@тіло { вміст }
Має бути точно один @тіло розділ. Нижче дивіться опис зміст.
Ключові слова в @голова .
$time_sig
Команда b значення має бути одним із 4, 8, 16, 32, 64.
$tempo
t – це темп у BPM.
обидві $time_sig та $tempo також дозволені в блоці @channel (описано нижче).
$title
Встановлює назву пісні назву. Якщо назву містить пробіли, він повинен бути всередині double
цитати.
$резолюція
Встановлює кількість клацань міді на чверть ноти n. За замовчуванням – 96.
Ключові слова в @тіло .
% визначити { примітки }
Визначте послідовність ноти, призначаючи його ім'я для відкликання в музичній доріжці. Визначений
послідовності використовуються, включаючи:
~[/transpose/]
у доріжці, щоб включити послідовність ім'я, транспонований за транспонувати півтони. Раніше
визначені послідовності можуть бути використані в подальшому % визначити блоків. наприклад:
% визначити a_riff { a3 a c4 d}
% визначити d_riff { d4 dfg }
% визначити main_riff { ~a_riff ~d_riff}
Хоча ми могли б досягти того ж результату, транспонувавши перший риф, щоб зробити
друге:
% визначити a_riff { a3 a c4 d}
% визначити main_riff { ~a_riff ~a_riff/ 5 / }
визначати блоки також можуть містити блоки повтору, блоки згинів і $volume/patch/reverb тощо.
@канал [ім'я] { вміст }
Почніть міді-трек на каналі номер, за бажанням встановивши назву інструмента ім'я. Якщо
ім'я містить пробіли, він має бути в подвійних лапках.
зміст може включати ноти, паузи, попередньо визначені послідовності та наступне
ключові слова:
$time_sig
Змінює тактовий розмір пісні (впливає на всі треки). The b значення має бути одним із
4, 8, 16, 32, 64.
$tempo
Змінює темп пісні (впливає на всі треки). t знаходиться в BPM.
$patch [[bank_LSB,]bank_MSB,]
Встановити номер патча для цього каналу номер or ім'я. Де номер становить від 1 до 128 і
ім'я є псевдонімом, визначеним у README.patches. За бажанням виберіть номер банку bank_MSB.
За бажанням виберіть номер банку LSB bank_LSB (використовується для зовнішніх міді-клавіатур). Кожне значення
має бути в діапазоні 1-128.
$банк [LSB,]
Виберіть номер банку MSB. За бажанням можна встановити значення LSB (використовується для зовнішнього midi
клавіатури) до ЛСБ. Обидва значення мають бути в діапазоні 1-128.
$length [n:]
Установити довжину ноти за замовчуванням. Значення вказано в тому ж форматі, що й у параметрах нотатки.
$скоротити
Скоротіть кожну ноту на номер клацання midi, щоб залишити місце для нотаток, які можуть бути зміщені назад.
$ unquantise [+|-] [%]
Застосуйте випадкове зміщення до кожної ноти. номер має те саме значення, що і для Z варіант нотатки
вище.
$октава
Встановити октаву за замовчуванням на номер
$обсяг
Установіть гучність треку на номер
$атака
Встановіть атаку нотатки на номер
$розпад
Встановіть затухання ноти на номер
$реверберація
Встановіть глибину реверберації на номер на поточному каналі.
$приспів
Встановіть глибину хору на номер на поточному каналі.
$пан
Встановіть значення панорамування номер. 0 – зліва 127 – справа.
Значення гучності, атаки, спаду, реверберації, хору та панорамування мають бути цілими числами від 0 до 127.
Їх також можна вказати як діапазон (наприклад, `8-64'), у цьому випадку випадкове значення в межах
використовується діапазон.
%pan_all { значення нотатки ... }
Встановлює значення панорамування для кожного наступного екземпляра увагу на поточній доріжці. Це
в основному призначений для панорамування ударної установки, але може бути використаний на іншій доріжці. значення може бути
ціле число або діапазон (наприклад, `8-64'). Кілька увагу значення допускаються пари. Якщо дві ноти
з різними значеннями pan_all відтворюються одночасно, що може статися.
Щоб впливати на кожну нотатку в каналі з діапазоном, використовуйте `*' або `будь-який'для увагу,
/r4/метод повторення нотаток не працюватиме з цією опцією, але той же ефект
можна досягти за допомогою блоку повтору.
$marker
Додає подію маркера за допомогою текст як це зміст. Якщо текст містить пробіли, які необхідно вводити в лапки
використання символів подвійних лапок.
% повторити { примітки }
Повторювати ноти номер раз. ноти може включати ноти, паузи, попередньо визначені послідовності та інше
% повторити блоки
%згин { подія ... }
Play увагу і переміщайте колесо кроку так, як описано в множинних подіяs, які мають
такий формат:
[n:] <+|->
де n та d вкажіть час від початку ноти або від попередньої події, в
той самий формат, що й довжина нот, і значення - це сума, на яку потрібно зігнути купюру (плюс
або знак мінус обов’язковий). З діапазоном колеса висоти за замовчуванням +/- 2 півтони значення
з 32 дорівнює одному півтону. Зауважте, що величина вигину відносна. Максимум
кумулятивний сума вигину плюс-мінус 64.
Наприклад, наступне:
%bend a3 { 4+32 4-32 2+0 }
Відтворює ноту a3 для 1/4 ноти, згинає цілий тон на 1/4, потім повертається до a3 і
зберігається для 1/2 ноти.
$bend_range
Змінює діапазон коліщатка на +/- номер. Це встановлює максимальний вигин вгору і вниз, тому якщо
він встановлений на 4, значення згину 64 згинеться на 4 півтони вгору, а -64 згинеться на 4
півтони. Діапазон за замовчуванням для більшості пристроїв midi становить 2 півтони.
$pitch
Встановіть значення колеса кроку Val. Це можна використовувати разом з окремою приміткою
і занотуйте події (див. нижче в розділі "одночасні нотатки"), щоб створити складний вигин
ефектів. На відміну від %згин синтаксис вище, це робиться НЕ скиньте колесо кроку в нейтральне положення
позиція (64)
Простіші згини висоти можна створити за допомогою цього синтаксису:
/l8/e4=>g4=>e4
Це згинається від e4 до g4 і назад до e4 лінійними кроками протягом тривалості
восьма нота. За замовчуванням існує 16 кроків на кожну чверть ноти (8 кроків у цьому
приклад), але можна встановити інше значення за допомогою перемикача командного рядка `-b'. Будь-яке число
нот можна використовувати, але перша повинна мати значення довжини, і кожна з них повинна мати значення
мають значення октави.
% вибрати [час] { ваговий елемент ... }
де час - це значення довжини у форматі [n:] те саме, що використовується в параметрах довжини,
з пропущеним 'l'.
If час не вказано:
Вибери один пункт зі списку, де кожен пункт може бути нота, відпочинок або попередньо визначений риф, і
кожен предмет має a зважування який визначає, наскільки ймовірно, що він буде обраний. Наприклад:
%вибрати { 2 a3 4 c5 3 e4 1 g3 }
дає a3 шанс 20%, c5 - 40% ; e4 - 30% і g3 - 10% Кожен елемент повинен мають зважування.
Дивіться також ваги нижче.
if час зазначено:
Виберіть кілька пунктs зі списку до довжини час. Якщо всі пунктs занадто довгі
щоб закінчити риф точно на час, залишок заповнюється залишком. Коли використовується вибір
таким чином, кожна нота або пауза повинні мати значення довжини, а будь-які попередньо визначені використані рифи повинні мати значення
мають фіксовану довжину (тобто перша нота повинна мати значення довжини), а також довжину
весь риф повинен бути вказаний у блоці вибору в тому ж форматі, що й для нот. для
приклад:
%define riff_1 { /l2/a3 /l4/b c4 } # риф має довжину 1 такт
% вибрати 4:1 { # виберіть 4 такти
1 /l8/d4 3 /l8/e4 2 /l4/g4 1 /l1/~riff_1
}
If час is 0 or - потім midge шукає блок у формі:
ритм { n[:d] ... }
який приймається як ряд значень довжини нот, для яких висоту звуку вибирають із
список. Інші токени передаються, тому ви можете вставляти певні ноти, заздалегідь визначені рифи
або відпочиває. Будь-який маркер у блоці, що починається з символу підкреслення, буде переданий через з
підкреслення видалено. Для прикладу див. examples/tutorial/choose_scale.mg.
Інший спосіб вказати список нотаток/зважень – за допомогою масштаб ключове слово:
масштаб незначний /l8/g4-6 [ вага ... ]
Це вибирає гамму соль мінор від 4-ї до 6-ї октав (тобто від g4 до g6). Значення довжини
не потрібно, якщо ви використовуєте ритм-блок. Якщо -6 опускається одна октава є
використаний
Блок ваги визначає зважування нот у порядку. Якщо пропущено, всі коефіцієнти ваги є
рівні. Щоб додати нотатку, використовуйте зважування 0, але є повинен бути вагою для кожної ноти
якщо блок взагалі присутній.
Команда -S Перемикач можна використовувати для відображення нот у гамі або списку підтримуваних гамм.
%ланцюг {
почати
примітка 1 [ вага примітка ... ]
...
ритм [ довжина ваги ... ] or ритм { довжина ... } }
Визначте структуру "ланцюжка", де для кожної нотатки є зважений список нотаток, які можуть
слідувати йому. Початкова точка вибирається випадковим чином з усіх використаних нотаток або вказується за допомогою
старт ключове слово, а потім наступні нотатки вибираються з відповідного списку до а
Загальна довжина час.
Команда ритм ключове слово має дві форми: використання квадратних дужок `[]', зважений список приміток
можуть бути визначені довжини, які будуть вибрані випадковим чином. Використовуючи дужки `{}', список
Можна визначити значення довжини, які будуть використовуватися в послідовності (повторюються за необхідності). До
програйте ритм-блок лише один раз, встановіть час до 0 or -. В даному випадку ритм
блок аналізується так само, як описано вище для % вибрати з встановленим на нуль часом. The
ключове слово times можна використовувати як синонім для ритм.
Команда старт ключове слово визначає нотатку, з якої слід почати під час використання ланцюжка. Якщо старт is
пропущено, початкова нота вибирається випадковим чином.
Інший спосіб визначити ноти в а ланцюг блок полягає у використанні однієї з вбудованих ваг. Тоді
вагові коефіцієнти задаються у вигляді матриці з рядком для кожної нотатки «від» (один
для кожної ноти гами) і стовпчик для кожної ноти «до». Приклад цієї форми може
можна знайти у файлі examples/tutorial/chain_scale.mg
Щоб використовувати блоки select або chain, файл повинен бути скомпільований з опцією unroll-loops
(він встановлюється автоматично, коли знайдено блок вибору або ланцюга). Ця опція зберігає
розгорнути вихідний код у новому файлі, тож якщо він дає особливо хороший результат, у вас є файл
точна копія, до якої ви можете вносити інші зміни, не втрачаючи створений трек.
Зауважте, що блоки select і chain не можуть бути всередині %defin або всередині іншого select або
ланцюговий блок.
%eval { Perl код }
Запустіть блок коду Perl і замініть блок %eval значенням, поверненим із Perl
Код.
%eval - {Код Perl}
Запустіть блок коду Perl, не читаючи повернуто значення.
Код Perl запускається за допомогою модуля Safe, якщо він присутній, з :base_core, :base_math і
:base_mem дозволено. Якщо Safe.pm недоступний або потрібні додаткові дозволи, --unsafe
Параметр змушує midge запускати блоки %eval у власному процесі perl.
Ключові слова дозволені в будь-якій точці джерела.
%включати
Включає вміст файл ніби вони були написані в той момент джерела
файлу. Must бути на власному рядку у вихідному файлі.
Одночасні нотатки.
Найбільш гнучкий спосіб відтворювати ноти одночасно - це використовувати окремі доріжки (ви можете використовувати
той самий канал/патч), або за допомогою окремих подій увімкнення та виключення приміток (див. нижче).
Однак є більш простий спосіб з деякими обмеженнями. Наприклад: ( c e g ) буде грати
ноти c, e і g одночасно, утворюючи акорд C. Довжина всіх одночасних
Notes такий самий, як і перший (визначається його власним значенням довжини або значенням
успадковано від попередньої декларації ноти, відпочинку або $length.
Один із способів використовувати це для створення акордів:
% визначити незначний { ( c e- g ) } # визначити мінор як до-мінор
% визначити основний { ( c e g ) } # визначити мажор як до-мажор
% визначити 7th { ( c e g b- ) } # визначте 7-й як c-7-й
Тоді ви можете використовувати у своїх музичних композиціях:
$length 4 $octave 4 # встановити довжину та октаву за замовчуванням
~майор # грати до-мажор
~мінор/9/ # грати ля-мінор
~7/5/ # грайте f-7th
Щоб акорди звучали гримно, в струм можна використовувати ключове слово:
$струм 5
Це встановлює інтервал між кожною нотою наступних акордів на 5 клацань міді.
Щоб створити складні шаблони з одночасних нот на одній доріжці, розділіть ноту на та ноту
можна використовувати події off. Вони вказуються так само, як і звичайні нотатки, але з a +
до примітки на і а - до примітки. Параметри довжини та повторення не можуть
бути використаним. Довжина нот, введених таким чином, контролюється за допомогою пауз або іншого
нотатки між подіями увімкнення та виключення нотатки. наприклад:
+c4 /l4/r +е +г /л2/р -c -e -g
грає і утримує c4, після 1/4 ноти грає і утримує e4 і після ще однієї 1/4 ноти грає
і утримує g4, відпускаючи всі три після наступної 1/2 ноти.
Туплети.
Хоча можна створити туплети, вибравши відповідну довжину ноти, вони також можуть
бути написано більш традиційним способом, використовуючи %туплет ключове слово:
%туплет n:d { примітки... }
відіграє n нотатки в просторі d. ноти може містити все, що дозволено в блоці @channel.
Потім значення ноти автоматично змінюються, щоб створити туплет. Наприклад:
%туплет 5:3 { /l8/e4 fgfe }
грає п'ять восьмих нот на інтервалі трьох. Туплети можуть бути вкладені на будь-яку глибину. Побачити
examples/tutorial/tuplet.mg для прикладу. Мідж робить НЕ переконайтеся, що тривалість музики
всередині блоку туплетів правильний.
Ключі.
Якщо ви хочете імпортувати свій midi-файл у редактор нотацій, вам потрібно буде встановити ключ.
Це робиться за допомогою:
$key [+|-][м]
де ім'я є ag, +|- гострі та плоскі, а m незначне. Якщо весь шматок залишиться всередині
той самий ключ ви можете встановити в розділі @head, інакше він може з’явитися в будь-якому місці a
@channel, і вплине на всі треки.
Якщо ви звикли до звичайних нотних записів і хочете, щоб ноти були різкими або плоскими автоматично
залежно від ключа, використовуйте $key_strict ключове слово. Щоб отримати природну нотку, використовуйте =
знак, наприклад, у G, f= грає натурально. The $key_strict ключове слово можна використовувати тільки в
Розділ @head. Ключ все ще можна змінити за допомогою звичайного $key keyword.
$ctrl
Встановити номер контролера Num до Val.
$rpn [число-msb,] [,val-lsb]
Встановіть контролер rpn Num до Val
$nrpn [число-msb,] [,val-lsb]
Встановіть контролер nrpn Num до Val
% дослівно { byteval... }
Вставте рядок байтів у файл midi. Кожен byteval може бути десятковим (0-255)
або шістнадцятковий (0x00-0xFF). Ключове слово bytes можна використовувати замість дослівно.
друк текст до стандартного виведення. Якщо текст містить пробіли, які потрібно вводити в лапки з подвійними лапками (").
Використовуйте midge онлайн за допомогою служб onworks.net