Tronix(01.03.2022)
Не, я боюсь не вывезу, к сожалению. Пока решил начать с малого, а именно поиграть MIDI плеером DOSMID - скачал его последние исходники, понемногу добавил тональные каналы и один канал ударных на пробу. Пока получилось как то так:
https://soundcloud.com/tronix286/l014mp3
В тональных каналах попытался использовать полосовые фильтры. Для каждой ноты:
вычисляю по MIDI ноте ее октаву (всего 12);
пересчет диапазона 1..12 в 1..7; map(octave,1,12,1,7);
Устанавливаю биты D0..D2 микшера канала как 7 - map(octave,1,12,1,7); Значение задом на перед, потому что младший бит D0 в микшере - это высокие частоты, а бит D2 - низкие. Нам надо перевернуть, поэтому от 7 отнимаю значении, получается значение для записи в порт микшера канала.
Бит D3 (усиление +6dB) сейчас всегда включен. Не знаю, в зависимости от каких условий его можно менять. От громкости, наверное, получается у нас два уровня громкости на канал. Может прикручу чуть позже, щаз на максимум
Бит D4 (плавная атака и плавное затухание) - не знаю как использовать. Щаз выключен постоянно.
Ну и канал ударных. Сейчас использую только седьмой (в агате шестой) канал ударных, сделал тоже по аналогии с обычными нотами -
вычисляю октаву, которая идет в MIDI-сообщении для MIDI канала 10 (percussion), так же пересчитываю диапазон из 1..12 в 1..7, так же отнимаю от 7 получившееся значение, что бы перевернуть биты, так как там частота так же идет с бита D2 к D0, и пишу в микшер канала семь (в агате 6).
Бит D3 (продолжительность) - не знаю как использовать, пока в нуле всегда.
Ну и пока не знаю как использовать еще один канал ударных, там наверное MIDI посылает sys-ex для смены инструмента на канале 10 (percussion), их надо отлавливать и в зависимости от тогда уже переключаться на каналы ударных на муз ячейке... Попробую потом..
Вообщем, по поводу DOSMID немного разобрался с ударными. На 10 контроллере прилетают MIDI сообщения, где нота - это тип ударных, в соответствии с General Midi 1:
Скрытый текст
Код:Key# Note Drum Sound Key# Note Drum Sound 35 B0 Acoustic Bass Drum 59 B2 Ride Cymbal 2 36 C1 Bass Drum 1 60 C3 Hi Bongo 37 C#1 Side Stick 61 C#3 Low Bongo 38 D1 Acoustic Snare 62 D3 Mute Hi Conga 39 Eb1 Hand Clap 63 Eb3 Open Hi Conga 40 E1 Electric Snare 64 E3 Low Conga 41 F1 Low Floor Tom 65 F3 High Timbale 42 F#1 Closed Hi Hat 66 F#3 Low Timbale 43 G1 High Floor Tom 67 G3 High Agogo 44 Ab1 Pedal Hi-Hat 68 Ab3 Low Agogo 45 A1 Low Tom 69 A3 Cabasa 46 Bb1 Open Hi-Hat 70 Bb3 Maracas 47 B1 Low-Mid Tom 71 B3 Short Whistle 48 C2 Hi Mid Tom 72 C4 Long Whistle 49 C#2 Crash Cymbal 1 73 C#4 Short Guiro 50 D2 High Tom 74 D4 Long Guiro 51 Eb2 Ride Cymbal 1 75 Eb4 Claves 52 E2 Chinese Cymbal 76 E4 Hi Wood Block 53 F2 Ride Bell 77 F4 Low Wood Block 54 F#2 Tambourine 78 F#4 Mute Cuica 55 G2 Splash Cymbal 79 G4 Open Cuica 56 Ab2 Cowbell 80 Ab4 Mute Triangle 57 A2 Crash Cymbal 2 81 A4 Open Triangle 58 Bb2 Vibraslap[свернуть]
Понятно, что все типы ударных воспроизвести не получится, но основные, типа бочки, тарелок - нужно подобрать по приблизительному звучанию двух имеющихся каналов муз ячейки и их битами управления и сделать сопоставление. Пока сделал кое-как, по-времянке, не совсем в соответствие с инструментами. Скоро выложу этот DOSMID с поддержкой музыкальной ячейки на страницу проекта, как есть. Возможно, в дальнейшем потихоньку буду править.
Зато, попытался сделать проигрыватель оригинальных .MUS файлов с Агата. Сначала хотел переписать его начисто, а потом подумал - а что если взять уже имеющийся плеер под Агат, благо стараниями avivanov76 он дизассемблирован и хорошо комментирован. Ну и взял я бинарный файл плеера PLAYERR.O в машинных кодах 6502 процессора, взял ядро эмулятора M6502 от Marat Fayzullin, ну и собрал как мог все во-едино. То есть запускается эмулятор CPU 6502, в нем крутиться оригинальный PLAYERR.O с Агата, а когда он обращается к адресам в памяти, в которых в Агате сидит муз ячейка, я делаю перенаправление уже на PC-шные порты воода-вывода. Ну и таймер используется от PC, а не на плате муз ячейки (потому что в PC версии на плате его нет). И вроде бы даже что-то получилось:
- https://soundcloud.com/tronix286/ottawanmus - пример звучания мелодии через этот проигрыватель
Возможно есть еще косяки в таймингах, но попробую немного с ними поиграться в ближайшее время. Еще как-то мне не очень нравится последний ударный канал, который типа "тарелки", в Агате немного по-другому звучит. Может номинал какой-то не правильно впаял, буду перепроверять на плате.
Этот плеер так же скоро выложу как есть на страницу проекта.
Все-таки беспокоил меня, как уже писал ранее, второй канал ударных (тарелки) - уж очень он у меня "паровоз" напоминал. Решил сверить номиналы впаянных деталей, и точно - нашел 3 своих ошибки, три конденсатора были не тех номиналов запаяны. Наверное спешил, да еще плюс ко всему этот канал последним паял и видать совсем притомился. Перепаял в соответствии со схемой. Стало вроде получше, более похоже на оригинал из Агата.
- https://soundcloud.com/tronix286/ottawan-2nd-try - тут можно послушать что получилось.
На слух еще вроде-бы ощущаю некоторую проблему с таймингами выполнения 6502 кода плеера в эмуляторе, надо будет попробовать доразобраться...
ALS(06.03.2022)
Потихоньку МузЯчейка начинает обрастать софтом:
Встроил в программу SoftMPU сэквенсор MIDI для музячейки. Это позволило запускать почти любые игры, в которых в настройках звука можно выбрать "General MIDI / MPU401" в качестве звуковой карты. Например, вполне успешно поиграл со звуком в Heroes 2, Warcraft 2, The Increditable Machines 1-2, Lotus, Stunts, Monkey Island, Prince of Persia и тд. Небольшое видео, снятое на балтику девятку (прошу понять и простить):
А вообще, конечно, это очень примитивный сэквенсор, который сейчас реализован и в DOSMID, и теперь вот в SoftMPU. Фактически, я просто играю с нужной частотой ноты, без всяких эффектов, типа там экспрессии, вибрато, детюна и прочего прочего, чего бы можно было бы сделать. Единственное, что сейчас реализовано из "фишек" - так это pitch band'ы. Барабаны расставлены кое-как, можно сказать "от балды", без всякого соответствия General MIDI - регистры управления каналами ударных муз ячейки. Громкость никак не управляется, хотя ей можно управлять через полосовые фильтры и бит громкости в каждом микшере каналов. Бит "атаки" так же никак не используется, а он есть в муз ячейки. И тд и тп.
Вообщем, весь потенциал муз ячейки этот софт не раскрывает. Но, пока только так, увы, я не волшебник...
ALS(12.03.2022), randomizer(08.03.2022), Willy(26.03.2025)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
А тем временем shiru8bit запилил первую версию трекера с интересным названием Yach*PMS для МузЯчейки:
https://shiru.untergrund.net/software.shtml
Есть вендовая версия со встроенной эмуляцией, есть DOS-версия для реальной железяки, есть сорцы.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)