Главная » Программирование звука » Синхронизация MIDI

0

Первый  шаг  при  проигрывании  файла  MIDI   преобразовать  величины  дельтавремени, измеренной в тиках, в нечто более удобное. Файлы MIDI используют два метода  для  определения  длительности  тика.  Если  код  формата  времени  в  заголовочной  области  отрицательный,  значит,  в  файле  MIDI  указана  скорость  следования  тиков  с  использованием  соглашений  SMPTE.  Если  код  формата  времени положительный,  то  для  указания  скорости  следования  тиков  используется  музыкальный темп.

Листинг 22.12. Вычисление стандартного количества отсчетов на тик

if (_timeFormat < 0) {             // Формат   времени  SMPTE.

} else {                           // Музыкальный формат  времени.

}

Синхронизация на основе SMPTE

Общество   инженеров   кино   и   телевидения   (Society   of   Motion   Picture   and Television  Engineers,  SMPTE)  использует  стандартный  метод  точного  определения времени.  По  этому  методу  подсчитываются  прошедшие  часы,  минуты,  секунды и  кадры.  Кадр   это  длительность  одного  кадра  кинофильма  или  телевизионного изображения, он варьируется в диапазоне от 1/24 до 1/30 секунды. Данный метод

широко  используется  видео и  звукоинженерами  и  является  важным  инструмен-

том точной синхронизации при воспроизведении видеои аудиозаписей.

Для  применения  синхронизации  SMPTE  нам  сначала  необходимо  определить используемое  количество  кадров  в  секунду.  После  этого  время  SMPTE  выражается  в  виде четырех  значений,  обычно  записываемых  в  форме  01:23:43:21 (1  час,

23 минуты, 43 секунды, 21 кадр), определяющих прошедшее время.

Существуют  три  основных  формата  SMPTE:  24  кадра  в  секунду   используется  кинооборудованием,  25  кадров  в  секунду   телевизионным  оборудованием PAL и SECAM (в Европе и Азии) и 30 кадров в секунду телевизионным чернобелым оборудованием NTSC (в Северной Америке и Японии). Осталось еще цветное  телевидение  NTSC.  Когда  Национальный  комитет  по  телевизионным  системам   (National   Television   Systems   Committee,   NTSC)   принял   стандарт   цветного телевидения,  по  техническим  причинам  пришлось  слегка  изменить  скорость  следования  кадров.  Было  выбрано  значение  29,97  кадров  в  секунду.  Так  как  это  не целое  значение,  мы  не  сможем  представить  время  в  виде  «час:минута:секунда: кадр»  до  тех  пор,  пока не  будут  предприняты  какие-либо  корректировочные  действия.   SMPTE   стандартизовала   метод   корректировки   для   синхронизации   цветного  NTSC.  B  каждой  секунде   30  кадров,  но  первая  секунда  минуты  содержит всего 28 кадров, а первая секунда каждой десятой минуты снова содержит 30 кадров. B результате за 1:03:58:29 сразу следует 1:03:59:00, но за значением 1:03:59:29 сразу  же  следует  1:04:00:02  (выкинуть  два  кадра  в  начале  каждой  минуты).  Этот метод подсчета времени называют форматом с отбрасыванием кадров. (Технически  длина  одного  кадра  всегда  одинакова.  Формат  времени  с  отбрасыванием  кадров  SMPTE  изменяет  длину  секунд  и  минут  так,  чтобы  в  среднем  время  SMPTE соответствовало  «времени  на  настенных  часах»,  поэтому  его  еще  называют  форматом с компенсацией кадров.)

Синхронизация SMPTE в файле MIDI задается путем размещения соответствующего 16-битного кода формата времени в заголовке. Старшие 8 бит представляют отрицательное число (чтобы показать, что используются соглашения SMPTE). Точное значение определяет формат; общепринято, что 29 обозначает формат с отбрасыванием кадров. Младшие 8 бит определяют количество тиков на кадр.

Листинг 22.13. Вычисление стандартного количества отсчетов на тик с использованием соглашения SMPTE

int frameCode = (-_timeFormat) >> 8; float framesPerSecond; switch(frameCode) {

case 24: framesPerSecond = 24.0; break;

case 25: framesPerSecond = 25.0; break;

case 29: framesPerSecond = 29.97F; break;    // "C отбрасыванием

// кадров".

case 30: framesPerSecond = 30.0; break;

default:

cerr << "Illegal SMPTE frame code.\n";

// Недопустимый  код

// кадра SMPTE.

framesPerSecond = 30.0;

break;

}

int ticksPerFrame = _timeFormat & 0xFF;

samplesPerTick =

SamplingRate()               // Отсчетов в секунду.

/ framesPerSecond

/ ticksPerFrame;

Синхронизация, основаннаяна музыкальном темпе

B  то  время  как  синхронизация  SMPTE  традиционна  для  кино  и  телевидения, большинство  музыкантов  предпочитают  использовать  темп,  обычно  измеряемый в yдapax в минуту (beats per minute, bpm). Удар часто соответствует четвертной ноте. Темп обычно варьируется от 80 до 220 bpm; значение MIDI по умолчанию 120 bpm.

При  использовании  этого  формата  в  заголовке  MIDI  задается  положительное значение, определяющее количество тиков на удар.

Листинг 22.14. Вычисление стандартного количества отсчетов на тик с использованием музыкальных соглашений

samplesPerTick =

60.0 / 120

//

По  умолчанию  120 четвертей  в минуту.

* SamplingRate()

//

Отсчетов в секунду.

/ _timeFormat;

//

Тиков  на   четверть.

Преимущество  этого  формата  для  музыкантов  заключается  в  том,  что  темп можно  изменить  изнутри  произведения,  используя  метасобытия  задания  темпа. Данные  для  метасобытия  задания  темпа  представляют  собой  З-байтное  число, определяющее количество микросекунд (миллионных долей секунды) на удар.

Листинг 22.15. Обработка события задания темпа

if (  (pEvent->status == 0xFF)         // Метасобытие.

&& (pEvent->data[0] == 0x51))  {    // Метасобытие  темпа.

// Аргумент  микросекунд

// на   удар.

float beatsPerSecond = 1.0E6

/ BytesToIntMsb(pEvent->metaData->data,3);

if (_timeFormat > 0) {               // "Музыкальное"

// определение времени.

samplesPerTick =

SamplingRate()                // Отсчетов в секунду.

/ beatsPerSecond

/ _timeFormat;                // Тиков  на   удар.

}

}

Одна  из  самых  обескураживающих  особенностей  синхронизации  MIDI   боль-

шое количество различных терминов:

тик MIDI. Значения дельты времени внутри стандартного файла MIDI за-

даются в тиках;

?  тактовые импульсы MIDI. Тактовый импульс MIDI равен 1/24 четвертной

ноты MIDI;

?  четвертная  нота  MIDI.  Длительность  четвертной  ноты  MIDI  (в  миллисе-

кундах)  определяется  метасобытием  задания  темпа  (см.  выше).  Заголовок стандартного  файла  MIDI  устанавливает  связь  между  четвертными  нотами MIDI и тиками MIDI;

?  музыкальная четвертная нота. Четвертная нота MIDI это простое согла-

шение по синхронизации; обычно она соответствует четвертной ноте, записываемой в нотах, но не всегда. Событие задания музыкального размера (см. выше) определяет истинную взаимосвязь;

?  темп. Музыкальный темп, по традиции, измеряется в ударах в минуту.

Обычно удар соответствует музыкальной четвертной ноте;

?  метроном. Соответствующая скорость метронома для произведения опре-

деляется событием задания музыкального размера (см. выше).

Стандарт General MIDI

Как  правило,  не  стоит  ожидать,  что  различные  синтезаторы  будут  одинаково реагировать  на  команды.  Это  позволяет  поставщикам  различать  свои  инструменты  (например,  у  кого-нибудь  из  производителей  синтезатор  может  иметь  характерный звук фортепиано), но вызывает у музыкантов некоторое разочарование.

General  MIDI   попытка  решить  основные  проблемы  совместимости.  Продукты   MIDI   (программные   и   аппаратные),   производители   которых   заявляют, что  они  совместимы  с  General  MIDI,  должны  удовлетворять  определенным  требованиям:

?  каналы с 1-го по 9-й и с 11-го по 16-й являются мелодическими  каналами General MIDI. Эти каналы должны реагировать на событие смены  программы, выбирая один из 128 инструментов, приведенных в табл. 22.5;

?  канал 10-й (каналритма) должен поддерживать звучание 47 инструментов,

заданных в табл. 22.6; все эти звуки являются результатом смены програм-

мы на инструмент 1;

?  продукт  должен  поддерживать  одновременное  воспроизведение  16  нот  на

мелодических каналах и 8 нот на канале ритма;

?  продукты  General  MIDI  должны  обеспечивать  ряд  других  возможностей,

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

Обратите внимание на то, что мелодический и ритмический каналы используют абсолютно разные наборы инструментов. Чтобы установить инструмент мелодического канала, вы посылаете событие смены программы MIDI для выбора инструмента, а затем событие, активирующее ноту, и событие, дезактивирующее ноту, для проигрывания нот этого инструмента. Однако такой подход бессмыслен, если речь идет об ударных инструментах, которые имеют всего одну ноту. Для воспроизведения

Таблица 22.5. Мелодические инструменты General MIDI

Фортепьяно                                                            Язычковые музыкальные инструменты

1. Акустический рояль                                            65. Сопрано-саксофон

2. Яркое акустическое фортепьяно                       66. Альт-саксофон

3. Электрический рояль                                          67. Тенор-саксофон

4. Расстроенное фортепьяно                                 68. Баритон-саксофон

5. Электропиано 1                                                   69. Гобой

6. Электропиано 2                                                    70. Английский рожок

7. Клавесин                                                              71. Фагот

8. Клавинет                                                               72. Кларнет

Хроматические ударные                                      Трубы

9. Челеста                                                                73. Пикколо

10. Металлофон                                                      74. Флейта

11. Шарманка                                                           75. Блок-флейта

12. Виброфон                                                           76. Пан-флейта

13. Маримба                                                             77. Бутылки

14. Ксилофон                                                           78. Shakuhachi

15. Трубчатые колокольчики                                  79. Свисток

16. Тарелки                                                               80. Окарина

Органы                                                                     Synth Lead (синтезатор соло)

17. Педальный орган                                               81. Lead 1 (угольник)

18. Перкуссионный орган                                        82. Lead 2 (зуб пилы)

19. Рок-орган                                                            83. Lead 3 (каллиопа)

20. Церковный орган                                               84. Lead 4 (chiff)

21. Язычковый орган                                               85. Lead 5 (charang)

22. Аккордеон                                                           86. Lead 6 (голос)

23. Гармоника                                                          87. Lead 7 (квинта)

24. Танго аккордеон                                                 88. Lead 8 (бас+lead)

Гитары                                                                     Synth Pad

25. Акустическая гитара (нейлон)                           89. Pad 1 (новый век)

26. Акустическая гитара (сталь)                             90. Pad 2 (теплый)

27. Электрогитара (джаз)                                        91. Pad 3 (polysynth)

28. Электрогитара (чистая)                                     92. Pad 4 (хор)

29. Электрогитара (приглушенная)                        93. Pad 5 (искривленный)

30. Гитара с перегрузкой                                         94. Pad 6. (металлический)

31. Гитара «металл»                                               95. Pad 7 (астро)

32. Гармоники гитары                                              96. Pad 8 (качающийся тон)

Таблица 22.5. Мелодические инструменты General MIDI (Окончание)

Басовые                                                                   Synth эффекты

33. Акустичесий бас                                                  97. Эффект 1 (дождь)

34. Электрический бас (палец)                               98. Эффект 2 (фонограмма)

35. Электрический бас (щипок)                               99. Эффект 3 (кристалл)

36. Безладовый бас                                                  100. Эффект 4 (атмосфера)

37. Шлепающий бас 1                                               101. Эффект 5 (прозрачность)

38. Шлепающий бас 2                                               102. Эффект 6 (гоблины)

39. Synth бас 1                                                           103. Эффект 7 (эхо)

40. Synth бас 2                                                           104. Эффект 8 (научная фантастика)

Струнные                                                                 Национальные

41. Скрипка                                                                105. Ситар

42. Альт                                                                      106. Банджо

43. Виолончель                                                         107. Самисен

44. Контрабас                                                            108. Кото

45. Струнные тремоло                                              109. Калимба

46. Струнные пиццикато                                           110. Волынка

47. Оркестровая арфа                                              111. Деревенская скрипка

48. Литавры                                                               112. Санаи

Ансамбль                                                                 Ударные

49. Струнный ансамбль 1                                         113. Звенящие колокольчики

50. Струнный ансамбль 2                                         114. Agogo

51. SynthStrings 1                                                      115. Стальные барабаны

52. SynthStrings 2                                                      116. Деревянный брусок

53. Хоровое аханье                                                   117. Барабан taiko

54. Голосовые вздохи                                               118. Мелодический том

55. Synth голос                                                          119. Synth барабан

56. Оркестровый удар                                              120. Обратные тарелки

Духовые                                                                   Звуковые эффекты

57. Труба                                                                   121. Шум от перебора струн гитары

58. Тромбон                                                               122. Шум дыхания

59. Туба                                                                     123. Шум прибоя

60. Труба с сурдинкой                                              124. Щебет птиц

61. Французский рожок                                             125. Звонок телефона

62. Духовая секция                                                   126. Шум вертолета

63. Synth Brass 1                                                       127. Аплодисменты

64. SynthBrass 2                                                        128. Выстрел

Таблица 22.6. Ритмические инструменты General MIDI

Нота Описание                          Нота    Описание                               Нота Описание

35

Акустический бас-барабан

51

Скачущие тарелки 1

67

Высокий agogo

36

Бас-барабан 1

52

Китайские тарелки

68

Низкий agogo

37

Боковая палочка

53

Ездовой колокольчик

69

Кабаса

38

Акустический малый барабан

54

Тамбурин

70

Маракас

39

Хлопок в ладоши

55

Брызг тарелок

71

Короткий свист

40

Электрический малый барабан

56

Колокольчик

на шее коровы

72

Длинный свист

41

Низкий

напольный там-там

57

Грохот тарелок 2

73

Короткий guiro

42

Закрытый hi-hat

58

Vibraslap

74

Длинный guiro

43

Высокий

напольный там-там

59

Скачущие тарелки 2

75

Ключ

44

Педальный hi-hat

60

Высокий bongo

76

Высокая колода

45

Низкий там-там

61

Низкий bongo

77

Низкая колода

46

Открытый hi-hat

62

Приглушенная верхняя конга

78

Приглушенная cuica

47

Средненизкий там-там

63

Открытая высокая конга

79

Открытая cuica

48

Средневысокий там-там

64

Низкая конга

80

Приглушенный треугольник

49

Грохот тарелок 1

65

Высокая timbale

81

Открытый треугольник

50

Высокий том

66

Низкая timbale

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

ческого канала и воспроизвести соответствующую ноту.

Заинтересованность   в   дальнейшей   стандартизации   требований   General   MIDI не  исчезает.  General  MIDI  называет  всего  175  стандартных  инструментов;  попытка  задания  более  точной  классификации  не  делается.  Кроме  того,  этот  стандарт не  определяет,  каким  образом  инструменты  должны  обрабатывать  ноту  или  информацию  о  скорости  канала.  Например,  один  синтезатор  может  интерпретировать  скорость  канала  линейно,  другой   логарифмически.  Тем  не  менее,  MMA выпустила   документ   General   MIDI   Developer   Guidelines   and   Survey   (Основные руководящие  принципы  и  обзоры  для  разработчика  MIDI),  в  котором  проводится  исследование  общей  практики  применения  и  дается  множество  рекомендаций всем заинтересованным в реализации спецификации General MIDI.

Загружаемые семплы

Новый  стандарт  Downloadable  Samples  Standard  Level  1.0  (Стандарт  уровня  1.0 на  семплы  с  возможностью  загрузки,  DLS-1)  определяет  способ  хранения  звучания  инструментов  в  файле.  Этот  файл,  называемый  файлом  DLS,  хранит  один  или несколько семплов наряду с обширной информацией, определяющей, как именно

должны воспроизводиться эти образцы. Данный формат файла базируется на формате WAVE.

Одна   часть  стандарта   DLS-1   заслуживает   отдельного   внимания.   Файловый формат  DLS  определяет  множество  параметров,  детализирующих  способ  надлежащего  воспроизведения  семпла.  Тем  самым  неявно  определяется  точная  модель воспроизведения   звучания   семпла.   Основная   идея   эквивалентна   той,   которую я использовал для класса SampledInstrument в предыдущей главе, однако в модели DLS введены некоторые усовершенствования:

?  диапазон панорамирования для стерео (влево-вправо) позиционирования выходного сигнала;

?  низкочастотный генератор, обеспечивающий управление вибрато и тре-

моло;

?  генератор огибающей, изменяющий амплитуду во времени;

?  второй генератор огибающей, изменяющий высоту тона во времени;

?  поддержка элементов управления точной настройкой, поддержкой, измене-

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

Источник: Кинтцель Т.  Руководство программиста по работе со звуком = A Programmer’s Guide to Sound: Пер. с англ. М.: ДМК Пресс, 2000. 432 с, ил. (Серия «Для программистов»).

По теме:

  • Комментарии