User Tag List

Показано с 1 по 10 из 443

Тема: Пишу шедевр для «Вектора 06Ц»

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    467
    Спасибо Благодарностей отдано 
    797
    Спасибо Благодарностей получено 
    277
    Поблагодарили
    106 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    SegaBoy, ещё 2 вопроса возникли.

    --------------------------Вопрос 1-й.
    Pb - изменить высоту ноты (pitch bend). В команде Pb указано значение относительно ноты используемой в последней команде On.
    Как преобразуется нота с учётом Pb ?

    Например
    76 On ch=3 n=50 v=90
    76 Pb ch=3 v=8160

    здесь нота n=50 (допустим это 2-я октава нота до# её частота 2708 из таблицы частот для нот )
    При преобразовании миди текста как Pb повлияет на эту ноту ? Изменит высоту ноты в какую сторону ?

    -------------------------------Вопрос 2-й.
    Вот таблица 84-х нот (их частот) для Вектора.
    Как считаются ноты ? Т.е. n=1 (из миди текста) это соответствует какой ноте из таблицы для Вектора ?

    note_table:
    ; контр-октава (12 нот)
    dw 45872,43290,40872,38560,36408,34364,32432,30612,28 902,27273,25729,24311 ; до/до#/ре/ре#/ми/фа/фа#/соль/соль#/ля/ля#/си
    ; большая-октава
    dw 22936,21645,20436,19280,18204,17182,16216,15306,14 451,13636,12876,12146 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; малая-октава
    dw 11468,10823,10218,9646,9102,8591,8108,7653,7229,68 18,6438,6075 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; 1-я октава
    dw 5734,5415,5107,4823,4551,4296,4054,3827,3614,3409, 3219,3036 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; 2-я октава
    dw 2867,2708,2554,2412,2275,2147,2027,1913,1805,1705, 1609,1519 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; 3-я октава
    dw 1433,1353,1277,1205,1137,1074,1014,957,904,852,804 ,759 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; 4-я октава
    dw 717,677,639,602,569,537,507,472,452,426,402,380 ; до до# ре ре# ми фа фа# соль соль# ля ля# си

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    05.01.2009
    Адрес
    Харьков
    Сообщений
    157
    Спасибо Благодарностей отдано 
    23
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    как Pb повлияет на эту ноту ? Изменит высоту ноты в какую сторону ?
    Ответ - в спецификации MIDI. Параметр команды Pb - это 14-битное число от 0 до 16384.
    При конверсии:

    1. Это число нужно преобразовать в диапазон от -1 до 1. 8192 - это ноль, 16384 - это один, а 0 - это минус один. Всё, что между этими точками - вещественные числа в диапазоне от -1 до 1.
    2. Умножить на количество полутонов в диапазоне pitch bend (обычно +/- два полутона, т.е. умножаем на 2)
    3. Поделить на 12 (количество полутонов в октаве)
    4. Возвести двойку в степень числа, полученного на шаге 3
    5. Умножить базовую частоту ноты на результат шага 4

    Привожу английский оригинал на всякий случай:

    So, to manage the pitchbend data and use it to alter the pitch of a tone in a synthesizer we need to do the following steps.
    1. Combine the MSB and LSB to get a 14-bit value.
    2. Map that value (which will be in the range 0 to 16,383) to reside in the range -1 to 1.
    3. Multiply that by the number of semitones in the ± bend range.
    4. Divide that by 12 (the number of equal-tempered semitones in an octave) and use the result as the exponent of 2 to get the pitchbend factor (the value by which we will multiply the base frequency of the tone or the playback rate of the sample).

    A pitchbend value of 8,192 (MSB 64 and LSB 0) will mean 0 bend, producing a pitchbend factor of 2(0/12) which is 1; multiplying by that factor will cause no change in frequency. Using the example message from above, a pitchbend of 12,280 will be an upward bend of 4,088/8191=0.499. That is, 12,280 is 4,088 greater than 8,192, so it’s about 0.499 of the way from no bend (8,192) to maximum upward bend (16,383). Thus, if we assume a pitchbend range setting of ± 2 semitones, the amount of pitch bend would be about 0.998 semitones, so the frequency scaling factor will be 2(0.998/12), which is about 1.059. You would multiply that factor by the fundamental frequency of the tone being produced by your synthesizer to get the instantaneous frequency of the note.
    Последний раз редактировалось x-code; 13.08.2020 в 17:40.

    Эти 2 пользователя(ей) поблагодарили x-code за это полезное сообщение:

    metamorpho(13.08.2020), SegaBoy(13.08.2020)

  4. #3

    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,706
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    318
    Поблагодарили
    222 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Перегнал плеер от Апогея, который выкладывал SegaBoy.
    Пересчитал коэффициенты для Вектора.
    Вот что получилось. С исходником.

    metamorpho, в плеере таблицы оптимизированы, в них нет коэффициентов для нот, которые не используются в конкретной мелодии.
    Вложения Вложения
    Последний раз редактировалось KTSerg; 13.08.2020 в 18:24.

    Эти 2 пользователя(ей) поблагодарили KTSerg за это полезное сообщение:

    metamorpho(13.08.2020), SegaBoy(13.08.2020)

  5. #4

    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    467
    Спасибо Благодарностей отдано 
    797
    Спасибо Благодарностей получено 
    277
    Поблагодарили
    106 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от x-code Посмотреть сообщение
    Ответ - в спецификации MIDI. Параметр команды Pb - это 14-битное число от 0 до 16384. При конверсии:
    1. Это число нужно преобразовать в диапазон от -1 до 1. 8192 - это ноль, 16384 - это один, а 0 - это минус один. Всё, что между этими точками - вещественные числа в диапазоне от -1 до 1.
    2. Умножить на количество полутонов в диапазоне pitch bend (обычно +/- два полутона, т.е. умножаем на 2)
    3. Поделить на 12 (количество полутонов в октаве)
    4. Возвести двойку в степень числа, полученного на шаге 3
    5. Умножить базовую частоту ноты на результат шага 4
    Вот это да ?!?!
    Всё-таки кажется как-то попроще это должно быть.
    Подождём ответ SegaBoy, узнаем что он делает с этим Pb.

    Цитата Сообщение от KTSerg Посмотреть сообщение
    Перегнал плеер от Апогея, который выкладывал SegaBoy.
    Пересчитал коэффициенты для Вектора. Вот что получилось. С исходником.
    KTSerg, огромное спасибо!!

  6. #5

    Регистрация
    12.11.2009
    Адрес
    Москва
    Сообщений
    403
    Спасибо Благодарностей отдано 
    50
    Спасибо Благодарностей получено 
    90
    Поблагодарили
    66 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    Вот это да ?!?!
    Всё-таки кажется как-то попроще это должно быть.
    Подождём ответ SegaBoy, узнаем что он делает с этим Pb.
    Всё верно x-code расписал. Из описания выше формула получается следующая:
    Код:
    noteFreq * 2 ^ ((pitchBend - 8192) / 8191 * halfToneNum / 12)
    где noteFreq это базовая частота ноты к которой применяем изменение pitchBend, а halfToneNum это количество полутонов на которое можно сдвинуть высоту ноты вверх или вниз. В описании выше оно указано как ±2, но может быть от ±2 до ±12 (я как раз использую ±12, правда я уже не помню как пришёл именно к такому значению).

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Бейсики для Вектора-06Ц и клонов
    от ivagor в разделе Вектор
    Ответов: 696
    Последнее: 25.10.2025, 02:34
  2. Картотека ПО для Вектора-06ц
    от svofski в разделе Вектор
    Ответов: 719
    Последнее: 04.04.2024, 11:13
  3. Восстановление Вектора-06ц
    от Daniil Chislov 86 в разделе Вектор
    Ответов: 100
    Последнее: 11.03.2021, 00:23
  4. Ответов: 198
    Последнее: 26.04.2020, 13:05
  5. Ответов: 58
    Последнее: 06.07.2019, 23:56

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •