User Tag List

Страница 36 из 45 ПерваяПервая ... 323334353637383940 ... ПоследняяПоследняя
Показано с 351 по 360 из 443

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

  1. #351

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

    По умолчанию

    Эта невероятная Pb. Что-то я запутался в её вычислении.

    К примеру в миди тексте дано следующее:
    77 On ch=2 n=76 v=127
    77 Pb ch=2 v=8122

    Что означает в канал номер 2 загрузить ноту 76 + применить к этой ноте Pb

    Я так понял параметр v=8122 (уровень громкости) всё же учитывается при конверсии ?
    Иначе на основании чего вычислять Pb ?

    По инструкции:
    1. Это число нужно преобразовать в диапазон от -1 до 1.
    0 - это минус один 8192 - это ноль 16384 - это один
    Всё, что между этими точками - вещественные числа в диапазоне от -1 до 1.

    Т.е. всё что от 0 до 8191 это Pb=-1 ?
    А если ровно 8192 то это Pb=0 ?
    А всё что от 8193 до 16384 это Pb=1 ?

    И тогда получается что в данном случае Pb=-1 т.к. v=8122 т.е. меньше 8192

    Правильно ли я понял ?

    -----------------------------------
    Цитата Сообщение от SegaBoy Посмотреть сообщение
    Всё верно x-code расписал. Из описания выше формула получается

    следующая:
    Код:
    noteFreq * 2 ^ ((pitchBend - 8192) / 8191 * halfToneNum / 12)
    где noteFreq это базовая частота ноты к которой применяем изменение pitchBend, а halfToneNum это

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

    указано как ±2, но может быть от ±2 до ±12 (я как раз использую ±12, правда я уже не помню как

    пришёл именно к такому значению).

    noteFreq * 2 ^ ((pitchBend - 8192) / 8191 * halfToneNum / 12)

    noteFreq это понятно взять нужно из таблицы частот нот
    pitchBend=-1 (в данном примере)
    А как понять чему равен halfToneNum ? ±12
    Он зависит от значения Pb ?
    т.е. если Pb=0 тогда соответственно halfToneNum=0
    если Pb=1 тогда соответственно halfToneNum=12
    если Pb=-1 тогда соответственно halfToneNum=-12

    И тогда получается что в данном случае halfToneNum=-12 т.к. Pb=-1

    Правильно ли я понял ?
    -------------------------------------

    В результате получается
    если Pb=0 тогда воздействия на ноту никакого не будет
    если Pb=1 тогда если например была нота до#2-й октавы то она станет до#3-й октавы
    если Pb=-1 тогда если например была нота до#2-й октавы то она станет до#1-й октавы

    Т.е. при конверсии алгоритм такой:
    если Pb=0 тогда пропускаем т.к. ничего не меняется
    если Pb=1 тогда номер ноты=номер ноты+12
    если Pb=-1 тогда номер ноты=номер ноты-12

    Если это так то зачем нужны сложные формулы, если вместо Pb можно было сразу номер ноты записать.

    ====================================
    Ещё вопрос определения ноты.

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

    Скрытый текст


    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 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    [свернуть]
    Последний раз редактировалось metamorpho; 14.08.2020 в 09:14.

  2. #352

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

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    Т.е. всё что от 0 до 8191 это Pb=-1 ?
    А если ровно 8192 то это Pb=0 ?
    А всё что от 8193 до 16384 это Pb=1 ?
    Нет. Я не зря писал уточнение, что при приведении к диапазону -1..+1 получается вещественное число.

    При исходной команде
    77 Pb ch=2 v=8122
    получается

    (8122 - 8192) / 8191 ~= -0,0085
    -0,0085 * 12 / 12 = -0,0085
    2^-0,0085 ~= 0,9941

    Это и есть наш искомый множитель частоты

    - - - Добавлено - - -

    Цитата Сообщение от metamorpho Посмотреть сообщение
    Как считаются ноты ?
    Т.е. n=1 (из миди текста) это соответствует какой ноте из таблицы для Вектора ?
    n=1 это "до" контр октавы или это "си" 4-й октавы ?
    Если правильно читаю спецификацию MIDI, то n выражается в полутонах, 60 соответствует ноте "до" первой октавы.
    Соответственно, 61 - это до диез первой октавы, 59 - это си малой октавы (помним, что между "си" предыдущей октавы и "до" следующей всего один полутон)
    Последний раз редактировалось x-code; 14.08.2020 в 10:22.

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

    metamorpho(14.08.2020)

  3. #353

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

    По умолчанию

    Цитата Сообщение от x-code Посмотреть сообщение
    Нет. Я не зря писал уточнение, что при приведении к диапазону -1..+1 получается вещественное число.
    При исходной команде получается
    (8122 - 8192) / 8191 ~= -0,0085
    -0,0085 * 12 / 12 = -0,0085
    2^-0,0085 ~= 0,9941
    Это и есть наш искомый множитель частоты

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

    Цитата Сообщение от x-code Посмотреть сообщение
    Если правильно читаю спецификацию MIDI, то n выражается в полутонах, 60 соответствует ноте "до" первой октавы.
    Соответственно, 61 - это до диез первой октавы, 59 - это си малой октавы (помним, что между "си" предыдущей октавы и "до" следующей всего один полутон)
    В Векторовской статичной таблице нот всего 84 ноты и такие данные как-то не совместимы с этой таблицей. И что тогда делать ?

  4. #354

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

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    значит нужно для каждой мелодии делать свою специфическую таблицу нот (частот) учитывая все варианты Pb.
    Я бы в результат конверсии сразу записывал готовые предрасчитанные значения делителя частоты для таймера.

  5. #355

    Регистрация
    22.03.2018
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    1,410
    Спасибо Благодарностей отдано 
    91
    Спасибо Благодарностей получено 
    178
    Поблагодарили
    138 сообщений
    Mentioned
    21 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Кроме музыки, как насчет процедурных звуков... "пию...бубух.. и вжжжж".. очень интересно
    БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO

  6. #356

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

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    Тогда получиться частота, которой нет в статичной Векторовской таблице нот
    и значит нужно для каждой мелодии делать свою специфическую таблицу нот (частот) учитывая все варианты Pb.
    В Векторовской статичной таблице нот всего 84 ноты и такие данные как-то не совместимы с этой таблицей. И что тогда делать ?
    У меня для каждой мелодии своя таблица - не одна какая-то общая или универсальная. Алгоритм такой - сначала добываем все задействованные ноты и применяем к ним Pb - столько и какие есть в конкретной мелодии. Не все какие бывают в природе, а только те что нужны для конкретного случая. Получаются разные частоты. Из этих частот вычисляем нужные константы - просто делим частоту каналов ВИ53 на значение частоты "нот". Затем можно оставить эти значения, но они двухбайтовые и часто повторяются. Поэтому и был выбран вариант с таблицей "нот" - хотя в данном случае правильнее будет таблицей констант.

    Этот пользователь поблагодарил SegaBoy за это полезное сообщение:

    metamorpho(15.08.2020)

  7. #357

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

    По умолчанию

    Цитата Сообщение от SegaBoy Посмотреть сообщение
    У меня для каждой мелодии своя таблица - не одна какая-то общая или универсальная. ... Поэтому и был выбран вариант с таблицей "нот" - хотя в данном случае правильнее будет таблицей констант.
    Кстати, понятно, что это универсальный алгоритм (отдельная таблица для каждого канала), и он не оптимален во всех случаях.
    В тех двух мелодиях, что были выложены, и в которых я пересчитывал коэффициенты для Вектора, таблица второго канала почти полностью совпадала с таблицей первого канала. За небольшим исключением. И в данных случаях было бы компактнее сделать одну таблицу для всех трёх каналов, чтобы не дублировались коэффициенты.
    Хотя это мелочь, (при общей таблице) экономилось-бы всего около десятка байт.

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

    metamorpho(15.08.2020)

  8. #358

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

    По умолчанию

    Как оказалось на Векторе отсутствуют какие-либо музыкальные редакторы. Поэтому в результате создания собственного плеера для музыки под ВИ53 появилось желание сделать хотя бы простенький нотный 3-х канальный музыкальный редактор, который мог бы выдавать код для вставки в ассебмлер. Но на его создание нужно время.
    Попробовал создать конвертор текстового-миди файла, но тема оказалась не из лёгких.
    Сделал простенький конвертор для миди-текстов и после конвертации у меня получилась "мелодия" не для слабых нервов
    Оказалось это не очень похоже на автоматическую конвертацию из одного формата в другой. При конвертации Midi-текста нужно учесть много разных моментов + нужна ручная доработка отдельных моментов Midi мелодий. На создание качественного конвертора нужно время.
    Поэтому на данный момент решил обратиться к профессионалу конвертации Midi для ВИ53- к SegaBoy.
    SegaBoy, почитал твою тему про конвертацию и обнаружил что у тебя есть вот такая мелодия "Chōjin Sentai Jetman (04) Area C".
    Есть ли у тебя её исходник на asm ? Можно ли мне её использовать в игре ?
    И есть ли у тебя ещё какие-либо (не представленные в твоей теме про конвертацию) мелодии конвертированные тобой под Ви53 ?
    Последний раз редактировалось metamorpho; 15.08.2020 в 15:56.

  9. #359

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

    По умолчанию

    Цитата Сообщение от KTSerg Посмотреть сообщение
    Кстати, понятно, что это универсальный алгоритм (отдельная таблица для каждого канала), и он не оптимален во всех случаях.
    В тех двух мелодиях, что были выложены, и в которых я пересчитывал коэффициенты для Вектора, таблица второго канала почти полностью совпадала с таблицей первого канала. За небольшим исключением. И в данных случаях было бы компактнее сделать одну таблицу для всех трёх каналов, чтобы не дублировались коэффициенты.
    Хотя это мелочь, (при общей таблице) экономилось-бы всего около десятка байт.
    Использовал алгоритм что был под рукой - он для особо сложных случаев (типа Silver Surfer), где не хватает 256 значений на три канала и нужно на каждый канал по отдельной таблице. А так в старых версиях, на такие «простые» мелодии я использовал одну таблицу на три канала.

    - - - Добавлено - - -

    Цитата Сообщение от metamorpho Посмотреть сообщение
    SegaBoy, почитал твою тему про конвертацию и обнаружил что у тебя есть вот такая мелодия "Chōjin Sentai Jetman (04) Area C".
    Есть ли у тебя её исходник на asm ? Можно ли мне её использовать в игре ?
    И есть ли у тебя ещё какие-либо (не представленные в твоей теме про конвертацию) мелодии конвертированные тобой под Ви53 ?
    Я Джетмана конвертировал под аппаратную доработку с управлением уровня громкости. Попробую сделать в обычном режиме, тогда выложу результат и исходники.
    Из не выложенных есть ещё Silver Surfer и ещё что-то.
    Последний раз редактировалось SegaBoy; 17.08.2020 в 18:17.

    Этот пользователь поблагодарил SegaBoy за это полезное сообщение:

    metamorpho(16.08.2020)

  10. #360

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

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    Эта невероятная Pb. Что-то я запутался в её вычислении.
    Попробуй пока вообще не использовать Pb. Используй только On и Off. Например для super mario этого вполне достаточно для начала.

    Этот пользователь поблагодарил SegaBoy за это полезное сообщение:

    metamorpho(18.08.2020)

Страница 36 из 45 ПерваяПервая ... 323334353637383940 ... ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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