Скрытый текст
ZX Spectrum +2 +divIDE + BDI
Profi 1024k plus
Scorpion ZS-256 Turbo+
ZX Evolution rev.C2+NeoGS+SDCard HxC Floppy Emulator
ZX Evolution rev.C2+ZXM-SoundCard Extreme+ZXM-MoonSound
AVR ZX Spectrum V2.0
Орион 128[свернуть]
С ним всё очень-очень сложно. Это чип который все данные берет из памяти процессора по PCI шине, у него нет возможности подключить локальную память для семплов.
Если говорить про wavetable синтез, то YMF754 аппаратно его делает, но при этом очень сильно загружает PCI шину, а центральный процессор там парсит MIDI поток и делает пост обработки (эффекты). Исходников драйверов XG от Ямахи нет. FM синтез в этом чипе заявлен тоже аппаратный, но с передискретизацией в 44.1 кГц.
YMF704 это на одном чипе OPL4 (YMF278) + 1MB ROM + UART + микроконтроллер который парсит MIDI поток. Вроде как можно использовать только пару OPL4+ROM и не обращать внимание на остальные дополнения.
Не знаю. Мне больше интересен сам зоопарк чипов, что умеют извлекать звуки, чем задача по их подключению к Спекки. Сделать реплику чипа на другом, эмулировать его - вот это меня привлекает. Каждому своё.
Как раз про wavetable музыку уже не скажешь, что она "имеет индивидуальное звучание", там всё звучание уже в основное определяется семплами и только малая часть особенностью реализации конкретного синтезатора/плеера. А если говорить про постобрабоку и эффекты, то там со стандартизацией хуже чем у midi, поэтому звучать также будет поразному...
Трекерные модули, если не брать в расчет хранение описаний инструментов (семплы и/или параметры FM синтеза), это просто более наглядный и в тоже самое время более компактный способ хранения той же информации (событий), что содержится в midi файлах.
Но в тоже самое время MIDI это всё же группа каких-никаких, но всё же стандартов, и очень много аппаратуры таким способом управляется, есть множество софта. А трекерные модули, это множество различных стандартов (зачастую весьма плохо задокументиролванных), расчитанные под конкретные плееры, под конкретную аппаратуру.
ZXM-MoonSound это определенно крутой проект. Даже и представить не могу, что можно ещё круче сделать, особенно если смотреть только на кошерные Ямахи. Хотя в стиле ретро загружать 1 Мбайт дополнительных семплов с плёнки тоже было бы не очень здорово. Поэтому, я за то, чтоб семплами реализовывать только отдельные звуки, которые иначе плохо получаются.
Я бы помог но с программированием у меня чуть более чем "никак" тем кто силен в этом рекомендовал бы начать с MOD плеера.
Скрытый текст
ZX Spectrum +2 +divIDE + BDI
Profi 1024k plus
Scorpion ZS-256 Turbo+
ZX Evolution rev.C2+NeoGS+SDCard HxC Floppy Emulator
ZX Evolution rev.C2+ZXM-SoundCard Extreme+ZXM-MoonSound
AVR ZX Spectrum V2.0
Орион 128[свернуть]
Всё же доработка NeoGS - это задача для программера-железячника. А таковые как правило предпочитают заниматься своими проектами. Вот потому-то воз и ныне там. Но, тем не менее, разработчики NeoGS по большему счёту свою задачу выполнили. Дали народу возможность приобрести новодельную GS-совместимую карточку с дополнительными плюшками. За что группе NedoPC огромное спасибо.
А в случае с ZXM-MoonSound нужен только программист, которые либо дизассемблирует готовые прожки и адаптирует их под Спекки, либо разберётся с мануалами и напишет свой плеер.
Ежели таковые профи-спецы в этой теме есть, от всего сердца прошу помочь Мику в наполнении железки софтом.
Раз уж чипов YMF278 у японца ещё много, в случае добротной софтовой поддержки MoonSound, есть большая вероятность, что производство карты может продолжить MV1971. Я же, увы, смогу лишь заняться бета-тестом и баг-репортом, ибо в программировании не силён.
Это тоже классное направление и тоже нужное!
Трекерные модули я упомянул лишь потому, что ZXM-MoonSound тоже сможет большинство из них проиграть. Да и легендарная Амига ими известна. А это тоже ретро.
И да, мне не попадалось практически ни одного коряво звучащего трекерного модуля (мог не понравится лишь жанр либо не подойти плеер), а вот мидишек, написанных как курица лапой, встречал с избытком.
Дык метр сэмплов уже в пзу Мунсаунда прошит, зачем их подгружать? А так-то да, меня в этой карточке тоже больше интересует FM музыка, или FM+PCM (есть вроде на MSX такие модули).
А с чем сложности то? Я просто не понял пока... Вроде по регистрам специально сделали совместимым, код плеера должен работать, только выдели его из какой-нибудь игры (я просто никогда с MSX не имел дел, не знаю какие там особенности).
И почему обязательно от MSX отталкиваться? Зачем дизассемблировать что-то, если есть Си код с комментариями? OPL4 ведь из мира PC пришел, там тоже есть его поддержка, вот в linux весьма хорошо синтез и через opl3 и через opl4 поддержан, инструменты в ПЗУшке YRW801 расписаны.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Ну как бы есть музыка, которая написана для MSX и спрашивается причем тут линукс и PC, если плеер на MSX.
Вот к примеру на MSX есть файлы MWM и MWK. Спрашивается как может помочь линукс и Си с комментариями?
Насколько я вот понял MWK зягоняются в внешнее ОЗУ YMF278 и представляют собой по всей видимости любительские сэмплы, а MWM непосредственно сама музыка.
Если не так сложно по вашему, ну запилите что ли плеер или демку.
Скрытый текст
ZX Spectrum +2 +divIDE + BDI
Profi 1024k plus
Scorpion ZS-256 Turbo+
ZX Evolution rev.C2+NeoGS+SDCard HxC Floppy Emulator
ZX Evolution rev.C2+ZXM-SoundCard Extreme+ZXM-MoonSound
AVR ZX Spectrum V2.0
Орион 128[свернуть]
Ну это судьба большинства новодельных плат.
Меня уже устраивает то, что под TS-конфой из коробки отлично крутятся mod'ы. Да и в новых демках, где GS поддерживается, звук есть. SAA, кстати, тоже под TS-конфой зазвучал. Будут портированы плееры под ZXM-MoonSound с MSX - уже большое дело! А дальше видно будет.
1) Исходники на Си помогут проигрывать midi файлы используя сэмплы через Wavetable синтезатор OPL4. Ну и понять какие-то моменты в коде того же MWM плеера, - по двум книгам всегда легче учиться.
2) Если требуется плеер именно для воспроизведения MWM на z80, то зачем дизассамблировать какой-то бинарник, если есть исходники? Хотя я может быть туплю, но вот смотрю я на WAVEDRV.LZH, там .asm файлы, правда в каком-то жутком формате (какой-то MSX ассемблер Compass что-ли?). В общем посмотрел на этих файлы, быстро на коленке сделал скрипт для конвертации, в итоге что-то более менее читаемое получилось (хотя и кажется будто некоторые строки переставлены или это у авторов стиль такой размазывать комментарии по коду, плюс там конце похоже какая-то важная информация, но возиться не стал), вот фрагменты:
Я прикладываю архив с тем, что ковырял (простите за unix-овые переводы строк), но определенно нужно использовать не эти файлы, а обратиться к знающим MSX людям, чтоб они идентифицировали используемый ассемблер и перегнали его в текстовый формат. Ибо повторюсь, я MSX файлы вот-вот только впервые увидел.Код:basic.txt ... --- Load MWM file --- ; Note: The routine below is a bit complex because it supports ; songs > 16K. However, if you know that your song will always be < 16K you ; can simplify it a lot: ; - read the header and trash it! ; - read the rest of the file ; - modify the play_nextpos routine so that 3 is added to the pattern address mbload: ld a,(DOSinit) or a jp z,initerror ld ix,04c64h call basic_call push hl ld ix,067d0h ; get filename call basic_call push hl pop ix call build_fcb ; build right FCB call curbank_FE push af call open_file ; open song file or a jp nz,loderr ld hl,songdata_bank1 ; select first song bank ld (load_bank),hl ld a,(hl) call selbank_FE ... --- Load MWM file --- ; Note: The routine below is a bit complex because it supports ; songs > 16K. However, if you know that your song will always be < 16K you ; can simplify it a lot: ; - read the header and trash it! ; - read the rest of the file ; - modify the play_nextpos routine so that 3 is added to the pattern address mbload: ld a,(DOSinit) or a jp z,initerror ld ix,04c64h call basic_call push hl ld ix,067d0h ; get filename call basic_call push hl pop ix call build_fcb ; build right FCB call curbank_FE push af call open_file ; open song file or a jp nz,loderr ld hl,songdata_bank1 ; select first song bank ld (load_bank),hl ld a,(hl) call selbank_FE ... ;------------------------------------ ;--- Set OPL4 for SRAM read/write --- ;------------------------------------ ; In: EHL = SRAM address ; Out: C = wave data port set_opl4_wrt: ld c,2 ; enable SRAM access ld a,10001b call opl4_out_wave inc c ld a,e and 111111b call opl4_out_wave inc c ld a,h call opl4_out_wave inc c ld a,l call opl4_out_wave ld a,6 out (WVIO),a ld c,WVIO + 1 ret ... start_mus_cnt: di ld hl,0fd9Ah ld de,old_int ld bc,5 ldir ; save interrupt hook ld a,(0f342h) ld (Page_nmb),a ld hl,opl4_int_han ld de,0fb04h ld bc,9 ldir ld hl,0FD9Ah ;Init On Hook 0FD9Ah a Jump to empty RS232 area ld (hl),0C3h ; JP inc hl ld (hl),004h ; 04 inc hl ld (hl),0FBh ; FB ld a,2 out (0c4h),a ld a,(xhzequal) or a jr z,Speed60Hz cp 1 jr nz,Speedxhz ld a,248 jr Speedxhz Speed60Hz: ld a,208 Speedxhz: neg out (0c5h),a opl4_wait ; wait if Turbo-R ld a,4 out (0c4h),a opl4_wait ; wait if Turbo-R ld a,00100001b out (0c5h),a ei ret opl4_int_han: in a,(0C4H) ; Put this shit in the RS232 area rla ; this is to prevent 50 or 60 CALLFs ret nc ; to the replayer rst 030h Page_nmb: db 0 dw play_int ret ... ;--- initialise OPL4 registers --- init_opl4: ld a,5 out (FMIO+2),a opl4_wait ; wait if TURBO R ld a,3 out (FMIO+3),a ld c,2 ld a,10000b jp opl4_out_wave ; init Wave ROM stuff ...
Я и не говорю, что это легко. Просто пытаюсь в меру сил помочь, как могу...
У меня нет ни OPL4 карты (ни под спековский ZX Bus, ни под ISA), нет и куда её вставлять (останки своего давно неработающего своего Ленинграда-2 я заботливо иногда с одной полки переставляю на другую).
Так что на такой подвиг я пока не готов, но потихоньку зрею. Всему своё время...
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)