Welcome, Guest. Please login or register.


Author Topic: Zeneprogramozás (Read 410648 times)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Zeneprogramozás
« Reply #195 on: 2011.September.16. 22:36:37 »
kéne egy olyan program, amivel a Dave összes hangparaméterét lehetne állítgatni
Ez milyen lenne pontosan?
Elméletileg ki lehet próbálni minden lehetõséget, pl. gyûrûmoduláció, és az összes torzításfajtát kipróbálni mindkét csatornán, hogyan hangzik. És ugyanezt a felül- és aluláteresztõ szûrõkkel is.
A napokban nézegettem a gépkönyvben a hangfeltételeknél a STYLE paramétert, és pl. a SOURCE 3-nál teljesen más értékeket kell megadni, mint a többi csatornán. Így pl. a SOUND SOURCE 3,STYLE 1/2/3/4/8/12/16-nak is van hatása, ez eddig fel se tûnt.

A Spectrumhoz és az átírásokhoz lövésem sincs, de SOURCE 3-nál a STYLE paraméter lehet 32 és 64 is, aminek egy másik csatornával együtt van értelme. Ha a másik csatornán nincs torzítás, akkor mellette a 3. csatornán ugyanaz a hang torzítva is meg fog szólalni (a másik csatornán megadott változtatható hangmagassággal), valami ilyesmi rémlik. Ezzel nem oldható meg az a probléma, ami Spectrum programok átírásánál volt, hogy egy csatornán egyszerre szól tiszta hang és zaj is? Bár ha meg lehetne, már biztos feltûnt volna. (És lehet, az teljesen más, mert ehhez a részéhez egyáltalán nem értek.)
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Zeneprogramozás
« Reply #196 on: 2011.September.17. 16:37:52 »
Ez milyen lenne pontosan?
Ha jól nézem ezeket lehet állítgatni:
-4x bal/jobb hangerõ
-3x 12 bites n érték a frekvencia beállításhoz, 2 bites érték a polinom számlálós torzításhoz, 1 bit a felüláteresztõ szürõhöz, 1 bit a gyûrûmodulációhoz
- zajcsatornán 2 bit a frekvencia, 2 bit a polinom számláló, 1 bit még valami polinom izé, 1 bit felül,1 bit aluláteresztõ szürõ, 1 bit gyûrûmoduláció
- 3x1bit a hangcsatornák indítására, 2x1bit a DA kapcsolására
Ha jól számolom ez 31 állítható paraméter, ezt kéne valami okos felületre szervezni. Amik csak pár bitesek, azokat lehetne egy gombbal kezelni, ami bonyolultabb, mint pl a frekvencia n, oda kéne kézzel beírás, és mondjuk joystickkal finomhangolás is.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Zeneprogramozás
« Reply #197 on: 2011.September.17. 20:39:33 »
DAVE birizgálása BASIC-bõl: a probléma az, hogy az EXOS hang eszköze folyamatosan felülírja a DAVE hangregisztereket, ennek könnyû elkerüléséhez EPDOS-os konfiguráció kell, :CDEV SOUND paranccsal kikapcsoljuk a SOUND eszközt, majd még a billentyûhangot kapcsoljuk ki.
Így már nyugodtan lehet OUT utasításokkal piszkálni a hangregisztereket.
pl: OUT 168,31 a 0-ás hangcsatorna bal oldali hangerejét maxra állítja, ezután ha OUT 160-nal kiküldünk egy értéket, máris megszólal egy hang (minél nagyobb a szám, annál mélyebb).

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Zeneprogramozás
« Reply #198 on: 2011.September.18. 19:27:10 »
Ha jól nézem ezeket lehet állítgatni:
-4x bal/jobb hangerõ
-3x 12 bites n érték a frekvencia beállításhoz, 2 bites érték a polinom számlálós torzításhoz, 1 bit a felüláteresztõ szürõhöz, 1 bit a gyûrûmodulációhoz
- zajcsatornán 2 bit a frekvencia, 2 bit a polinom számláló, 1 bit még valami polinom izé, 1 bit felül,1 bit aluláteresztõ szürõ, 1 bit gyûrûmoduláció
- 3x1bit a hangcsatornák indítására, 2x1bit a DA kapcsolására
Ha jól számolom ez 31 állítható paraméter, ezt kéne valami okos felületre szervezni. Amik csak pár bitesek, azokat lehetne egy gombbal kezelni, ami bonyolultabb, mint pl a frekvencia n, oda kéne kézzel beírás, és mondjuk joystickkal finomhangolás is.

Itt egy próbálkozás ilyen célú PC-s programra. A használhatóságán valószínűleg lehetne még javítani, és lehet, hogy hibák is vannak, de valamennyire működik:
  [ Guests cannot view attachments ]

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Zeneprogramozás
« Reply #199 on: 2011.September.18. 19:53:25 »
Itt egy próbálkozás ilyen célú PC-s programra. A használhatóságán valószínûleg lehetne még javítani, és lehet, hogy hibák is vannak, de valamennyire mûködik:
Nagyon profi!!!

A potik tekergetése közben az merült fel bennem, hogy talán Race-Ace-ban használták ezeket a spéci Dave funkciókat?

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Zeneprogramozás
« Reply #200 on: 2011.September.19. 00:09:04 »
Itt egy próbálkozás ilyen célú PC-s programra.
Nagyon tetszik!!
A SYNC-nek nem tudom még, mi az értelme, mert amúgy is egyszerre szól az összes csatorna.
Egy hibát találtam eddig: SOUND STYLE 16, PITCH 65 másképp szól, mint az emulátoron.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Zeneprogramozás
« Reply #201 on: 2011.September.19. 08:56:11 »
A SYNC-nek nem tudom még, mi az értelme, mert amúgy is egyszerre szól az összes csatorna.
Az arra való, hogy kikapcsolod õket, aztán beállítod a paramétereket, majd egyszerre indítod. Pl gyürûmodulációs izé közben találkoztam olyannal, hogy másként szólt, ha csak úgy menet közben lett odatekergetve valami értékek, mintha ugyanazon értékekkel együtt vannak indítva. Nyilván esetleges programban való felhasználásnál az együtt indítás az érdekes, hiszen az mindig ugyanazt a hangot fogja eredményezni, míg az egymás mellé véletlenszerû idõpontban kerülõ paraméterek hatását kb lehetetlen reprodukálni.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Zeneprogramozás
« Reply #202 on: 2011.September.19. 14:17:12 »
Egy hibát találtam eddig: SOUND STYLE 16, PITCH 65 másképp szól, mint az emulátoron.

Ez az eltérő kerekítés miatt van. Próbáld a PITCH értékét 64.99-re módosítani IS-BASIC-ben, és akkor ott is ugyanaz a hang lesz (vagy éppen semmilyen hang, mert ez is olyan frekvencia, amivel a 4 bites torzítással nem mindig van hallható hang). Tulajdonképpen a BASIC számol rosszul, és a teszt program a pontos:
  - PITCH = 65
  - frekvencia = 440 * 2 ^ ((65 - 46) / 12) = 1318.5102 Hz
  - DAVE frekvencia kód = 125000 / 1318.5102 - 1 = 93.8587, a legközelebbi egész 94
  - BASIC-ben (a debugger szerint) 94 helyett 93 a frekvencia kód
A BASIC (illetve pontosabban az EXOS SOUND: kezelője) valószínűleg táblázattal konvertál, amelyben csak korlátozott számú frekvencia található, a többit ezekből számítja ki, kevésbé pontosan.

Offline Mayer Gábor

  • EP fan
  • *
  • Posts: 216
  • Country: hu
Re: Zeneprogramozás
« Reply #203 on: 2011.September.19. 19:05:28 »
De miért kerekít másképp az emulátor?

Ez az eltérő kerekítés miatt van.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Zeneprogramozás
« Reply #204 on: 2011.September.19. 19:15:09 »
De miért kerekít másképp az emulátor?

Nem az emulátor kerekít máshogy, hanem az EP ROM szoftvere, amelyben - a gép hardverének korlátai miatt - a pontosságot "feláldozták" a jobb sebesség érdekében. Természetesen lehetne azzal próbálkozni, hogy a fenti program pontosan ugyanúgy legyen pontatlan, mint a BASIC, így valamivel egyszerűbb lenne felhasználni az esetleg talált jó hangeffektusokat :)
A DAVE teszt program egyébként ugyanazt az emulációt használja, mint az ep128emu, a dave.cpp/hpp forráskódot és a hangkimenettel foglalkozó részeket egyszerűen átmásoltam az emulátorból.

Offline Mayer Gábor

  • EP fan
  • *
  • Posts: 216
  • Country: hu
Re: Zeneprogramozás
« Reply #205 on: 2011.September.20. 17:19:07 »
Elvesztettem a fonalat. Az Enterprise az etalon, azt kell utánozni. Ezekszerint a dave emulációja hibás. Szóval a hiba mindenképpen az emuban van nem az Enterpriseban. Azt megtudom érteni, ha esetleg valami hiba folytán nem az elvártaknak megfelelően működik az Enterprise, de akkor azt úgyanúgy a hibáival együtt kell leemulálni.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Zeneprogramozás
« Reply #206 on: 2011.September.20. 18:26:09 »
Ezekszerint a dave emulációja hibás.
A DAVE emulációja jó. A BASIC/EXOS a hibás, hogy bizonyos hangparamétereknél nem azokat az DAVE-nek küldendõ értékeket számolja ki, amit kéne.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Zeneprogramozás
« Reply #207 on: 2011.September.20. 18:46:34 »
A BASIC/EXOS a hibás

A kettõ közül melyik? Mert akkor egy BASIC programban lehet, hogy egy bizonyos SOUND utasítás (talán pont amit lejjebb említettem, SOUND STYLE 16, PITCH 65) más hangot ad, mint ha egy gépi kódú program adja ki ugyanazt a parancsot... ha jól sejtem. Ha jól értettem, amit István írt, akkor az IS-BASIC még valamit számol, amikor továbbítja az utasítást, és a gyorsaság érdekében ezt nem pontosan számolja, az EXOS-nál talán már nem kell annyit számolni, átalakítani a gép által "emészthetõ" formába az utasítást.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Zeneprogramozás
« Reply #208 on: 2011.September.21. 12:16:13 »
Elvesztettem a fonalat. Az Enterprise az etalon, azt kell utánozni. Ezekszerint a dave emulációja hibás. Szóval a hiba mindenképpen az emuban van nem az Enterpriseban. Azt megtudom érteni, ha esetleg valami hiba folytán nem az elvártaknak megfelelően működik az Enterprise, de akkor azt úgyanúgy a hibáival együtt kell leemulálni.

Mint már írtam, ennek semmi köze nincs a hardver emulációjához, vagy általában az ep128emu-hoz. Eltérés az itt található programban megadható PITCH paraméter és a BASIC SOUND utasítása között fordulhat elő néha, mert hardver szinten nem PITCH értéket kell használni, hanem egy egész számot, ami azt adja meg, hogy 125000 Hz-et mennyivel kell osztani a tényleges frekvencia beállításához. A szoftveres PITCH -> DAVE frekvencia konverzió során természetesen - tört számokkal végzett műveletekről lévén szó - előfordul kerekítési hiba. Az EP ROM szoftverében - a CPU és memória korlátai miatt - kevésbé pontos a számítás, gyakorlatilag csak egy oktávban a negyedhangok konverziója pontos (ehhez az EXOS egy 24 elemű táblázatot használ), minden mást lineáris interpolációval (a negyedhangok közötti frekvenciákat) illetve egyszerű bitenkénti léptetéssel (a többi oktávot) számít az EXOS.

A kettõ közül melyik?

Valószínűleg az EXOS. A BASIC és az EXOS között csak annyi konverzió történik, hogy a lebegőpontos PITCH értékből az EXOS SOUND: kezelőjének a 16 bites fixpontos formátuma lesz. Itt elvileg csak akkor van kerekítési hiba, ha a PITCH paraméter nem egész.

mint ha egy gépi kódú program adja ki ugyanazt a parancsot...

Ennek valószínűleg ritkán van jelentősége, mert nagyon kevés gépi kódú program használja az EXOS SOUND: eszközét, és ami nem 48K-s Spectrum átirat, az is általában közvetlenül a DAVE-t programozza. :)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Zeneprogramozás
« Reply #209 on: 2011.September.21. 12:41:51 »
Ennek valószínûleg ritkán van jelentõsége, mert nagyon kevés gépi kódú program használja az EXOS SOUND: eszközét
Pedig látszik, hogy ennek a megírására is rengeteg energiát fordítottak.
A nagy baj az, hogy az eredetileg tervezett HW sprite-ok kikerültek a Nick-bõl, és külsõ eszközként se valósultak meg. Ha azok meg lennének, akkor mivel a leginkább erõforrást zabáló, pontos idõzítést követelõ feladattól megszabadulna a Z80, lehetséges lenne egy komolyabb játékprogramban is olyan luxust megengedni mint az EXOS használata.