Аспекты разработки миди-клавиатур

Теория по электронике

Модератор: Модераторы

andriano
Пользователь
Сообщения: 49
Зарегистрирован: 09 авг 2020, 22:50
Местоположение: Сергиев Посад

Аспекты разработки миди-клавиатур

Сообщение andriano » 15 авг 2020, 00:07

Dmitry Dubrovenko писал(а):И, кстати, как Вы оцениваете время выполнения, не написАв кода?
А я разве где-то утверждал, что не писал никакого кода?
Вот лично у меня обычно получается, что на одну строчку кода, вошедшего в проект, приходится десяток строчек всяких вспомогательных программ, которые пишутся на скорую руку, один раз запускаются, получается нужный результата, после чего об этой программе напрочь забываешь.
Вот именно такая "временная" программа и была написана и использована для оценки.
Я предлагаю только не завышать их бездумно.
Ну кому, например, нужна разрешающая способность в 64 бита? :roll:
Мне вот интересно, как Вы работаете?
Наверное смотрите в потолок и рассуждаете: "Вот, скажем, 18 разрядов хватит или нет? А возьму как я лучше 14 разрядов - все 2 разряда сэкономлю..."
Лично я предпочитаю сначала провести оценки, и только потом на их основе выбирать оптимальную разрядность. Кстати, мне казалось, что в примере выше я вполне убедительно обосновал, что разрядность представления интервалов времени должна примерно равняться 10.
Вот поэтому и измеряют всякие косвенные значения.
Почему же косвенные? Интервал времени между замыканием пары контактов при известном расстоянии между ними вполне однозначно определяет скорость (velocity) движения клавиши.
Просто не нужно использовать физически некорректных величин типа "силы удара", и не придется прибегать к "косвенным значениям".
Оффтоп
Я рассортировывать не успеваю.

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

Аватара пользователя
Dmitry Dubrovenko
Администратор
Сообщения: 2017
Зарегистрирован: 12 окт 2014, 20:20
Местоположение: Санкт-Ленинград
Контактная информация:

Re: Аспекты разработки миди-клавиатур

Сообщение Dmitry Dubrovenko » 15 авг 2020, 11:49

andriano писал(а):"временная" программа и была написана и использована для оценки
Э-э, батенька.
Как говаривал Промокашка: "Так и я могу!" :-)
Это уже не "предварительная оценка", а практически - "испытания".

andriano писал(а):я вполне убедительно обосновал
Извиняюсь, если что-то пропустил, но я как-то не увидел этого обоснования.
Пока что только ясно, из-за чего не устраивает разрядность 7.
Почему 10, а не, например, 12?
Кроме того, мне кажется, что Вы несколько однобоко подходите к проблеме, очень много внимания уделяя одному аспекту теории, не обращая внимания на некоторые практические моменты.

andriano писал(а):вполне однозначно определяет скорость
Среднюю скорость.
Уже тысячу раз говорено (и не только мной, кстати), что скорость может быть обманчива, а измерять надо, по уму, эту самую пресловутую физически некорректную величину "сила удара".

Оффтоп
andriano писал(а):не могут обнаружить
Используйте все возможности движка форума.
Например, пользуйтесь пунктами "Новые сообщения", или "Ваши сообщения".

andriano писал(а):порядок есть, а живых никого нет
Ну, вот Вы же живой.
Я лично никогда не стараюсь количеством заменить качество.
И совсем не хочу, что бы мой форум превращался в некое подобие Кота.
Поэтому, перефразируя классика марксизма-ленинизма: "Порядок, порядок, и ещё раз порядок". ;-)

andriano писал(а):как Вы работаете?
Как проклятый, с утра до поздней ночи. :-)
Подпись

andriano
Пользователь
Сообщения: 49
Зарегистрирован: 09 авг 2020, 22:50
Местоположение: Сергиев Посад

Re: Аспекты разработки миди-клавиатур

Сообщение andriano » 16 авг 2020, 13:40

Dmitry Dubrovenko писал(а):Это уже не "предварительная оценка", а практически - "испытания".
Ну, "оценка" или "испытание" - вопрос, скорее, терминологический, а ключевое слово - "предварительный". Т.е. оценка (испытание) проводятся не на том коде, который будет в устройстве, а на некотором "имитаторе".
Извиняюсь, если что-то пропустил, но я как-то не увидел этого обоснования.
Действительно, это было не здесь, а в другой теме: http://dubrovenko.ru/ddssite/forum/viewtopic.php?f=2&t=252#p5495
Еще раз, тезисно:
1. Максимальная длительность, которую имеет смысл измерять - 200 мс (больше - нет звука на акустике или "1" на MIDI),
2. Минимальная длительность - 2 мс.
3. Человеческий слух способен различать порядка 1 дБ (26% по мощности или 13% по напряжению).
4. Динамический диапазон музыкального инструмента вряд ли превысит 64 дБ (2 млн раз по мощности).
5. Из 3 и 4 следует, что одна единица MIDI velocity примерно должна соответствовать 0.5 дБ (6-13%)
6. Исходя из того, что величину 2 мс нужно измерять с точностью не хуже 6-13% (берем 10%), единица измерения должна соответствовать 0.2 мс.
7. Величина 200 мс в единицах 0.2 мс равна 1000.
8. Значит, таблицу перекодировки следует делать порядка 1024, а требуемая разрядность измеренного числа составит 10.

PS. Да, уточнил у человека с ученой степенью, реально преподающего ф-но и концертирующего: на рояле точно так же, если нажимать клавишу очень медленно, звука не будет.
Кроме того, мне кажется, что Вы несколько однобоко подходите к проблеме, очень много внимания уделяя одному аспекту теории, не обращая внимания на некоторые практические моменты.
А вот это очень интересно, собственно, форум и нужен для обмена мнениями. (мне, как уже написал в предыдущем сообщении, оказалось очень полезно посмотреть на схемы клавиатур) Так на какие практические моменты я не обращаю внимания?
Среднюю скорость.
Ну, коль скоро нам на выходе нужно получить одну единственную скалярную величину velocity, то любое измерение скорости должно сопровождаться ее усреднением по тем или иным алгоритмам.
В случае клавиатуры усреднение происходит по интервалу между срабатыванием датчиков. Но никто ведь не заставляет размещать датчики именно начале и в конце хода клавиши. Т.е. если взять ход клавиши 100%, то срабатывание 1-го датчика можно сделать на 10%, а второго - на 90% (это как бы стандарт для физических измерений). Но никто не обязывает брать именно эти величины. Можно, например, взять 75% и 95%, тогда усреднение будет только по участку движения клавиши вблизи самого упора. Но это уже задача конструктора механики. И здесь программисту не остается ничего иного, как положиться на выбор конструктора.
Уже тысячу раз говорено (и не только мной, кстати), что скорость может быть обманчива, а измерять надо, по уму, эту самую пресловутую физически некорректную величину "сила удара".
Физически некорректную величину и можно измерить только физически некорректно. И зачем нам некорректные измерения?
По сути дела задача именно в том и состоит, чтобы преобразовать "физически некорректные" термины, которыми оперируют музыканты, к терминам физически корректным, с которыми только и можно [корректно] работать.

Оффтоп
Сейчас вспомнил, в свое время покупал пару 4-октавных клавиатур для DIY. http://www.rw6ase.narod.ru/00/rk1/start9069.html Одну использовал еще лет 30 назад, а другая пока лежит нетронутая.
Дело в том, что эта клавиатура, скорее всего, предназначена для инструмента с октавным синтезом и не поддерживает динамику. Там на каждую клавишу по 5-6 контактов - каждый на свою общую шину. Вот сейчас я и подумал, а нельзя ли настроить эти многочисленные контакты как раз на обеспечение динамики.

Аватара пользователя
Dmitry Dubrovenko
Администратор
Сообщения: 2017
Зарегистрирован: 12 окт 2014, 20:20
Местоположение: Санкт-Ленинград
Контактная информация:

Re: Аспекты разработки миди-клавиатур

Сообщение Dmitry Dubrovenko » 17 авг 2020, 19:56

andriano писал(а):вопрос, скорее, терминологический
Э, не.
Код должен быть рабочий, содержащий все куски и обработчики.
А иначе какой толк от такой оценки?

andriano писал(а):Еще раз, тезисно
Сорри, но по-моему Вас куда-то не туда "унесло".
При чём здесь динамический диапазон музыкального инструмента?
По МИДИ-то чуть больше 20dB (по мощности) всё-равно не передать.

andriano писал(а):величину 2 мс нужно измерять с точностью не хуже 6-13% (берем 10%), единица измерения должна соответствовать 0.2 мс
Во-первых, откуда взялись 10%?
Во-вторых, точность измерения зависит сугубо от точности тактирования таймера (генератора, т.е.), Что за единица измерения?

Как понимаю, исходя из Ваших же постулатов, расчёт должен быть таким:
1. Для графика преобразования Velocity добиваемся такого разрешения по X, что бы по Y приращение не превышало 1.
2. 200ms делим на полученное значение, это и будет шаг измерения задержки замыкания/размыкания контактов.
Но, как уже выше говорил, при таком подходе, очень легко можно достичь указанных 64 бит.

andriano писал(а):на рояле точно так же, если нажимать клавишу очень медленно, звука не будет
Насколько помню устройство фортепиано, молоточек там обклеен "фетром", а так же имеется глушитель струн.
Последний поднимается при нажатии на клавишу, но до удара, и опускается также.
Если нажимать очень медленно, то молоточек просто упрётся в струну (просто надавит на неё) и отскока не будет.
Соответственно, за счёт "фетрового покрытия", будет фактически то же глушение и струна колебаться не будет.
Но мне казалась, что время, необходимое для такого нажатия, гораздо более 200ms. :roll:

andriano писал(а):на какие практические моменты я не обращаю внимания?
На вскидку, дребезг контактов, например.
Подпись

andriano
Пользователь
Сообщения: 49
Зарегистрирован: 09 авг 2020, 22:50
Местоположение: Сергиев Посад

Re: Аспекты разработки миди-клавиатур

Сообщение andriano » 18 авг 2020, 00:49

Dmitry Dubrovenko писал(а):Код должен быть рабочий, содержащий все куски и обработчики.
А иначе какой толк от такой оценки?
Не обязательно.
Главное, чтобы он:
1. Выполнялся примерно такое же время, какое будет выполняться рабочий.
2. Для тех мест, где он явно не будет совпадать с рабочим, должно быть известно примерное время выполнения (например, время входа/выхода из прерывания).
Сорри, но по-моему Вас куда-то не туда "унесло".
При чём здесь динамический диапазон музыкального инструмента?
При том, что он - единственная причина, по которой используется veloity. Без него и velociy была бы не нужна, следовательно, не было бы что оценивать.
По МИДИ-то чуть больше 20dB (по мощности) всё-равно не передать.
MIDI как бы передает цифру, а не мощность, а что эта цифра должна означать... Ничто не мешает передать цифру, соответствующую и 1000 дБ.
Во-первых, откуда взялись 10%?
Слегка округленное среднее между 6 и 13.
Во-вторых, точность измерения зависит сугубо от точности тактирования таймера (генератора, т.е.), Что за единица измерения?
Таймер работает от кварца (на худой конец - от керамики), поэтому его точность заведомо выше единиц процентов. Для наших целей погрешностью кварца вообще можно пренебречь и считать, что точность таймера абсолютная.
Как понимаю, исходя из Ваших же постулатов, расчёт должен быть таким:
1. Для графика преобразования Velocity добиваемся такого разрешения по X, что бы по Y приращение не превышало 1.
Не совсем. Это - другой метод оценки. Но можно использовать и его.
А можно посчитать и тем и другим и убедиться, что они дают одинаковые порядки величины.
2. 200ms делим на полученное значение, это и будет шаг измерения задержки замыкания/размыкания контактов.
Но, как уже выше говорил, при таком подходе, очень легко можно достичь указанных 64 бит.
Ну, если рассматривать сферического коня в вакууме, то - возможно.
А на практике получается 10.
Но, если бы мы вдруг получили 64, то был бы резонный повод усомниться либо в адекватности методики, либо в правильности ее применения.
Насколько помню устройство фортепиано, молоточек там обклеен "фетром", а так же имеется глушитель струн.
Последний поднимается при нажатии на клавишу, но до удара, и опускается также.
Если нажимать очень медленно, то молоточек просто упрётся в струну (просто надавит на неё) и отскока не будет.
Соответственно, за счёт "фетрового покрытия", будет фактически то же глушение и струна колебаться не будет.
Да ладно теоретизировать - просто взять и попробовать.
Но мне казалась, что время, необходимое для такого нажатия, гораздо более 200ms. :roll:
Я не знаю, что такое "время нажатия", я работаю лишь со "временем между замыканием контактов". Очевидно, что это разные величины, т.к. первое зависит только от исполнителя, а второе - также и от конструкции клавиатуры.
На вскидку, дребезг контактов, например.
Согласен.
Но пока что-то не приходит на ум, как можно бороться с дребезгом, если его величина превосходит интервал между срабатыванием контактов.
А еще что кроме дребезга? (и вообще, каков он - этот дребезг от резиновых контактов?)

Аватара пользователя
Dmitry Dubrovenko
Администратор
Сообщения: 2017
Зарегистрирован: 12 окт 2014, 20:20
Местоположение: Санкт-Ленинград
Контактная информация:

Re: Аспекты разработки миди-клавиатур

Сообщение Dmitry Dubrovenko » 18 авг 2020, 18:20

andriano писал(а):Выполнялся примерно такое же время, какое будет выполняться рабочий
Вот, как интересно, Вы это себе представляете: выполняться столько же, сколько "рабочий", при том, что абсолютно не известно, сколько будет выполняться "рабочий"? :roll:

andriano писал(а):Без него и velociy была бы не нужна
Что-то я окончательно перестаю Вас понимать.
Т.е. если динамический диапазон инструмента будет не 64dB, а, скажем 70dB, Velocity передавать не надо?
Ещё раз говорю: динамический диапазон синтезатора никак не влияет на параметры миди-клавиатуры (это, кстати, одна из особенностей МИДИ: передатчику абсолютно всё-равно, кто там приёмник).
А динамический диапазон, который способна передать Velocity составляет 127 раз (20dB с небольшим).

andriano писал(а):Слегка округленное среднее между 6 и 13
А они откуда берутся?

andriano писал(а):А на практике получается 10
Ну, вот посмотрел свою таблицу, получается 12.

andriano писал(а):усомниться либо в адекватности методики, либо в правильности ее применения
Так я об этом давно уже толкую. :yes:

andriano писал(а):Да ладно теоретизировать - просто взять и попробовать
Т.е. Вы призываете "забить" на теорию и расчёты и действовать методом "научного тыка"? :-)

andriano писал(а):Я не знаю, что такое "время нажатия", я работаю лишь со "временем между замыканием контактов"
Речь вроде шла о рояле?
Кстати, как Вы на нём измеряли "время между замыканием контактов"?

andriano писал(а):как можно бороться с дребезгом, если его величина превосходит интервал между срабатыванием контактов
Это что ж у Вас за дребезг такой?
Как-раз обычно наоборот: период опроса больше периода дребезга.
В этом собственно и состоит "борьба" (во избежании, так сказать, хочу подчеркнуть, что речь о дребезге именно при измерении времени между
последовательным замыканием двух контактов, для каких-нибудь кнопок ситуация будет другая).
Подпись

andriano
Пользователь
Сообщения: 49
Зарегистрирован: 09 авг 2020, 22:50
Местоположение: Сергиев Посад

Re: Аспекты разработки миди-клавиатур

Сообщение andriano » 18 авг 2020, 20:57

Dmitry Dubrovenko писал(а):Вот, как интересно, Вы это себе представляете: выполняться столько же, сколько "рабочий", при том, что абсолютно не известно, сколько будет выполняться "рабочий"? :roll:
Вы упустили ключевое слово "примерно".
Если мы хотим узнать вес чего-либо, нам нужны весы. Но для того, чтобы сделать выбор между аптекарскими весами и весами, на которых взвешивают грузовики, нам нужно оценить примерный вес того, что мы хотим взвесить.
И, кстати, почему "абсолютно неизвестно"? Вы что, приверженец солипсизма?
Что-то я окончательно перестаю Вас понимать.
Т.е. если динамический диапазон инструмента будет не 64dB, а, скажем 70dB, Velocity передавать не надо?
Вы не сможете определить на слух, где 64, а где 70 дБ, так что можно считать, что 64 и 70 - это одно и то же.
Ещё раз говорю: динамический диапазон синтезатора никак не влияет на параметры миди-клавиатуры (это, кстати, одна из особенностей МИДИ: передатчику абсолютно всё-равно, кто там приёмник).
Тем не менее, разработчик этой самой клавиатуры должен представлять себе, как разработчик синтезатора сможет использовать выдаваемые клавиатурой сигналы. Так что синтезатор на клавиатуру не влияет, а принципы, лежащие в основе работы синтезатора - влияют.
А динамический диапазон, который способна передать Velocity составляет 127 раз (20dB с небольшим).
Это Вы серьезно или прикалываетесь?
Мне, честно говоря, очень трудно представить человека (технаря), который имеет хоть какое-то представление о звуке, и при этом не знает, что для представления громкости звука используются логарифмические единицы.
Судя по Вашим прикидкам, Вы считаете шкалу velocity линейной.
В спецификации MIDI указано, что уровень 1 соответствует ppp, уровень 64 - mf, а уровень 127 - fff. Вы всерьез полагаете, что между ppp и mf - 17 дБ, а между mf и fff - только три?
А они откуда берутся?
(речь о цифрах 6 и 13)
Вообще-то я об этом писал. Как Вы представляете себе нашу переписку: я должен в каждом последующем сообщении полностью дублировать все предыдущее, добавляя в него ответы на Ваши новые вопросы?
Ну, вот посмотрел свою таблицу, получается 12.
Но ведь не 64?
Опять же, сказал "А", говори "Б": аргументируйте эти 12.
Так я об этом давно уже толкую. :yes:
Так и запишем: пришли к консенсусу - раз 64 разрядов не получено, причин для сомнений в методике не существует!
Т.е. Вы призываете "забить" на теорию и расчёты и действовать методом "научного тыка"? :-)
В основе любой теории лежит эксперимент или серия экспериментов.
Я предлагаю сначала провести необходимые эксперименты, а только потом переходить к теории.
(Я начинаю подозревать Вас в приверженности еще и схоластике)
Речь вроде шла о рояле?
Кстати, как Вы на нём измеряли "время между замыканием контактов"?
Вы уже откровенно начали придираться к словам.
Собственно, я уже писал, что время измерял на K-25m, а на пианино (рояля у меня дома нет) пытался добиться примерно такой же скорости нажатия и наоборот.
Блин, вот сейчас написал "наоборот" - опять же начнутся придирки к словам.
Поясняю: "наоборот" - это значит, что на пианино пытался уловить порог скорости нажатия, при котором исчезает звук, а потом на K-25m пытался воспроизвести такую же скорость нажатия.
И еще уточню, чтобы избежать дальнейших придирок: оба эти процесса выполнялись попеременно до момента субъективного ощущения, что итерации сошлись.
Это что ж у Вас за дребезг такой?
Как-раз обычно наоборот: период опроса больше периода дребезга.
В этом собственно и состоит "борьба" (во избежании, так сказать, хочу подчеркнуть, что речь о дребезге именно при измерении времени между
последовательным замыканием двух контактов, для каких-нибудь кнопок ситуация будет другая).
Дребезг не у меня - дребезг у Вас.
По крайней мере, именно Вы первый заговорили о дребезге.
Поэтому спрошу Вас прямо: какова длительность дребезга у применяемых в электронной музыке клавиатурах?

Аватара пользователя
Dmitry Dubrovenko
Администратор
Сообщения: 2017
Зарегистрирован: 12 окт 2014, 20:20
Местоположение: Санкт-Ленинград
Контактная информация:

Re: Аспекты разработки миди-клавиатур

Сообщение Dmitry Dubrovenko » 18 авг 2020, 23:11

andriano писал(а):Вы упустили ключевое слово "примерно"
Отнюдь.
Выше говорил, что толку от "примерно" очень мало.

andriano писал(а):между аптекарскими весами и весами, на которых взвешивают грузовики
Я думаю, что делать миди-клавиатуру на i9 тоже вряд ли кто будет, а вот выбор между STM, и тем же PIC'ом, не столь очевиден.

andriano писал(а):почему "абсолютно неизвестно"?
Потому, что его нет.

andriano писал(а):представление о звуке
Что-то я туго соображаю.
О каком звуке Вы всё время толкуете?

andriano писал(а):оба эти процесса выполнялись попеременно до момента субъективного ощущения, что итерации сошлись
Вообще-то я думал, что Вы действительно его чем-то измеряли.
А так, 200ms, субъективными ощущениями.. (далее по Станиславскому) :roll:

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

andriano писал(а):PS. Что-то у меня складывается ощущение, что дискуссия уходит из конструктивного русла.
Вы тоже заметили? :yes:

Оффтоп
andriano писал(а):Вы что, приверженец солипсизма?
А это-то тут при чём (и кстати, нарушение правил форума)?
Подпись

andriano
Пользователь
Сообщения: 49
Зарегистрирован: 09 авг 2020, 22:50
Местоположение: Сергиев Посад

Re: Аспекты разработки миди-клавиатур

Сообщение andriano » 19 авг 2020, 08:44

Dmitry Dubrovenko писал(а):выбор между STM, и тем же PIC'ом, не столь очевиден.
Я не профессионал в МК, имею дело с очень ограниченной их номенклатурой, поэтому для меня было STM vs AVR.
Собственно для осуществления выбора я и проводил примерные измерения, которые убедили меня в том, что AVR для этих целей вполне достаточно.
Что-то я туго соображаю.
О каком звуке Вы всё время толкуете?
В данном контексте - о музыкальном. Но вообще, логарифмическая шкала применим для любого звука, который слышит человек. (собственно, логарифмическая шкала - это особенность не звука, а слухового анализатора человека)
Точно такая же, как и у всех применяемых в электронике (каков вопрос, таков и ответ :-) ).
Характерная величина для "всех применяемых в электронике" - 20-50 мс, а нам нужно измерять время с точностью до долей мс. Откуда вывод: имеет место одна из двух возможных ситуаций:
- дребезг не позволит определить "силу удара" методом измерения интервала времени между замыканием контактов (для группы из двух контактов),
- характеристики дребезга контактов в музыкальной клавиатуре существенно (на порядки) отличаются от таковых для "типично применяемых в электронике".

Аватара пользователя
Dmitry Dubrovenko
Администратор
Сообщения: 2017
Зарегистрирован: 12 окт 2014, 20:20
Местоположение: Санкт-Ленинград
Контактная информация:

Re: Аспекты разработки миди-клавиатур

Сообщение Dmitry Dubrovenko » 20 авг 2020, 19:56

andriano писал(а):которые убедили меня
Ну, это - Ваше дело, коль Вам так удобнее. :-)

andriano писал(а):логарифмическая шкала применим для любого звука
Да я всё понять пытаюсь, каким образом это всё применимо к сканированию клавиатуры?

andriano писал(а):Характерная величина для "всех применяемых в электронике" - 20-50 мс
Это где ж такое прописано?

andriano писал(а):С какой стати?
Да, что-то ляпнул не подумав. :roll:
Подпись

andriano
Пользователь
Сообщения: 49
Зарегистрирован: 09 авг 2020, 22:50
Местоположение: Сергиев Посад

Re: Аспекты разработки миди-клавиатур

Сообщение andriano » 20 авг 2020, 23:00

Dmitry Dubrovenko писал(а):Да я всё понять пытаюсь, каким образом это всё применимо к сканированию клавиатуры?
Так, минуточку: мы рассматриваем конструкцию клавиатуры в целом или исключительно процесс сканирования?
Я все-таки предполагаю, что "в целом", а процесс сканирования, как составная часть, должен в целом соответствовать замыслу клавиатуры.
Итак:
1. Клавиатура - это музыкальный инструмент или его часть.
2. Музыкальные инструменты нужны, чтобы при их помощи создавать музыку.
3. Музыка основана на биофизиологических особенностях слухового анализатора человека (САЧ) - системы ухо-мозг.
4. САЧ обладает логарифмической характеристикой для обеих величин - частоты (единица - октава) и громкости (единица - дБ).
Раскручивая эту цепочку в обратную сторону, приходим к выводу, что клавиатура должна обеспечивать логарифмическую характеристику как по частоте, так и по амплитуде. Собственно, по частоте - так и есть, единица MIDI соответствует 1/12 октавы. По амплитуде - несколько сложнее, т.к. разные инструменты обладают различным динамическим диапазоном (собственно, именно для реализации этого и придумали кривые громкости для MIDI инструментов), т.е. четкого соответствия "единица velocity" - дБ нет, но это не отменяет того факта, что сама velocity должна быть логарифмической характеристикой, примерно пропорциональной дБ (а коэффициент пропорциональности может меняться).
Ну а при расчете технических параметров сканирования клавиатуры необходимо принимать этот факт во внимание и использовать для определения тех или иных параметров (например, частоты сканирования).
Это где ж такое прописано?
Это не прописано, это - экспериментальный факт.
Впрочем, можно справиться у Википедии: https://ru.wikipedia.org/wiki/%D0%94%D1%80%D0%B5%D0%B1%D0%B5%D0%B7%D0%B3_%D0%BA%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D0%BE%D0%B2

Аватара пользователя
Dmitry Dubrovenko
Администратор
Сообщения: 2017
Зарегистрирован: 12 окт 2014, 20:20
Местоположение: Санкт-Ленинград
Контактная информация:

Re: Аспекты разработки миди-клавиатур

Сообщение Dmitry Dubrovenko » 21 авг 2020, 19:23

andriano писал(а):velocity должна быть логарифмической характеристикой
Как модно говорить: "Ссылочку на первоисточник, плиз!" :yes:
В спецификации МИДИ (во всяком случае, которую я читал) оговаривается только реакция громкости синтезатора на Velocity.
Если при этом ещё и Velocity будет логарифмом от скорости нажатия, то это уже получится логарифм логарифма.
Причём, в спецификации не говорится чтоб "обязательно". Более того, сказано, что Velocity вовсе не обязано интерпретироваться, как громкость.

andriano писал(а):Это не прописано, это - экспериментальный факт
Если б это был факт, больше половины моих устройств не работало бы. :roll:

andriano писал(а):можно справиться у Википедии
Там только про герконы и контакторы.
При этом: "Текущая версия страницы пока не проверялась опытными участниками" :-)
А вот мнение не менее авторитетных товарищей: "Когда коммутатор замыкается, два контакта фактически разъединяются и снова соединяются обычно от 10 до 100 раз за время, примерно равное 1 мс (Искусство схемотехники, Хоровиц и Хилл, второе издание)".
Подпись

andriano
Пользователь
Сообщения: 49
Зарегистрирован: 09 авг 2020, 22:50
Местоположение: Сергиев Посад

Re: Аспекты разработки миди-клавиатур

Сообщение andriano » 22 авг 2020, 00:19

Dmitry Dubrovenko писал(а):Как модно говорить: "Ссылочку на первоисточник, плиз!" :yes:

MIDI 1.0 Deailed Specification
Document Version 4.2
Revised September 1995
стр.10:
"application of velocity to volume should be an exponental function"
В спецификации МИДИ (во всяком случае, которую я читал) оговаривается только реакция громкости синтезатора на Velocity.
Если при этом ещё и Velocity будет логарифмом от скорости нажатия, то это уже получится логарифм логарифма.

Что-то Вы совсем запутались.
другими словами:
volume ~ exp(velocity)
или, что то же самое:
velocity ~ ln(volume)

Аватара пользователя
Dmitry Dubrovenko
Администратор
Сообщения: 2017
Зарегистрирован: 12 окт 2014, 20:20
Местоположение: Санкт-Ленинград
Контактная информация:

Re: Аспекты разработки миди-клавиатур

Сообщение Dmitry Dubrovenko » 22 авг 2020, 10:48

andriano писал(а):MIDI 1.0 Deailed Specification
Так и я про неё же.

andriano писал(а):Что-то Вы совсем запутались
Это Вы меня всё время хотите запутать. :roll:
Я, конечно, не силён в басурманском, но по-моему, в/у фраза означает:
velocity ~ exp(volume)
т.е.
volume ~ ln(velocity)
а не наоборот.
Опять же Вы любите выдёргивать фразы из контекста.
Привожу полный текст в/у пункта (благо он небольшой):
Interpretation of the Velocity byte is left up to the receiving instrument. Generally, the larger the numeric value of the message, the stronger the velocity-controlled effect. If velocity is applied to volume (output level) for instance, then higher Velocity values will generate louder notes. A value of 64 (40H) would correspond to a mezzo-forte note and should also be used by device without velocity sensitivity. Preferably application of velocity to volume should be an exponential function. This is the suggested default action: note that an instrument may have multiple tables for mapping MIDI velocity to internal velocity response.
vvvvvvv = 64: if not velocity sensitive
vvvvvvv = 0: Note-Off (with velocity of 64)

Насколько понимаю, речь здесь идёт о синтезаторе, а не о миди-контроллере.
Т.е. это он должен интерпретировать громкость, как натуральный логарифм от Velocity.
И то, даже не "должен", а "может".
Подпись

andriano
Пользователь
Сообщения: 49
Зарегистрирован: 09 авг 2020, 22:50
Местоположение: Сергиев Посад

Re: Аспекты разработки миди-клавиатур

Сообщение andriano » 25 авг 2020, 15:32

Как-то упустил из внимания этот ответ. :(
Dmitry Dubrovenko писал(а):Это Вы меня всё время хотите запутать. :roll:
Я, конечно, не силён в басурманском, но по-моему, в/у фраза означает:
velocity ~ exp(volume)
т.е.
volume ~ ln(velocity)
а не наоборот.
Давайте еще раз:
application of velocity to volume - преобразование от velocity к volume
т.е. velocity должна располагаться справа от знака равенства, а volume - слева.
Ну и, опять же, кроме "первоисточников" есть еще и здравый смысл.
Опять же Вы любите выдёргивать фразы из контекста.
Привожу полный текст в/у пункта (благо он небольшой):
Отрывок я цитировать не буду, но хочу обратить внимание, что в нем явно прописано значение mf - 64. А 64 - это середина интервала от 0 до 127, тогда как mf - середина интервала от ppp до fff. Но динамические оттенки (те самые от ppp до fff) располагаются равномерно в логарифмическом масштабе (что является прямым следствием свойств слухового анализатора человека), следовательно, коль скоро середина одного интервала соответствует середине другого интервала, значит, эти интервалы должны отсчитываться в одном виде масштаба, а именно - в логарифмическом.
Иначе - никак.
Насколько понимаю, речь здесь идёт о синтезаторе, а не о миди-контроллере.
Ну не бывает "сферической клавиатуры в вакууме". Клавиатура сама по себе (без синтезатора) лишена смысла. Соответственно, ее свойства должны состыковываться со свойствами синтезатора. И рассматривать ее отдельно от синтезатора - прямой путь к явным ошибкам в реализации (в качестве примера - наше обсуждение).

Аватара пользователя
Dmitry Dubrovenko
Администратор
Сообщения: 2017
Зарегистрирован: 12 окт 2014, 20:20
Местоположение: Санкт-Ленинград
Контактная информация:

Re: Аспекты разработки миди-клавиатур

Сообщение Dmitry Dubrovenko » 27 авг 2020, 16:18

andriano писал(а):есть еще и здравый смысл
Так вот как-раз здравый смысл и говорит, что логичнее, если бы громкость была логарифмом от Velocity (сами же всё время говорите про закон Вебера - Фехнера), а так получается, что она - экспонента (хотя с переводом Вы видимо правы, признаю).
Если же, как Вы говорите, и клавиатура ещё будет передавать логарифм от скорости нажатия, то в итоге линейная зависимость получается.
Что-то ерунда какая-то. :roll:

andriano писал(а):Ну не бывает "сферической клавиатуры в вакууме"
Как уже говорил, у МИДИ как-раз именно такая концепция, как ни странно.

Оффтоп
andriano писал(а):явным ошибкам в реализации
Э-э.. Это где?
То что Вам хочется большего разрешения, вовсе не является ошибкой.
Но это тема для другой темы. :yes:
Подпись

andriano
Пользователь
Сообщения: 49
Зарегистрирован: 09 авг 2020, 22:50
Местоположение: Сергиев Посад

Re: Аспекты разработки миди-клавиатур

Сообщение andriano » 28 авг 2020, 08:45

Dmitry Dubrovenko писал(а):Так вот как-раз здравый смысл и говорит, что логичнее, если бы громкость была логарифмом от Velocity (сами же всё время говорите про закон Вебера - Фехнера), а так получается, что она - экспонента (хотя с переводом Вы видимо правы, признаю).
Если же, как Вы говорите, и клавиатура ещё будет передавать логарифм от скорости нажатия, то в итоге линейная зависимость получается.
Что-то ерунда какая-то. :roll:
Да нет, наоборот, все как раз совершенно просто и логично. А небольшое недопонимание происходит от применяемой терминологии.
Вот Вы пишете "громкость". А я специально избегал этого термина, употребляя "volume".
Дело в том, что громкость принято измерять в дБ, а volume - в размерных физических единицах типа напряжения или звукового давления. Т.е. громкость - это уже логарифм от volume. Вот это важный момент, осознав который, дальше уже пойдет легко и просто.
Итак, на входе у нас есть velocty, т.е. скорость движения клавиши. А на самом деле - время между замыканием контактов, которое обратно пропорционально этой velocity. И вот здесь первая "засада": функции y=x и y=1/x - слишком разные. Совсем другое дело, если мы прологарифмируем: y=ln(x) и y=ln(1/x), построенные в логарифмическом масштабе - обе линейные, отличаются лишь наклоном (знаком коэффициента).
Ну а дальше получается, что velocity можно рассматривать либо как громкость в дБ, либо как логарифм скорости или времени (все соотношения с точностью до постоянного коэффициента, а потому скорость и время - суть одно и то же).
Отсюда, кстати, получается простая зависимость: velocity curve - это в первом приближении всего навсего одно число - коэффициент перевода единиц MIDI velocity в дБ (лежит примерно в диапазоне 0.0-0.5).
Как уже говорил, у МИДИ как-раз именно такая концепция, как ни странно.
Нет, просто ее авторы ставили своей задачей как можно меньше ограничивать свободу производителя. Ну и в частности, сформулировать основные правила так, чтобы все существующие на тот момент инструменты (и находящиеся в разработке) им не противоречили. Поэтому она и получилась столь "рыхлой" и не конкретной. Т.е. это не основа концепции, а, наоборот, вынужденный компромисс.
Оффтоп
Из того, что мое второе сообщение было перенесено в закрытую тему, но сама тема при этом не была открыта, делаю вывод, что мое участие в этой теме нежелательно.

Аватара пользователя
Dmitry Dubrovenko
Администратор
Сообщения: 2017
Зарегистрирован: 12 окт 2014, 20:20
Местоположение: Санкт-Ленинград
Контактная информация:

Re: Аспекты разработки миди-клавиатур

Сообщение Dmitry Dubrovenko » 28 авг 2020, 23:02

andriano писал(а):volume - в размерных физических единицах
Сколько видел аппаратуры, везде "Volume" было в децибелах.
Другое дело, что нулевой уровень может быть разный (ну так и обозначается по-разному, dBu, dBV и т.д.).
Да и нет в английском языке такого слова: "громкость". :-)

andriano писал(а):функции y=x и y=1/x - слишком разные
А "засада"-то в чём?

andriano писал(а):как можно меньше ограничивать свободу производителя
Во-во.
И поэтому посредством протокола можно управлять далеко не только синтезаторами.

Оффтоп
andriano писал(а):мое участие в этой теме нежелательно.
Вывод неправильный.
Нежелательно зафлужевание темы (она и так слишком раздута).
Ваше сообщение было вроде как законченное, и никакого развития не предполагало.
Поэтому тему не открывал.
Сейчас тему открыл, но предупреждаю сразу: говорите только существенное и именно для этой темы.
Порядок буду блюсти неукоснительно. :yes:
Подпись

andriano
Пользователь
Сообщения: 49
Зарегистрирован: 09 авг 2020, 22:50
Местоположение: Сергиев Посад

Re: Аспекты разработки миди-клавиатур

Сообщение andriano » 01 сен 2020, 19:22

Dmitry Dubrovenko писал(а):Сколько видел аппаратуры, везде "Volume" было в децибелах.
Ну если ВСЕ "родственные" величины имеют логарифмическую шкалу, вообще непонятно, откуда появилась убежденность, что velocity является исключением из этого правила.
Да и нет в английском языке такого слова: "громкость". :-)
А как же loudness?
А "засада"-то в чём?
Засада возникает только если считать volume чем-то отличным от логарифма. Если логарифм - засады нет.

Аватара пользователя
Dmitry Dubrovenko
Администратор
Сообщения: 2017
Зарегистрирован: 12 окт 2014, 20:20
Местоположение: Санкт-Ленинград
Контактная информация:

Re: Аспекты разработки миди-клавиатур

Сообщение Dmitry Dubrovenko » 01 сен 2020, 20:43

andriano писал(а):velocity является исключением из этого правила
Если помните, у меня (и не только) Velocity может передаваться как линейная, так и логарифма, так и экспонента.

andriano писал(а):А как же loudness?
Так же, как и volume. :-)
Что-то мы как-то по кругу ходим.

Давайте всё-таки вернёмся к началу разговора, про то, что счётчик должен быть 12-ти разрядный.
Подпись


Вернуться в «Теория»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость