Welcome, Guest. Please login or register.


Author Topic: Web emu (Read 156554 times)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Web emu
« Reply #225 on: 2013.August.20. 14:36:11 »
Néhány kisebb hiba:
- D/A módban csak a 0. csatornának kellene szólnia 4-szeres hangerővel, a többi ilyenkor tiltott (de a számlálóik továbbra is futnak)
- a +/- 1 tartományra korlátozás jelenleg torzítást eredményez, ha egynél több csatorna aktív; a 31.5-el való osztásokat 126-ra kellene cserélni (kivéve a D/A módban)
- ha jól látom, a hanggenerátorok frekvenciája túl alacsony (egy oktávval mélyebb, de nem teszteltem, hogy valóban így van-e); 125000 helyett valószínűleg 250000-el kellene osztani
- ennek ugyan viszonylag kevés jelentősége van, de a kimenetek valójában nem lehetnek negatívak, és a DC offszetet felüláteresztő szűrővel kellene eltávolítani

A daveTick() függvényt célszerűbb lenne 250000 (vagy 166666.67, ha a BFh port 1. bitje 1) Hz frekvencián hívni, akkor a különböző frekvencia konverziók elkerülhetők lennének, és talán még gyorsítana is az emuláción. Jó minőségű hanghoz ezt kellene újramintavételezni kisebb (pl. 44100 Hz) frekvenciára, de az Javascriptben talán túl lassú lenne. Ha működik tetszőleges mintavételezési frekvencia lejátszása, akkor azzal lehetne próbálkozni, hogy például 41667 Hz legyen a D/A frekvencia, és a kimenet 6 vagy 4 (a BFh port 1. bitjétől függően) DAVE hangminta átlaga.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Web emu
« Reply #226 on: 2013.August.20. 16:11:10 »
Quote from: IstvanV
- ha jól látom, a hanggenerátorok frekvenciája túl alacsony (egy oktávval mélyebb, de nem teszteltem, hogy valóban így van-e); 125000 helyett valószínűleg 250000-el kellene osztani
Kipróbáltam, szerintem valóban egy oktávval mélyebb hang szól, mint kéne.
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: Web emu
« Reply #227 on: 2013.August.20. 17:15:13 »
Quote from: szipucsu
Kipróbáltam, szerintem valóban egy oktávval mélyebb hang szól, mint kéne.

Az "jo", mert ha emlekeim nem csalnak egy oktav az ketszeres frekvencia, azaz akkor valoban "csak" IstvanV altal megjegyzett oszto modositas kell. Ezert jok a kedves tesztelok, mivel EP-s kozvetlen tapasztalatom foleg sw ismeret kapcsan keves, nekem fel sem tunt, hogy mikepp szol eredetiben egy sw :-) Mondjuk ep128emu-val ossze tudnam hasonlitani, az is igaz (csakhat az a franya lustasag!). Most modositottam.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Web emu
« Reply #228 on: 2013.August.20. 17:48:52 »
A billentyűhang "dupla". Csak egy click-nek kéne szólni egy billentyű leütésekor. Nálam legalábbis Chrome-mal két click szól egy gomb lenyomásakor.
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: Web emu
« Reply #229 on: 2013.August.20. 18:25:13 »
Quote from: szipucsu
A billentyűhang "dupla". Csak egy click-nek kéne szólni egy billentyű leütésekor. Nálam legalábbis Chrome-mal két click szól egy gomb lenyomásakor.
ez azért van mert akadozik a hang
Vigyázat! Szektás vagyok! :)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Web emu
« Reply #230 on: 2013.August.20. 18:32:16 »
Quote from: endi
ez azért van mert akadozik a hang
Nem tudom, szerintem nem biztos, mert elsőre is "lecseng". Legalábbis úgy hallom.
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: Web emu
« Reply #231 on: 2013.August.20. 18:36:17 »
igen, mert az a bugja hogy ismételget egy kis hangrészletet, akadozva
Vigyázat! Szektás vagyok! :)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Web emu
« Reply #232 on: 2013.August.20. 18:39:32 »
Quote from: endi
ez azért van mert akadozik a hang

Jah, helyes a diagnozis, a problema az, hogy nincs tokeletes szinkronban a dave emulacio altal torteno audio sample buffer feltoltes, es az audio API altal biztositott atadasi mechanizmus (magyarul a bufferunk olvasasa). Mint irtam, ez ismert bug, es majd ha jobban belemaszok ebbe az a webaudio ganyolasba, akkor talan lesz ra megoldas. :)

Mivel jelenleg a buffer egy "ring buffer", elofordulhat hogy tul/alul csordulasnal egy regebbi hangminta reszlet kerul be, stb, ezert okoz neha fura effekteket a dolog. Legyszi azert vegyetek figyelembe, hogy tenyleg komolyan irtam, hogy ez meg alpha verzio szintjetol is igen messze levo "tudok-e egyaltalan kiadni browser-bol _barmi_ hangot" szintu verzio (pl kicommentezve meg mindig benne van a kodban az, hogy szinusz hangot jatszok folyamatosan az emutol fuggetlenul, hogy egyaltalan hallani-e valamit ...), jelenleg messze az emulator leggyengebb resze, ha tippelhetek ...
« Last Edit: 2013.August.20. 18:45:29 by lgb »

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Web emu
« Reply #233 on: 2013.August.20. 19:02:12 »
Quote from: IstvanV
Néhány kisebb hiba:

Azert azt fontos am kiemelni, hogy nem tekintettem ezt meg alpha verzionak se, ahogy irtam is :) Szoval szerintem joval tobb gond van benne annal is, mint amit irtal ... Mindenesetre a "release often, release early" jelmondat szellemeben probaltam eljarni.

Quote
- D/A módban csak a 0. csatornának kellene szólnia 4-szeres hangerővel, a többi ilyenkor tiltott (de a számlálóik továbbra is futnak)

Na ezt pl nem tudtam :) En nagy naivan azt gondoltam, hogy siman lehet D/A modban hasznalni a 0-as csatit, kozben a tobbivel "zenelni" ... Tenyleg nem lehet ilyet? :( Illetve: mi van ha pl csak a tone 0 bal csati van D/A modba kapcsolva? Akkor az tone1 es tone2 bal csatija nem lesz hallato, de a right mukodni fog? Illetve ilyenkor a zaj csatival mi van (nem mintha azt jelenleg implementaltam volna)?

Quote
- a +/- 1 tartományra korlátozás jelenleg torzítást eredményez, ha egynél több csatorna aktív; a 31.5-el való osztásokat 126-ra kellene cserélni (kivéve a D/A módban)

Ezen sokat gondolkodtam, oszinten nem tudom, hogy szokas normalisan digitalis audio jeleket mixelni. Marmint amire gondolok: ha feltesszuk, hogy pl egy MOD/XM/stb playert irunk, amiben mondjuk 32 csati van, akkor egy csatornara 32-ed resze juthat csak? Ez azert fura, mert ugye ha eppen csak egy csati szol az igen halk lesz ... Es a "valo vilagban" siman meg lehet csinalni hogy pl 32 hang szol es nem lenyegesen hangosabb az eredmeny, mintha 1 szolna, mert ugye normal esetben sokszor kioltjak egymast a hangok vagy legalabbis gyengitik ha pl eppen ellentetes fazisban vannak, vagy kozel abban. Magyaran: eleve ez az osszeadas kerdes kicsit nekem santit, hogy ez igy jo, ahogy van.

Ha jol remlik, anno meg pont az emlitett mod/stb player-ek idejeben x86 assemblyben nem is adtak ossze, hanem mindenfajta tablazattal "mixeltek" pont a fenti problemak miatt. Imho - bar lehet tevedek - igazi EP-n sem igaz, hogy pl 3 hangcsatornan jatszott hang egyutt pont 3-szor hangosabb, mintha 1 szolna, vagy igen?

Ezert indultam ki abbol, hogy annak valoszinusege kicsit, hogy pont ugy adodik ossze a csatornak jele, hogy jelentosen tullepi a -/+ 1 tartomanyt, mert lehetnek ellentetes fazisban stb is. Anno jo regen lattam ilyen kodot, ott nem is siman adjak ossze, hanem vmi pre-calculated logaritmikus izevel, viszont az ilyen audio processing dolgokhoz sajnos pont kevesbe ertek :-(

Quote
- ha jól látom, a hanggenerátorok frekvenciája túl alacsony (egy oktávval mélyebb, de nem teszteltem, hogy valóban így van-e); 125000 helyett valószínűleg 250000-el kellene osztani

Azt a kepletet egy doksibol vettem, ha jol emlekszem. Viszont lehet rosszul ertelmeztem kicsit :) Most atirtam az osztot.

Quote
- ennek ugyan viszonylag kevés jelentősége van, de a kimenetek valójában nem lehetnek negatívak, és a DC offszetet felüláteresztő szűrővel kellene eltávolítan

Soha nem csinaltam meg semmiben komolyabb hangprogramozast, ahol ilyen kerdesekkel kellett volna foglalkoznom, meg a web audio API-val is kb 2 napja talalkoztam eloszor :) Imho a web audio API koveteli ezt csak meg, bar valoszinu nem tortenne semmi fatalis, ha 0...1 tartomanyba maradna, elobb-utobb audio lesz belole amikor "kijon" a hang a gepbol, ott meg a DC offset amugy is el szokott tunni, ha mas miatt nem, hat az erositoben alkalmazott kondik miatt :) Egy digitalis szurot implementalni kicsit korulmenyes lenne JS-ben, bar ehhez se ertek igazan. Elvileg a web audio API tud amugy olyanokat hogy van benne implementalva pl szuro stb is, es ezeket egymashoz lehet "huzalozni" programbol, az implementacio meg optimalizalt kod akkor, nem JS, mivel az mar a web audio API epitokovei a broswer oldalrol. Egyszer majd csak rajovok :)

Quote
A daveTick() függvényt célszerűbb lenne 250000 (vagy 166666.67, ha a BFh port 1. bitje 1) Hz frekvencián hívni, akkor a különböző
frekvencia konverziók elkerülhetők lennének, és talán még gyorsítana is az emuláción.

Ez igy van, sot erre gondoltam mar en is. Az biztos, hogy az emulator ujrastrukturalasa elobb-utobb szuksegszeru lesz, jelenlegi felepitese inkabb idezi a kezdeti elso lepeseket, hogy "lassuk, eljutunk-e az EP logoig egyaltalan, a tobbi nem fontos". Az emulatorban _jelenleg_ a nick slot frekvenciahoz van minden idozitve, annak es a fenti altalad is megadott frekvenciaknak nincs egesz szamu kozos osztoja. Enelkul is persze mehetne a dolog, hiszen a counter-ek jelenleg sem egesz szamok (JS-ben amugy is egy numerikus tipus van, nincs kulon float/int, kiveve a typed array nevu jelenseget, de az mas tema). A BFh porttal meg total nem is foglalkoztam eddig semmilyen szinten :(

Quote
Jó minőségű hanghoz ezt kellene újramintavételezni kisebb (pl. 44100 Hz) frekvenciára, de az Javascriptben talán túl lassú lenne. Ha működik tetszőleges mintavételezési frekvencia lejátszása, akkor azzal lehetne próbálkozni, hogy például 41667 Hz legyen a D/A frekvencia, és a kimenet 6 vagy 4 (a BFh port 1. bitjétől függően) DAVE hangminta átlaga.

Hat a resampling kisse lassu lenne imho JS-ben. Most az van, hogy a web audio API default mintavetelezesi (nalam 44100-at ad) frekvenciaja lekerdezheto, de ez lehet nem ugyanaz mindenkinek a gepen, szoval nehez eset. Azt, hogy a web audio API tud-e resampling-ot, szamomra meg nem tiszta. Sajnos ez meg szabvany draft a w3c-nel is, a chrome-os implementacio pl kisebb eltereseket is mutat,  vagy nincs benne vmi, amit w3c specko alapjan tudnia kene ... Firefox-ban meg igazabol tamogatva sincs (config:flags hackekkel igen, de furan viselkedik), es el tudom kepzelni, hogy ott is lesznek elteresek. Szoval ez eleg uj dolog a web vilagban, hogy adjunk ki JS-bol generalt hangot, nekem foleg uj :) Ezt regebben amugy ugy ganyoltak, hogy flash-ben irtak audio generalast, aztan javascript - flash kozott adtak at adatokat, de a flash resze adta konkretan a hangot. Ilyet azert nem szeretnek, na meg flash-hez meg tenyleg konkretan semennyire sem ertek, az meg a masik.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Web emu
« Reply #234 on: 2013.August.20. 23:19:51 »
Quote from: lgb
Na ezt pl nem tudtam :) En nagy naivan azt gondoltam, hogy siman lehet D/A modban hasznalni a 0-as csatit, kozben a tobbivel "zenelni" ... Tenyleg nem lehet ilyet? :( Illetve: mi van ha pl csak a tone 0 bal csati van D/A modba kapcsolva? Akkor az tone1 es tone2 bal csatija nem lesz hallato, de a right mukodni fog? Illetve ilyenkor a zaj csatival mi van (nem mintha azt jelenleg implementaltam volna)?
A dokumentáció szerint "normál" (nem D/A) módban a DAVE a 4 hanggenerátort időosztásos rendszerben küldi a kimenetre. Ha az adott generátor kimenete logikai "1", akkor a hangerő regiszterének megefelő érték jelenik meg a DAVE kimenetén, egyébként 0. A D/A mód hatása az, hogy amelyik csatornán (bal és/vagy jobb) engedélyezett, ott minden időszeletben feltétel nélkül a 0. generátor hangerő értéke a kimenet. Ezért lesz négyszeres hangerő a D/A módban, mert gyakorlatilag a többi generátor helyett is a 0. szól. Ha csak az egyik csatornán engedélyezett a D/A, akkor a másikon továbbra is lehet zene és/vagy zaj, mert a D/A módnak csak a kimenet vezérlésére van hatása, a generátorokra (számlálók, szűrők, stb.) nem.

Quote from: lgb
Ezen sokat gondolkodtam, oszinten nem tudom, hogy szokas normalisan digitalis audio jeleket mixelni. Marmint amire gondolok: ha feltesszuk, hogy pl egy MOD/XM/stb playert irunk, amiben mondjuk 32 csati van, akkor egy csatornara 32-ed resze juthat csak? Ez azert fura, mert ugye ha eppen csak egy csati szol az igen halk lesz ... Es a "valo vilagban" siman meg lehet csinalni hogy pl 32 hang szol es nem lenyegesen hangosabb az eredmeny, mintha 1 szolna, mert ugye normal esetben sokszor kioltjak egymast a hangok vagy legalabbis gyengitik ha pl eppen ellentetes fazisban vannak, vagy kozel abban. Magyaran: eleve ez az osszeadas kerdes kicsit nekem santit, hogy ez igy jo, ahogy van.
Sok csatornánál és "analóg" hullámformáknál valóban ritka, hogy minden csatorna egyszerre legyen fázisban, és maximális értékű (de előfordulnak az átlagos kimenetnél jóval nagyobb csúcsok, a torzítás vagy halk hang elkerülésére dinamikakompresszort lehet használni). EP-n azonban néhány négyszögjel keverésekor könnyen előfordul, mivel a generátorok kimenete bináris, azaz mindig maximális vagy minimális értékű (a hangerő csökkentésének a lehetőségétől eltekintve). Mindenesetre igazi gépen az időosztásos megoldás gyakorlatilag egyszerű összeadásnak felel meg, és nincs túlvezérlés, ha egyszerre szól a 4 csatorna - egyébként nem is lehetne D/A módban a teljes hangerő tartományt torzítás nélkül használni. Tehát a halkabb hang jó megoldás. "Valódi" zenéhez képest a négyszögjelek egyébként is nagyon hangosak, ezért nem probléma a hangerő csökkentése. :)


Quote from: lgb
Azt a kepletet egy doksibol vettem, ha jol emlekszem. Viszont lehet rosszul ertelmeztem kicsit :) Most atirtam az osztot.
A négyszögjel frekvenciája 125000 / (n + 1), de a kimenet ennél kétszer gyakrabban vált értéket. Ezért az emulátorban a 250000 a helyes. Vagy 166667, a BFh porttól függően.

Quote from: lgb
Soha nem csinaltam meg semmiben komolyabb hangprogramozast, ahol ilyen kerdesekkel kellett volna foglalkoznom, meg a web audio API-val is kb 2 napja talalkoztam eloszor :) Imho a web audio API koveteli ezt csak meg, bar valoszinu nem tortenne semmi fatalis, ha 0...1 tartomanyba maradna, elobb-utobb audio lesz belole amikor "kijon" a hang a gepbol, ott meg a DC offset amugy is el szokott tunni, ha mas miatt nem, hat az erositoben alkalmazott kondik miatt :) Egy digitalis szurot implementalni kicsit korulmenyes lenne JS-ben, bar ehhez se ertek igazan.
A hardverben valójában nem mindig van DC szűrés (egyes hangkártyák fejhallgató kimenetén például tudom, hogy nincs). A megvalósítása nem túl bonyolult, csak néhány műveletet kell végezni a javascript kimeneti (tehát alacsony) mintavételezési frekvencián. Igaz, egyelőre fontosabb megoldandó problémák is vannak.

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Web emu
« Reply #235 on: 2013.August.21. 20:56:04 »
amúgy az nem elkeserítő számodra hogy kb 3 embert érdekel ez az egész?
persze, én is évekig gyártottam a játékokat, demókat, amik kb senkit se érdekeltek, de akkor még fiatal voltam :)
most azért örülük amikor a kisfilmjeimet megnézi 100k ember, vagy egy játékomat több tízezren... persze ez is kb nulla, de azért mégis valami :)
Vigyázat! Szektás vagyok! :)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Web emu
« Reply #236 on: 2013.August.21. 22:16:31 »
Quote from: endi
amúgy az nem elkeserítő számodra hogy kb 3 embert érdekel ez az egész?
persze, én is évekig gyártottam a játékokat, demókat, amik kb senkit se érdekeltek, de akkor még fiatal voltam :)
most azért örülük amikor a kisfilmjeimet megnézi 100k ember, vagy egy játékomat több tízezren... persze ez is kb nulla, de azért mégis valami :)

Nezd, ha igy neznem, minek egyaltalan EP-vel foglalkozni _barmit_? Hany embert erdekelhet, mondjuk a teljes internetes kulturabol? Nyilvan ez nem az a nepszerusegi agazat, mint amikor youtube-on millio viewer-re hajt az ember, amibol esetleg penzt is tud mar krealni, ha valaki erre vagyik, inkabb ilyesmibe kezd. Sok hobbyra jellemzo, hogy teljesen oncelu, sot az a lenyege: az embert szorakoztatja, aki csinalja, szivesen bibelodik vele, stb. Nem kell, hogy akar legyen meg egy ember a vilagon, aki ugyanigy gondolja. Az mar csak plusz, hogy jelen esetben van azert par ember, sot, ha egyszer elkeszulne, es pl konkret jatekokat lehetne vele weben jatszani, talan lenne meg legalabb par tucat ember, akit - ugyan csak kozvetve - de erdekelne a dolog. Imho, itt a forumon is meg lehetne kerdezni par embert, hogy nem elkeserito-e ep128emu-t irni, EP hw-ket kesziteni/Z180-at megprobalni illeszteni EP-be, stb stb ...

Masreszt, amit mar irtam: van kozvetett haszna is. Pl en kozben csomot tanultam a javascript-rol, ami konkret "penzes" munkaknal is jo johet. Ha mar mindenaron vmi "logikus" indokot keresunk :)

Amugy le akarsz beszelni, eleg volt mar belolem es az JSep-bol? :) A 10K meg 100K user, viewer az mar valami, de akkor ha logikusak akarunk lenne, te is jobban jarnal, ha nem EP forumuznal, mert az keves usert/viewert vonz akar az 1K emberhez kepest is, az ember elettartama meg veges, jol kell beosztani :) Na, ne ertsd felre, nem piszkalodni akartam, tenyleg! Csak eppen tenyleg nehez ezt megmagyarazni, szeretni kell amit csinal az ember, no! :)
« Last Edit: 2013.August.21. 23:21:51 by lgb »

Offline Czo

  • User
  • *
  • Posts: 94
  • Country: hu
Re: Web emu
« Reply #237 on: 2013.August.21. 22:24:43 »
Azert elegge "relativ" minden. En 1 hete regisztraltam, szombaton turtam elo, a 20 eve elpakolt ep-t. Az elmult par oraban, wav-ba "vettem at" programokat, hogy ha legkozelebb a gep kozelebe kerulok, legyen mit ujra kiprobalni. Szoval, barmikor johet 1-1 uj ember, akit erdekel a dolog :).

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14721
  • Country: hu
    • http://enterprise.iko.hu/
Re: Web emu
« Reply #238 on: 2013.August.22. 09:43:45 »
Quote from: lgb
En nagy naivan azt gondoltam, hogy siman lehet D/A modban hasznalni a 0-as csatit, kozben a tobbivel "zenelni" ...
Eddig én is ebben a hitben voltam :oops:

Offline geco

  • EP addict
  • *
  • Posts: 7081
  • Country: hu
    • Támogató Támogató
Re: Web emu
« Reply #239 on: 2013.August.22. 09:46:04 »
Quote from: Zozosoft
Eddig én is ebben a hitben voltam :oops:
És én is :lol: , akkor a Rockdigi hogy műxik? Ott van két digi csatorna, és 2-n meg négyszögjel, ha jól emléxem.