Почему MIDI предлагает 127 нот

Являются ли 127 значений нот в MIDI музыкально значимыми (определенное количество октав или что-то в этом роде)? или он был установлен на 127 из-за двоичного формата файла, IE для вычислительных целей?


person Matt    schedule 24.02.2011    source источник


Ответы (6)


127 = 27 - 1

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

person Jonathan Grynspan    schedule 24.02.2011
comment
Спасибо за ответ - я знаком с двоичным значением, мне только что кто-то сказал, что оно было установлено на 128 по какой-то причине, связанной со звуком, но я был уверен, что это действительно просто компьютерное соображение... так что вы Вы подтверждаете, что это было решение, основанное на вычислительной логистике, а не на звуке, например, на определенном количестве октав или каких-либо гармонических целях? - person Matt; 24.02.2011
comment
Ну, нота 127 в MIDI составляет около 12,5 кГц. Это очень высокий звук, и большинству ушей он показался бы пронзительным визгом, если бы его вообще можно было услышать (многие взрослые не слышат шумы выше 10 кГц). на низком уровне было бы невозможно воспроизвести на большинстве потребительских аудиоаппаратур. - person Jonathan Grynspan; 24.02.2011
comment
Разве это не так, независимо от того, сколько битов было использовано? Если бы использовалось 8 бит и у нас было бы 256 различных значений, то разве 256 по-прежнему не отображались бы на 21 кГц? То есть, если бы у нас было 8 бит, разве MIDI не удвоил бы плотность нот, а не покрыл бы больший частотный диапазон? - person Matt; 24.02.2011
comment
Нет, потому что ноты в западной нотации имеют определенные частоты. То есть, средний C — это ровно 261,626 Гц, средний C# — это точно 277,183 Гц и так далее. G9, самая высокая MIDI-нота, всегда имеет частоту 12,544 кГц. Интерполяция дополнительных нот не имеет смысла, потому что такие ноты не используются в западной музыке. Такие ноты существуют, но они не имеют отношения к MIDI. - person Jonathan Grynspan; 24.02.2011
comment
Ах да, это проблема. Итак, возвращаясь к первоначальному рассмотрению количества битов, хорошо ли получилось, что 7 битов предлагают набор нот, соответствующий западной гармонии? или это было сознательное соображение, которое фактически привело к решению определить протокол с точки зрения 7 битов для значений нот (в отличие, скажем, от 8 битов или 6 битов и т. д.)? - person Matt; 24.02.2011
comment
Наверное, и то, и другое. История MIDI длинна и извилиста. Формат довольно старый и восходит к временам, когда каждый байт памяти имел значение. - person Jonathan Grynspan; 24.02.2011
comment
На самом деле значения высоты тона и частоты MIDI не имеют абсолютно никакого отношения друг к другу. Синтезатор может воспроизводить любые частоты для заданного значения высоты тона. Кроме того, большинство взрослых могут слышать целую октаву выше 10 кГц... вплоть до 20 кГц. Обычно, хотя и не так просто, только с тонами. Когда вы становитесь старше, да, эти частоты спадают. - person Brad; 25.02.2011
comment
Я сказал многие взрослые. Только в США миллионы людей с нарушениями слуха. - person Jonathan Grynspan; 25.02.2011
comment
Конечно, есть инструменты, которые не следуют общему шаблону распределения нот (на ум приходят ударные инструменты), но я говорил в общем случае — любой мелодический MIDI-инструмент будет иметь ноты, расположенные по порядку, и из-за логарифмической шкале музыки, у них закончатся слышимые ноты на обоих концах после такого количества. - person Jonathan Grynspan; 26.02.2011
comment
MIDI передается по медленным каналам на устройства с небольшим мозгом. Каждый байт имеет и всегда будет иметь значение! - person XTL; 28.12.2011
comment
В то время я не отрицал этот ответ, а фактически проголосовал за него, но не могу понять, почему. Вы даже не упомянули байт состояния. Возможно, вы захотите взглянуть на ответ @Brad ниже и, возможно, выкопаете из него несколько фраз. Этот ответ в его нынешнем виде, хотя и правильный, ничего не объясняет. - person Dan Rosenstark; 24.06.2012
comment
@Yar: Я прямо отвечал на заданный вопрос. Никто ничего не спрашивал о байтах состояния. :) - person Jonathan Grynspan; 24.06.2012

В протоколе MIDI есть байты состояния (подумайте о командах, таких как note-on или note-off) и есть байты данных (подумайте о параметрах, таких как значение высоты тона и скорость). Способ определить разницу между ними - по первому биту. Если этот первый бит равен 1, то это байт состояния. Если первый бит равен 0, то это байт данных. Это оставляет только 7 битов доступными для остальной части значения байта состояния или данных.

Итак, чтобы коротко ответить на ваш вопрос, это больше связано со спецификацией протокола, но так получилось, что он хорошо соответствует большому количеству доступных значений высоты тона.

Теперь эти значения высоты тона не соответствуют конкретным высотам тона. Да, это правда, что обычно значение высоты тона 60 даст вам C4 или среднее C. Большинство синтезаторов работают таким образом, но, конечно, не все. Это даже не требование, чтобы синтезатор использовал значение высоты тона для высоты тона! MIDI не имеет значения... это просто протокол. Вам может быть интересно, как работают альтернативные настройки... они работают просто отлично. Синтезатор должен воспроизвести правильную высоту звука для этих альтернативных настроек. MIDI просто обеспечивает выбор из 128 различных значений для отправки.

Кроме того, если вам интересно, почему так важно, чтобы этот первый бит обозначал, что представляют собой данные... Существуют системные сообщения в реальном времени, которые могут быть вставлены в середине какой-либо другой команды. Это такие вещи, как часы синхронизации, которые часто используются, среди прочего, для синхронизации LFO.

Подробнее о типах MIDI-сообщений можно прочитать здесь: http://www.midi.org/techspecs/midimessages.php

person Brad    schedule 25.02.2011
comment
+1 Я мог бы вытатуировать этот первый абзац на тыльной стороне моей руки :) ... По поводу высоты тона: я просто предположил, но я думаю, что это НЕ совпадение, что вы можете уместить 10+ октав 12 тонов в 0-127 . - person Dan Rosenstark; 11.02.2012

Я думаю, что вы упускаете из виду, что MIDI был создан в начале 1980-х не для работы на персональных компьютерах, а для работы на музыкальных инструментах с крайне ограниченными возможностями обработки и хранения. Хранение 127 значений тогда казалось ГИГАНТСКИМ, особенно когда самая большая клавиатура обычно имеет всего 88 клавиш, а большинство электронных инструментов — только 48. Если вы думаете, что MIDI делает что-то странным образом, вполне вероятно, что это связано с его юрским наследием.

Да, это правда, что обычно значение высоты тона 60 дает вам C4 или среднее C. Большинство синтезаторов работают таким образом, но, конечно, не все.

Да... всегда были разногласия по поводу того, где в MIDI находится середина C. На клавиатурах Yamaha это C3, на клавиатурах Roland — C4. Yamaha поступила так, а Roland — иначе.

Теперь эти значения высоты тона не соответствуют конкретным высотам тона.

Не изначально. Однако в стандарте «General MIDI» A = 440, что является стандартной настройкой. General MIDI также описывает, какой патч является фортепиано, какой — гитарой и т. д., так что MIDI-файлы становятся переносимыми между мультитембральными источниками звука.

person Hamranhansenhansen    schedule 16.07.2011

Простой КПД.

В качестве последовательного протокола MIDI был разработан на основе простых последовательных микросхем того времени, которые принимали 8 битов данных и передавали их в виде потока с одного отдельного вывода последовательных данных с установленной скоростью. В мире MIDI это было 31 250 Гц. Он добавил стоповые и стартовые биты, чтобы все данные могли передаваться по одному проводу. Он был разработан, чтобы быть дешевым и простым, и простота была распространена на формат данных.

Старший бит из 8 битов данных использовался для обозначения того, является ли байт данных командой или данными. Итак, чтобы послать ноту Middle C ON на канал 1 со скоростью 56, байты команды отправляются первыми, и команда для Note on была старшими 4 битами этого командного бита 1001. Обратите внимание на 1 в старшем бите, это было за которым следует идентификатор канала для канала 1 0000 (компьютеры предпочитают начинать счет с 0)

10010000 or 128 + 16 = 144

За этим последовали фактические данные Note

72 для среднего C или 01001000

а затем данные скорости снова указываются в диапазоне 0-127 с 0 MSB

56 в нашем случае

00111000 Итак, что будет дальше по проводу (игнорирование стоп-старта и битов синхронизации было)

144, 72, 56

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

Как уже было сказано, 127 бит покрывают почти любую западную клавиатуру, которую вы хотите упомянуть. Таким образом, это вполне логично, и сохранение протоколов спустя долгое время после того, как многие последовательные протоколы исчезли в безвестности, является отличным дополнением к http://en.wikipedia.org/wiki/Dave_Smith_(engineer) Дэйв Смит из Sequential Circuits, который начал обсуждения с другими производителями, чтобы установить все это на место.

Современная музыка и композиция были бы совсем другими без него и их.

Наслаждаться!

person wyleu    schedule 04.10.2013

127 достаточно, чтобы покрыть все клавиши пианино

person Luca Rocchi    schedule 02.04.2012
comment
Где вы нашли пианино со 104 клавишами? У большинства 88. Даже у Bösendorfer Imperial только 97. - person SSteve; 25.07.2012
comment
честно говоря, сейчас я не могу сказать, как мне пришло в голову 104, я не пианист (но я программировал C midi в течение многих лет).. в любом случае, вы правы, я изменил свой ответ, заявив, что 127 достаточно для клавиш пианино: ) - person Luca Rocchi; 27.07.2012

0 ~ 127 хорошо подходит для преобразования АЦП.

Многие аппаратные MIDI-устройства полагаются на выполнение аналого-цифровых преобразований (АЦП). Учитывая, что MIDI является протоколом связи в реальном времени, при выполнении преобразования АЦП с использованием последовательное приближение (обычно используемый алгоритм), хорошим практическим правилом является использование 8-битного разрешения для быстрых вычислений. Это даст значения в диапазоне 0 ~ 1023, которые можно преобразовать в диапазон MIDI, разделив на 8.

person Lukas Borges    schedule 14.01.2021