Welcome, Guest. Please login or register.


Author Topic: Hanglejátszó fejlesztése (Read 122278 times)

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Hanglejátszó fejlesztése
« Reply #120 on: 2011.September.22. 13:53:37 »
Más lehetőségek is vannak, de nem tudom, ezek jól működnek-e valódi gépen. Talán a legjobb lenne kipróbálni :)
A "leállított" zajcsatornás D/A esetén további trükkökre is szükség van ahhoz, hogy a zaj biztosan logikai "1", és ne "0" állapotban legyen leállítva. Erre a :DTM és :SNDPLAY bővítőkben található egy megoldás, ami úgy látszik, általában működik igazi gépen is.
Köffke :)
Hát mivel az előbb említetted, hogy lehet 6 csatornás zenéhez se lenne elég gyors a turbós Z80, így fölösleges is nyomozni, hogy ki lehet-e csiholni a DAVE-ből 8 csatorna digit.

Jó minőségű SID emulációra EP-n nem sok esély van, gyakorlatilag a burkológörbét lehet megoldani, illetve "digitális" SID emulációval lehetőség van (rossz minőségű) háromszög- és fűrészjelre, PWM négyszögjelre, és talán szinkronizációra is; a megvalósítás során kiderül, mire elég a Z80 sebessége.
Azt tudom, hogy jó minőségűt nem lehet elérni, a viszonylag jó alatt azt értettem, hogy csak négyszögjelekkel dolgozva, amit lehet beletenni, vagy esetleg, ha nem okozna túl nagy lassulást, akkor burkológörbével amennyire lehet, utánozni a SID különböző hangtípusait, gondolom egy 1kHz-es megszakítás kéne hozzá, hogy valamennyire hasonló is legyen. Maradhatna annyi szabad processzor idő, hogy egy játékba is be lehessen tenni, vagy ebben az esetben mindenképp el kell felejteni ezt?
Az LN-ben csak az envelope-ok vannak "emulálva", meg a frekvencia konvertálva, ez is egész jó hangzást nyújt jópár SID esetén.
El is mondom miért érdekel ez a téma annyira :)
Elővettem a CPC-s Exploding Fistet, és elkezdtem átírni, természetesen elakadtam ott is, mint a SID-jénél :D
Ott szépen kigondoltam, hogyan fogom betenni a plusz C64-es képeket is a játékba az egy db CPC-s mellé, azt is hogy a sprite kiírást hogyan alakítom át, mert a CPC-s háttérképen csak 3 objektum volt, azon a területen, ahol a harcosok is előfordulhatnak, és ezeket minden frame-ben kirajzolja, a + c64-es képeknél ez nem jó megoldás, azt terveztem, hogy minden frameben csak a játékosok által kitakart részt rajzolom újra ki a háttérkép letárolt verziójából másolva, és csak a sprite nem 0-ás adatait ráírva. Itt az lett a problémám, hogy a sprite törlési fázisánál más pozíciót használ, mint a kirakási fázisnál, és nem tudtam eltalálni a normális helyet, hogy mettől-meddig másoljam a hátteret, meg ha jól rémlik, néha a sprite-ból is maradt a képen szemét, ekkor döntöttem el a SID konverzióját, hogy feldobja később a játékot, majd utána foglalkozom a sprite kérdéssel újra, na a SID 6510-es kódjának átalakításánál meg valahol vétettem legalább egy hibát, és több napi keresgélés után se találtam meg, így most a téma jegelve, míg erőt nem gyűjtök újra :D

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Hanglejátszó fejlesztése
« Reply #121 on: 2011.September.22. 18:32:34 »
Itt a teljes csomag (konverter + forráskód + SNDPLAY):
Köszi! Utólagos engedelmeddel feltettem a letöltések közé.

UI: A Dave Testet is feltettem.
« Last Edit: 2011.September.23. 09:43:48 by szipucsu »
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Hanglejátszó fejlesztése
« Reply #122 on: 2011.September.23. 09:40:48 »
ex.zip (13.71 KB - letöltve 9263 .)

Az f.mus hogyan játszható le? vagy ez az, amire írtad, hogy meg se szólal? Szóval nem kell hozzá külön betöltõ?
A másik nem rossz, csak az eleje után van egy rész, amibõl valami gondolom, hiányzik.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Hanglejátszó fejlesztése
« Reply #123 on: 2011.September.23. 15:45:15 »
A SID zenék konvertálásához: Nem tudom, C64-en hányféle torzítás van, de lehet, hogy a 4 bites (STYLE 16) ott nem létezik? Esetleg azt lehetne használni pl. a háromszögjel helyett, persze csak úgy, hogy azokat az értékeket "lõjük be", amik normális hangot adnak, tehát ezeket az értékeket elõbb meg kéne mind keresni.
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: Hanglejátszó fejlesztése
« Reply #124 on: 2011.September.23. 16:10:57 »
A SID zenék konvertálásához: Nem tudom, C64-en hányféle torzítás van

C64-en nincsaz EP-hez hasonló torzítás, viszont van néhány más effektus, amit a DAVE nem tud.

Quote
, de lehet, hogy a 4 bites (STYLE 16) ott nem létezik? Esetleg azt lehetne használni pl. a háromszögjel helyett

A STYLE 16 hangja egyáltalán nem hasonlít a háromszögjelhez. EP-n háromszögjelet csak digitális lejátszással lehet előállítani; D/A nélkül az egyszerű négyszögjel áll hozzá a legközelebb (mindkettő csak páratlan harmonikusokat tartalmaz, de a háromszögjelnél ezeknek a szintje meredekebben csökken a frekvencia függvényében).

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Hanglejátszó fejlesztése
« Reply #125 on: 2011.September.23. 17:15:02 »
Nem is feltétlenül arra gondoltam, hogy hasonlít hozzá, csak valahogy azt is "be lehetne dobni", hogy a hangzás változatosabb legyen. Ha ugyanazt nem is tudjuk elérni, lehetne máshogyan a hangzást "feldobni". Persze ezt minden zenénél külön kell kipróbálni, van-e értelme.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Hanglejátszó fejlesztése
« Reply #126 on: 2011.September.24. 08:45:56 »
C64-en nincsaz EP-hez hasonló torzítás, viszont van néhány más effektus, amit a DAVE nem tud.

A STYLE 16 hangja egyáltalán nem hasonlít a háromszögjelhez. EP-n háromszögjelet csak digitális lejátszással lehet előállítani; D/A nélkül az egyszerű négyszögjel áll hozzá a legközelebb (mindkettő csak páratlan harmonikusokat tartalmaz, de a háromszögjelnél ezeknek a szintje meredekebben csökken a frekvencia függvényében).


Mivel hang dolgokban egy gepnel sem volta sohasem toppon :) elarulhatna valaki, hogy mit jelent az EP-n a "torzitas" fogalma, az konkretan mit csinal? C64-en  imho van alul/felul/sav atereszto szuro (programozhato), meg gyuru modulacio, ugye tobbfajta hullamforma stb, de nem tudom hogy Dave eseten a 'torzitas' fogalma az megfeleltetheto-e barminek a fenti listabol vagy azok kombinaciojanak? A szuro fogalmat meg ertem, tanultam Furier transzoformaciot stb, szoval meg matematikailag is fel tudom fogni, de ez a "torzitas", hogy pontosan mit jelent EP-n, azt passz ....

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Hanglejátszó fejlesztése
« Reply #127 on: 2011.September.24. 12:16:46 »
Mivel hang dolgokban egy gepnel sem volta sohasem toppon :) elarulhatna valaki, hogy mit jelent az EP-n a "torzitas" fogalma, az konkretan mit csinal?

Ez nem "analóg" nemlineáris torzítást jelent (de erre négyszögjelnél egyébként sem igazán van lehetőség), hanem gyakorlatilag rövid periódussal ismétlődő "zajt" generál a négyszögjel helyett. Egészen pontosan így működik:
  - a torzításhoz használandó álvéletlenszám-generátor folyamatosan fut fix nagy órajel frekvencián
  - a hanggenerátor a számlálójának a lefutásakor nem invertálja a kimenetét (ami a normál négyszögjelet eredményezné), hanem a nagy frekvenciájú zajgenerátor aktuális kimenetét mintavételezi, és az lesz az új kimenet a számláló újabb lefutásáig
Egy részletes példa:
  - a 4 bites polinom számláló az 100010011010111 (itt található a pontos algoritmus, amely a sorozatot előállítja) sorozatot ismételgeti végtelenítve 250 kHz-es órajel frekvenciával
  - a torzítandó hanggenerátor frekvencia kódja 8, tehát 250000 / (8 + 1) Hz frekvenciával történik a polinom számláló mintavételezése
    100010011010111100010011010111100010011010111100010011010111100010011010111100010011010111
    *        *        *        *        *        *        *        *        *        *
    111111111000000000000000000111111111000000000111111111000000000000000000111111111000000000

  - minden karakter egy 250 kHz-es ciklus. A felső sorban a polinom számláló kimenete látható, a középsőben a mintavételezések időpontjai, az alsóban pedig a torzított hanggenerátor kimenete (ha nem lenne torzítás, akkor 9 "1" és 9 "0" váltakozna) található
  - érdemes megfigyelni, hogy csak 5 bit hosszúságú sorozat (10010) ismétlődik a kimeneten 15 helyett. Ez azért van, mert a polinom számláló és a mintavételezés periódusának van közös osztója (15, illetve 9, mindkettő osztható 3-al). Valójában 15-el osztható mintavételezési periódusnál nem is lenne hallható hang

Quote
A szuro fogalmat meg ertem, tanultam Furier transzoformaciot stb, szoval meg matematikailag is fel tudom fogni, de ez a "torzitas", hogy pontosan mit jelent EP-n, azt passz ....

A DAVE szűrőinek nem sok közük van az analóg szűrőkhöz, valójában ezek is csak egyszerű bináris műveleteket jelentenek:
  - a felüláteresztő szűrő az órajelnek használt csatorna lefutó éleinél 0-ra állítja a szűrt csatorna kimenetét, tehát gyakorlatilag a kitöltési tényező csökkentésével ér el "felüláteresztő" hatást
  - az aluláteresztő szűrő (csak a zajcsatornánál van) az órajel csatorna lefutó éleinél mintavételezi a bemenetét, és ezt tárolja
  - a gyűrűmoduláció XNOR kapu. Ez még meg is felel az analóg gyűrűmodulációnak előjeles négyszögjelek között:
        0 XNOR 0 = 1        -1 * -1 =  1
        0 XNOR 1 = 0        -1 *  1 = -1
        1 XNOR 0 = 0         1 * -1 = -1
        1 XNOR 1 = 1         1 *  1 =  1

A DAVE 0-2, azaz normál hangcsatornáinak a részletes működése:
  - a frekvencia kód (0-4095) egy számlálót vezérel, amely a beírt értéktől lefelé számol 0-ig, tehát 250000 / (N + 1) Hz frekvenciát állít elő (a hanggenerátorok órajele 250 kHz, de ha a BFh I/O porton 12 MHz-es bemeneti órajel van beállítva, akkor 166.67 kHz lesz helyette). A 0 frekvencia kóddal egyébként nem működnek megbízhatóan a hanggenerátorok, így a legnagyobb frekvencia nem állítható elő igazi gépen
  - a hanggenerátor lényegében egy flip-flop, amelyen a számláló minden lefutásakor a következő műveletek egyike történik:
    - ha nincs torzítás, akkor a kimenet egyszerűen átbillen a másik állapotba (125000 / (N + 1) Hz-es négyszögjel)
    - ha van torzítás, akkor a választott polinom számláló aktuális kimenetét mintavételezi, és az lesz az új kimenet
  - ha az A7h I/O porton az adott csatornához a szinkronizáció bit be van állítva, akkor az a számlálót folyamatosan a programozott értéken tartja (nem fut), és a flip-flop kimenetét 0-ra állítja
  - a felüláteresztő szűrő az órajelének használt csatorna kimenetének a lefutó éleinél 0-ra állítja a flip-flop kimenetét (ez egyébként négyszögjelnél kétszerezheti a frekvenciát)
  - a gyűrűmoduláció (XNOR kapu) az utolsó művelet a kimeneten, ha engedélyezett

Minden effektus, amely másik csatornával végez műveletet, a másik csatorna végleges, gyűrűmoduláció (ha van) utáni kimenetét használja.

A zajcsatornánál az effektusok sorrendje: aluláteresztő szűrő, felüláteresztő szűrő, gyűrűmoduláció. A zajcsatornához használt polinom számláló nem fix 250 kHz-en fut, hanem a választott zaj órajelen (31.25 kHz, vagy valamelyik hangcsatorna kimenetének a lefutó élei).

A hanggenerátor megszakítás a hanggenerátor számlálójának a lefutásakor történik, tehát erre nincs hatása a különböző effektusoknak.
« Last Edit: 2011.September.24. 12:31:07 by IstvanV »

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Hanglejátszó fejlesztése
« Reply #128 on: 2011.September.24. 13:51:38 »
Egyébként a gyûrûmoduláció, mint olyan, EP-tõl függetlenül, mit jelent? Régebben próbáltam utánanézni neten és máshol is, de semmit nem találtam róla, csak a fórumunkat dobja ki, meg C64-es oldalakat, de biztos ettõl a két géptõl függetlenül is létezik a fogalom.
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: Hanglejátszó fejlesztése
« Reply #129 on: 2011.September.24. 13:56:56 »
Egyébként a gyûrûmoduláció, mint olyan, EP-tõl függetlenül, mit jelent? Régebben próbáltam utánanézni neten és máshol is, de semmit nem találtam róla, csak a fórumunkat dobja ki, meg C64-es oldalakat, de biztos ettõl a két géptõl függetlenül is létezik a fogalom.

Itt található részletes leírás.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Hanglejátszó fejlesztése
« Reply #130 on: 2011.October.31. 12:21:40 »
István az Arkos trackert (Windows verzió) lehetne egyszerűen EP-síteni?
Egész könnyen használható, és a megírt zenét z80 lejátszóval együtt elő tudja állítani, tegnap az Exploding fist 1. zenéjét sikerült megalkotni vele, és átalakítva talán ki lehetne használni az 1 kHz-es megszakítást is a zenékben.

off: köszi szépen a tippet, tényleg a codecek hiányoztak az avi konvertálásnál, fel is tettem a youtube-ra a végeredményt :) Azt nem értem, miért nem kiabált.

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Hanglejátszó fejlesztése
« Reply #131 on: 2011.November.17. 00:40:09 »
Végre újabb titokra derült fény. :)
A Samed hang "editoromba" betöltöttem az Áttörés c. játék egyik file-ját. Úgy emlékeztem ugyanis hogy a játék végigjátszáskor azt mondja hogy "I love you". És jól emlékeztem. :)

A Samed-el kicsit meg kellett variálni a hangot hogy lejátszható legyen vele. Mellékeltem az EP file-t, Samed-be betölthetõ és lejátszható.
Wav-ban is mellékeltem.
Vigyázat! Szektás vagyok! :)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Hanglejátszó fejlesztése
« Reply #132 on: 2011.November.18. 21:57:29 »
Átkonvertáltam SNDPLAY formátumra egy részletet egy szerzeményembõl. Szerintem nem lett túl jó, meg halk is lett, de ha már átkonvertáltam, beteszem ide.
[ Guests cannot view attachments ]
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Hanglejátszó fejlesztése
« Reply #133 on: 2015.January.05. 18:14:45 »
Amúgy nem lehetne olyan hanglejátszót (bármilyen zenét, hangot lejátszót) ami a SOUND: eszköz helyére rakható? Tök érdekes lenne egy profi zenelejátszó vagy digi lejátszó EXOS illetve Basic alatt. :)
Vigyázat! Szektás vagyok! :)

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Hanglejátszó fejlesztése
« Reply #134 on: 2015.January.05. 19:14:04 »
Amúgy nem lehetne olyan hanglejátszót (bármilyen zenét, hangot lejátszót) ami a SOUND: eszköz helyére rakható? Tök érdekes lenne egy profi zenelejátszó vagy digi lejátszó EXOS illetve Basic alatt. :)
Sztem ahhoz lassú lenne az EXOS/Basic.