Welcome, Guest. Please login or register.


Author Topic: SID lejátszó (Read 249595 times)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #675 on: 2017.March.17. 09:33:59 »
Pontosan mikről kellene részletesebb leírást készíteni? A konvertáló programok fordításáról, a konvertálásról, az EP-s lejátszó használatáról, a Spectrum lejátszó fordításáról, a használatáról, vagy Spectrumra konvertálásról (M64->TAP/TZX)? Esetleg a többi EP-s lejátszóról?

A mindenféle SID lejátszó verzió most már véglegesnek tekinthető?

Szerintem többé-kevésbé igen, esetleg a Spectrumos D/A táblázatok lehetnének még jobbak is. :oops: De ezeknek az optimalizálása nem változtatna a használaton. Talán az EP-s SIDBASIC is futhatna még 10 kHz-nél valamivel magasabb frekvencián, vagy memóriabővített gépekre lehetne olyan változata, amely kicsomagolja az egész bemenetet, bár nem tudom, érdemes lenne-e még ezekkel foglalkozni, a lejátszó már most is jól használható.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #676 on: 2017.March.17. 16:52:32 »
sinclair.hu-n is kérdezik: van ennek a SIDBasicnek valami leírása is valahol?

Egyelőre a WOS fórumon található információ, és természetesen itt is.

A Spectrumos lejátszó és konvertált file-ok megtalálhatók Geco csomagjában, illetve ez a GitHub verzió lefordítva:
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]
« Last Edit: 2017.March.17. 17:00:34 by IstvanV »

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: SID lejátszó
« Reply #677 on: 2017.March.17. 22:14:57 »
Pontosan mikről kellene részletesebb leírást készíteni? A konvertáló programok fordításáról, a konvertálásról, az EP-s lejátszó használatáról, a Spectrum lejátszó fordításáról, a használatáról, vagy Spectrumra konvertálásról (M64->TAP/TZX)? Esetleg a többi EP-s lejátszóról?
A konvertálás és használat. Szét van szórva sok hozzászólásban, praktikus lenne egy helyre (mondjuk a wikire) összeszedni a végleges verziót.

Quote
Talán az EP-s SIDBASIC is futhatna még 10 kHz-nél valamivel magasabb frekvencián
Ha lehet még javítani a minőségen, akkor az jó lenne!

Quote
vagy memóriabővített gépekre lehetne olyan változata, amely kicsomagolja az egész bemenetet
Ha nem kéne menet közben tömörítgetni, akkor az jelentősebb frekvencia növelést tenne lehetővé?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #678 on: 2017.March.18. 09:15:09 »
Ha nem kéne menet közben tömörítgetni, akkor az jelentősebb frekvencia növelést tenne lehetővé?

Nem sok időt fogyaszt, talán egy-két százalék, bár közvetve gyorsulást eredményezhetne például az, ha a vezérlés a főprogramba kerülne (-25 ciklus az IRQ rutinban). Az előre kicsomagolás hátránya azonban, hogy lejátszás előtt az egészet meg kell várni, és 128K-s gépen csak kb. 2 perc számára van elég hely.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #679 on: 2017.March.18. 11:15:50 »
Az EP-s SIDBasic csomagjában egyébként már található leírás az Olvassel.txt és Readme.txt-ben, a konvertáló programokról is (amelyeket szintén tartalmaz). A Spectrumos lejátszóról még nincs összegyűjtve minden információ, de annak egyszerű a használata: a lejátszó betöltése után általában külön .tap vagy .tzx a zene (de össze is fűzhetők), billentyű lenyomására tölti a következőt. Probléma lehet még esetleg az aktuális verziót megtalálni. :)

Spectrumra konvertálásnál érdemes még említeni, hogy csak 12 blokk hosszúságú zene lejátszására van lehetőség, többet is be lehet ugyan tölteni, de a lejátszhatatlan rész elveszik. A 12 blokk a gyakorlatban 2:43.27 időtartamot jelent 50 Hz-es PAL megszakítást használó zenéknél (azaz a PSID file-ok nagy többségénél). Tehát ennél hosszabb zene Spectrumon csak a file méretét növeli. 12 blokkra rövidítéshez használható az m64trunc segédprogram.

EP-n csak a tömörített méret a lényeges, az M64 file legfeljebb 5F10h byte hosszúságú lehet, ennél nagyobbat a sid_conv jelenleg nem is készít.

TAP vagy TZX készítésére a tapeenc segédprogram használható, például:

Csak zene:
Code: [Select]
tapeenc -tap -noldr garfield.tap GARFIELD GARFIEL.M64
tapeenc -noldr garfield.tzx 0x364D GARFIEL.M64

Csak lejátszó (TAP):
Code: [Select]
tapeenc -tap sidbasicSP.tap SIDBASIC taploader.out sidbintSP_tap.out
A TAP file-ok egyszerűen binárisan összefűzhetők, például Windowson a COPY /B paranccsal.

Lejátszó + zenék (TZX):
Code: [Select]
tapeenc sidbasicSP.tzx SIDBASIC loader.out 0x4253 sidbintSP_tzx.out 0x364D file1.m64 0x364D file2.m64
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]

Szerk.: a konvertláláson még lehetne fejleszteni olyan programmal, ami PSID-ből azonnal M64-et készít, az átmeneti RAW formátum kihagyásával.
« Last Edit: 2017.March.18. 14:42:32 by IstvanV »

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: SID lejátszó
« Reply #680 on: 2017.March.19. 09:48:33 »
A Plus4worldön is átütötte az ingerküszöböt a lejátszó. És továbbra is gratula! :smt023

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #681 on: 2017.March.19. 10:32:19 »
Még Plus/4-es változattal is lehetne próbálkozni, bár ott viszonylag népszerű a SID kártya.

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: SID lejátszó
« Reply #682 on: 2017.March.19. 12:39:44 »
Még Plus/4-es változattal is lehetne próbálkozni, bár ott viszonylag népszerű a SID kártya.
/OFF
A TED gyászos képességei a hangképzés terén azért eléggé bekorlátozzák az elérhető minőséget. Ugyan ki lehet csiholni belőle 100+ jelszintet, de közel lineáris sort csak húsz-harminc eleműt lehet ebből kiválogatni, vagy legalábbis nekem ennyi tűnik reálisnak. Az meg még elég harmatos a nyitott képpel elérhető mintavételi frekvencia mellett, és még kvantálási zaj is marad benne elég bőven.

Talán inkább egy DAC-ot kellene rászúrni a User Portra, azon mehetne 8 biten is. (Mellesleg láttam már C64-hez pont ilyet, azt kellene átdrótozni, és mehetne 2x2 csatornán. Csak minek. :mrgreen:)
/ON

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #683 on: 2017.March.19. 13:00:36 »
Egyelőre ez a hangminta lejátszó rutin, de ez valószínűleg nem optimális megoldás: :oops:
[ Guests cannot view attachments ]        (szerk.: valamivel gyorsabb verzió, 11 kHz-nél még nem fagy le, de idő sem marad)
[ Guests cannot view attachments ]

Kikapcsolt képernyőnél is már kb. 10 kHz-es frekvenciánál lefagy, tehát a gyakorlatban 7.8 lehetne használható ezzel (2 soronként megszakítás), ahol egyébként a frekvencia konverzió is egyszerűbb. Az aktív képernyőtől tovább lassulna, és az a hangminták időzítési hibáját (jitter) is növelné.

Jelenleg tartalmaz gyűrűmodulációt (amit a zenék többsége nem használ), és az EP-shez hasonló megoldáshoz készült: időzítő megszakításban a hangminta lejátszás, 50 Hz-es megszakításban a vezérlés, és a főprogramban a kicsomagolás. A Spectrumos módszerrel gyorsabb lehetne, de annak is vannak hátrányai. Bár az előre kicsomagolás 64K-s gépen nem lenne jó használható hosszúságú lejátszáshoz. :)
« Last Edit: 2017.March.19. 16:14:46 by IstvanV »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #684 on: 2017.March.19. 22:31:48 »
A Plus4worldön is átütötte az ingerküszöböt a lejátszó. És továbbra is gratula! :smt023

MMS kérdésére:
Quote
I suppose it works in the same way as the DigiSID player on Plus/4, and probably the ZX Spectrum had a little more processor power to execute the program than Plus/4 (when srceen is on). Actually I do not know, how he made it on AY, as it has no real PCM, and the volume control also only 16 resolution, and it should sound worse than a 4bit DAC. But it sounds like a 6 or 7 bit DAC. Or he may wrote a Viterbi routine to combine the three AY channel into one proper sound frequency?

AY-n alapvetően egyszerű a D/A kimenet, ha egy csatornán a négyszögjel és a zaj közül egyik sem engedélyezett, akkor folyamatosan logikai 1 a kimenet, tehát ez a "DAC mód". A hanggenerátorok az alapértelmezés szerint magas kimenetet lehúzhatják nullára, ezért az ugyanazon a csatornán egyszerre engedélyezett négszögjel és zaj között AND művelet történik.

A SIDBasicSP a mixer regisztert 3Fh értékre állítja, azaz mindegyik csatorna kimenete fix magas szint, és a három hangerő regisztert táblázatok alapján állítja. 0 és 191 között minden hangminta értékhez három 4 bites hangerő (A, B, C) tartozik, az AY nem lineáris hangerő szabályozása teszi lehetővé a nagyobb felbontást, de az eredmény nem tökéletes, a táblázatok optimalizálásán még lehetne javítani. Külön táblázatok készültek az egyes Spectrum klónokban található YM2149-hez, ezt az IC-t a lejátszó automatikusan felismeri.

AY:
[ Guests cannot view attachments ]
YM:
[ Guests cannot view attachments ]

A hullámformán látható kiugrások a (Spectrumon meglehetősen lassú) regiszter írások közötti állapotokban keletkeznek, természetesen ezek is rontják a minőséget. A táblázatokat készítő program kompromisszumot próbál találni a jobb felbontás és a kevésbé "tüskés" kimenet között, ez nehezíti az optimális megoldás keresését.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #685 on: 2017.March.20. 10:14:41 »
A TED gyászos képességei a hangképzés terén azért eléggé bekorlátozzák az elérhető minőséget. Ugyan ki lehet csiholni belőle 100+ jelszintet, de közel lineáris sort csak húsz-harminc eleműt lehet ebből kiválogatni, vagy legalábbis nekem ennyi tűnik reálisnak.

Egyelőre még az sem tűnik egyértelműnek, hogy a 100 szint hogyan érhető el bonyolultabb trükkök nélkül, nekem csak 33-at sikerült egyszerű $FF11 írással: :oops:
Code: [Select]
 0:  0.0000000
 17:  0.0172128
 33:  0.0347485
 18:  0.0469687
 49:  0.0526324
177:  0.0705558
 19:  0.0770507
 34:  0.0946026
 20:  0.1073525
 21:  0.1379074
 50:  0.1430263
 35:  0.1550731
 22:  0.1687072
178:  0.1916032
 23:  0.1998841
 36:  0.2161025
 24:  0.2282312
 51:  0.2348493
 37:  0.2778221
179:  0.3152601
 52:  0.3285998
 38:  0.3404048
 39:  0.4040195
 53:  0.4249243
180:  0.4427064
 40:  0.4622360
 54:  0.5244000
181:  0.5752702
 55:  0.6277162
182:  0.7141309
 56:  0.7244418
183:  0.8606520
184:  1.0000000

[ Guests cannot view attachments ]

A többi regisztert is állítva talán több lehetne (itt a csatornák frekvenciája fix $3FD és $3FE), és abban sem vagyok biztos, a valódi gépen van-e különbség a két csatorna között. A nagyobb szinteknél egyre rosszabb a felbontás, az utolsókat célszerűbb lehetne nem használni.
« Last Edit: 2017.March.20. 10:31:53 by IstvanV »

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: SID lejátszó
« Reply #686 on: 2017.March.20. 11:39:21 »
Egyelőre még az sem tűnik egyértelműnek, hogy a 100 szint hogyan érhető el bonyolultabb trükkök nélkül, nekem csak 33-at sikerült egyszerű $FF11 írással: :oops:
Erre az egykori levelezési listán megjelent hozzászólásra gondoltam. Azt nem állítom, hogy ezek mind jól elkülönülnének.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #687 on: 2017.March.20. 11:55:47 »
Bár a szintek nem pontosan ugyanazok, az ott található táblázat is hasonlónak tűnik, nincs 100 különböző szint, 46 után 52 következik, majd 58, 63, 72, 86 és 100 (a 99-100 eltérés zaj lehet), ami gyakorlatilag megegyezik az én táblázatommal. De ha nem csak egyszerű $FF11 írás lenne, akkor talán többet is el lehetne érni, ami azonban bonyolítaná a hangminta lejátszást.
« Last Edit: 2017.March.20. 12:05:31 by IstvanV »

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: SID lejátszó
« Reply #688 on: 2017.March.20. 16:41:44 »
Bár a szintek nem pontosan ugyanazok, az ott található táblázat is hasonlónak tűnik, nincs 100 különböző szint, 46 után 52 következik, majd 58, 63, 72, 86 és 100 (a 99-100 eltérés zaj lehet), ami gyakorlatilag megegyezik az én táblázatommal. De ha nem csak egyszerű $FF11 írás lenne, akkor talán többet is el lehetne érni, ami azonban bonyolítaná a hangminta lejátszást.
/OFF
Én nem a százalék oszlopra gondoltam, hanem a teljesítményre. Ugyan nem értek hozzá, de az alapján amit a szerző leírt hogy mit és mennyit művészkedett az adatgyűjtéssel én el tudom képzelni, hogy tényleg elkülönülnek még azok a szintek is, amiknél csak egy vagy kettő az eltérés. Nyilván, ez legfeljebb annyira lehet jó, hogy szerencsés esetben finomhangolni lehet vele a linearitást.

Egyébként egyszer eltöprengtem, hogy működhetne-e, ha a frekvencia regiszterek irkálásával (2x$3FD|$3FD+$3FE|2x$3FE) próbálnánk növelni a lehetséges jelszintek számát? Csak hát valószínűleg ez is hasonló tüskéket eredményezne, mint a Spectrumon a három csatorna jelszintjeinek összegzésével kiterjesztett mintafelbontás.
/ON

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: SID lejátszó
« Reply #689 on: 2017.March.20. 17:13:33 »
Egyébként egyszer eltöprengtem, hogy működhetne-e, ha a frekvencia regiszterek irkálásával (2x$3FD|$3FD+$3FE|2x$3FE) próbálnánk növelni a lehetséges jelszintek számát?

Ezekkel a beállításokkal egyszer régen én is próbálkoztam... A kisebb érték egy olyan frekvencia, ami már nem hallható tartományban szól. (>20KHz) Viszont a nagyobb értékre a TED aktuális hanggenerátora kvázi "kiakad", emiatt gyakorlatilag DC szintet produkál. Viszont ez a "kiakadás" nem azonnali; olyan mintha ettől leállna valamilyen regiszter-frissítés, majd egy idő után "elveszne" a benne levő érték. De ez ugye időbe telik. Emiatt ennek az értéknek a kapcsolgatása nem biztos, hogy azt az eredményt hozná, amit az ember elképzel. :) De ezek ködös emlékek, fixme ha valamivel összekevertem... :oops: