atarionline.pl Emulacja POKEY'a w przeglądarce - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1:
         
        CommentAuthormiker
      • CommentTime9 Dec 2020 10:12 zmieniony
       
      Fajnie, fajnie.

      Parę uwag (w kolejności rzucania się w uszy):
      - szumy, perkusja - brzmią strasznie "metalicznie", chyba kwestia zaimplementowania tego 5-bitowego generatora (POLY),
      - filtr górnoprzepustowy - no, na przykład w LaserDemo - dźwięk prowadzący (lead) nie brzmi jak syntezatorowy tylko zwykły (i wydaje się być przez to niżej), co Makary już zresztą zauważył,
      - bas w LaserDemo też jakby ciut "przytwardy".

      Edit: Dobrze jeszcze to ->link<- wrzucić na warsztat.

      Ale mimo wszystko wielkie brawa!
      • 2:
         
        CommentAuthorsun
      • CommentTime9 Dec 2020 11:12
       
      Albo ->link<-
      • 3: CommentAuthormrk
      • CommentTime9 Dec 2020 14:12 zmieniony
       
      @makary @mixer - odnośnie filtrów górnoprzepustowych: zrobiłem logowanie zapisów do rejestru AUDCTL i nie widzę bitów 'high-pass filter' ustawianych w laserdemo, więc to nie to.
      • 4: CommentAuthormakary
      • CommentTime9 Dec 2020 14:12
       
      Trudno mi powiedzieć dlaczego tak jest - w LaserDemo słyszę instrument korzystający z filtra /ten lead o którym pisze Miker/, a w przeglądarce muzyczka gra to gołym kwadratem.

      Od 49s.:



      Hans Kloss ma też główną melodyjkę na takim instrumencie opartą jakby co.
      • 5: CommentAuthormakary
      • CommentTime9 Dec 2020 15:12
       
      Rzuciłem jeszcze okiem na tą melodyjkę w trackerze (pod tmc) i jest filtr włączony przy tym instrumencie.

      Nie wiem, co tam masz do dyspozycji @mrk. Jak nie potrzebuję idealnej emulacji pokeyowego filtra, a tylko zapchaj-dziurę: obejście polega na włączeniu modulacji PWM w oscylatorze i podpięciu jej pod inny oscylator, tak że szerokość wypełnienia oscyluje. Efekt, powiedzmy, da się łyknąć dla większości melodyjek pokeyowych z takim leadem.
      • 6: CommentAuthormrk
      • CommentTime9 Dec 2020 22:12 zmieniony
       

      makary:

      Rzuciłem jeszcze okiem na tą melodyjkę w trackerze (pod tmc) i jest filtr włączony przy tym instrumencie.


      Chyba jednak mówimy o innych filtrach. Ja mówię o tych high-pass filtrach opisanych na stronie 90 ->link<- - ustawia się bit 1 lub drugi AUDCTL i wtedy z tego co rozumiem częstotliwość ustawiona na kanale 3 wpływa na to jak odtwarzany jest kanał 1 (i to samo dla kanałów 2 i 4). Na pewno te bity 1 i 2 w AUDCTL nie są ustawiane w LaserDemo ani we Fredzie - widziałbym w logach.

      Z dobrych wiadomości: poprawiłem bug'a powodującego dudnienie w wybuchach bomb w Robbo i oczywiście jakość dźwięku w LaserDemo / Fredzie też się mega poprawiła :) do posłuchania tu:

      Fred: ->link<-
      LaserDemo: ->link<-

      i jak teraz? :)
      • 7:
         
        CommentAuthorsun
      • CommentTime9 Dec 2020 23:12
       
      Muzak gra, ale dalej leady są bez charakterystycznego synth. Sama emulacja dema jest kilka razy za szybka :(
      • 8: CommentAuthormrk
      • CommentTime9 Dec 2020 23:12 zmieniony
       

      sun:

      Sama emulacja dema jest kilka razy za szybka :(

      Chodzi o szybkość animacji grafiki (szybkość dźwięku rozumiem ok)? Jasne, też to zauważyłem, nie mam pojęcia jeszcze dlaczego tak się dzieje (jedną z przyczyn może być po prostu szybsze działanie emulatora, bo na przykład taki emulowany ANTIC nie kradnie cykli procesorowi (co sporo spowalnia 6502 w rzeczywistości), ale nie tłumaczy to aż takiego przyspieszenia.
      • 9:
         
        CommentAuthormiker
      • CommentTime9 Dec 2020 23:12
       
      Potwierdzam, synthów nie ma nadal (są detuny, choć brzmi już to nieco lepiej niż poprzednio), natomiast basy i szumy grają już jak powinny.
      • 10: CommentAuthormakary
      • CommentTime9 Dec 2020 23:12
       
      @mrk, mówimy o tym samym. Nie jestem w stanie wyjaśnić dlaczego tego nie widać. Temat pewnie wróci, ponieważ te utworki i inne bedą brzmiały inaczej.

      Jest kupa dobrej roboty tak czy siak, dla jasności ;)
      • 11: CommentAuthormono
      • CommentTime10 Dec 2020 03:12 zmieniony
       
      Skoro "filtry górnoprzepustowe" nie są ustawiane, to może zainteresuje Cię informacja, że POKEY odwraca w fazie fale na kanałach 3 i 4. Chyba, że już masz zaimplementowane i to co innego. Nawiasem mówiąc kiedy już to będziesz miał (lub masz) to tylko drobny krok dzieli Cię od zrobienia filtrów :)

      Edit: Aaaa. Świetna robota! Szacun :)

      Edit 2: Sprawdziłem - jednak włączany jest filtr w generatorze 2 sterowany generatorem 4 (Laser Demo z którego korzystałem w załączniku).
      264  84 A=02 X=01 Y=07 S=E5 P=--*----- PC=9E21: 8D 08 D2  STA $D208   ;AUDCTL
      • 12: CommentAuthormrk
      • CommentTime10 Dec 2020 09:12 zmieniony
       
      @mono @makary
      Ok, zwracam honor, ustawiłem sobie w kodzie assert'a i faktycznie widzę ustawianie tego bitu w d208. I po przesłuchaniu jeszcze raz nawet moje drewniane ucho słyszy różnicę (dzięki @mono za dowód czarno na białym).

      Ale zaimplementowanie tego będzie niestety dość trudne, przez to że jednak robię teraz masę uproszczeń (przykładowo - czysty prostokąt odtwarzany jest po prostu z oscylatora i nie jestem w stanie aplikować tej bitowej logiki filtra górnoprzepustowego na wyjściu). W każdym razie spróbuję się nad tym zastanowić. Kiedyś może po prostu będę generował zsynchronizowane ciągi bitów dla każdego kanału (tak jak robią inne emulatory) i wtedy zaimplementowanie samych filtrów będzie trywialne. Plusem obecnej implementacji jest to, że zwala większość roboty na WebAudio API i mało obciąża główny wątek emulatora. Została także napisana od zera, więc nie dziedziczy GPL z Atari800 / Altirry i mogę to wystawić ewentualnie na bardziej liberalnej licencji.

      Chwilowo zakładam że dźwięk jest GoodEnough™ (BTW chodzi mi po głowie żeby tak ten emulator nazwać, z powodu tych wszystkich uproszczeń które robię) i skupiam się z powrotem na innych aspektach (na razie wszystkie tryby ANTIC'a nie są jeszcze zaimplementowane, trzeba zrobić vscroll'a i jakieś ładowanie plików nareszcie + podebugować znalezione do tej pory błędy).
      • 13:
         
        CommentAuthorjhusak
      • CommentTime10 Dec 2020 12:12
       
      Logika jest taka, że sygnał bazowego generatora jest xorowany z sygnałem z drugiego. Może to pomoże?
      • 14: CommentAuthormrk
      • CommentTime10 Dec 2020 13:12 zmieniony
       

      jhusak:

      Logika jest taka, że sygnał bazowego generatora jest xorowany z sygnałem z drugiego. Może to pomoże?


      Problem jest taki, że nie jestem w stanie teraz robić żadnych operacji bitowych na wyjściach z dwóch kanałów - teraz po prostu albo generuję prostokąt oscylatorem, albo liczę sobie szum i wrzucam do AudioBuffer (keszując na przyszłość) i odtwarzam to na danym kanale (zostawiając miksowanie tego już WebAudio). Oczywiście jest to robialne - można zakładać że jak jest ustawiony bit filtra górnoprzepustowego to kanały są w pewien sposób połączone - i liczyć je po prostu razem. Może pójdę w tą stronę (ale zdecydowanie nie teraz - jest masa poprawek do zrobienia po stronie grafiki). Zresztą jest to opensource - zapraszam do podsyłania Pull Requestów z poprawkami :)

      Dokładny emulator POKEY'a (co do cyklu) jest też jak najbardziej do zrobienia (liczący po prostu zsynchronizowane strumienie dla każdego kanału) ale to jednak sporo więcej pracy i będzie dużo bardziej obciążało główny wątek - myślę że w przyszłości można pomyśleć o kolejnym, dokładnym backendzie do wyboru.
      • 15: CommentAuthormakary
      • CommentTime10 Dec 2020 13:12
       
      @mrk: "Oczywiście jest to robialne - można zakładać że jak jest ustawiony bit filtra górnoprzepustowego to kanały są w pewien sposób połączone - i liczyć je po prostu razem. "

      Tam jest przerzutnik. Sygnał jednego generatora jest wtedy próbkowany z częstotliwością drugiego generatora. A potem xorowane jest to co na wejściu przerzutnika (generator pierwszy) i to co na wyjściu przerzutnika.

      Co teraz nie pomaga pewnie, ale może w przyszłości.
    1.  

      jhusak:

      @mgr jakby co, to w godocie jestem zaawansowany :)


      A jak oceniasz jego dojrzałość do produkowania rzeczy na iOS, Android, Web?

      Czy jest to już realna konkurencja dla Unity?

      PS. Sry za offtop.
    2.  
      Dobra, czyli skorzystajmy z opcji "sprawdź se" ;)

      Sorki za przeciąganie offtopa, ale zrobiłem mały projekt w Godot i wyeksportowałem na Andka (mega proste) i na Windę.

      I cyk, filmiki:

      Android:


      Windows, czyli że normalnie:


      Na Andku nie działają światełka i cienie. Szkoda, szkoda, bo Godot już mi się spodobał. Nie drążyłem, pewnie da się jakąś wajchę w konfigu przestawić...


      EDIT:
      Znalazłem odpowiednią wajchę w ustawieniach. Światełko teraz grzeje na Andku aż za mocarnie ;)




      EDIT2:
      A tu można pograć w przeglądarce, ale za pierwszym razem trzeba swoje odczekać, a żeby sterować, trzeba mychą trafiać w sam środek (nos) Godota albo użyć szczałek :)
      ->link<-

      Tylko uwaga, serwer uruchomiony na zapalniczce i zasilany kartoflami, więc działa jak chce ;)
      • 18:
         
        CommentAuthorjhusak
      • CommentTime21 Dec 2020 22:12
       
      @mgr ubiegłeś mję biegiem...
      Problem z mapięcią vram pod androidem - czasem obiekty są czarne. Ale to w godocie 2.x. W 3.x nie sprawdzałem.
      • 19: CommentAuthormrk
      • CommentTime22 Dec 2020 14:12
       
      Autor Bevy jakiś czas temu robił grę w Godot: ->link<- więc pewnie w Bevy jest sporo inspiracji stamtąd
      • 20: CommentAuthortebe
      • CommentTime22 Dec 2020 17:12
       
      pytanie, czy można przy pomocy Godot napisać program który wczyta zestaw znaków Atari, zaprezentuje kolejne bity mapy znaku jako sześciany, pozwoli tak zbudowaną bryłę obrócić względem wybranej osi i zapisać kolejne klatki takiego obrotu ?
      • 21:
         
        CommentAuthormav
      • CommentTime22 Dec 2020 19:12
       
      A dlaczego miałoby się nie dać tego zrobić?
      • 22:
         
        CommentAuthorTheFender
      • CommentTime23 Dec 2020 10:12
       
      Godot engine jest frameworkiem zorientowanym na pisanie gier. Wszystko w nim jest zorientowane pod to i proste gry pisze się fajnie. Swego czasu próbowałem napisać sobie w nim napisowego scrolla z zestawu bitmapowych fontów kolorowych - i owszem tak, da się. I działa płynnie. Zapewne intro również w ten sposób by się jakieś umęczyło.
      Idąc dalej można w nim próbować zrobić rzeczy, do których celu nie był tworzony.

      Tylko po co? :)
      • 23:
         
        CommentAuthorKaz
      • CommentTime23 Dec 2020 11:12
       
      Nazwa emulatora GoodEnough mi się bardzo podoba :)
      • 24: CommentAuthorilmenit
      • CommentTime6 Jan 2021 22:01 zmieniony
       
      Ale progress, już można ATRa odpalić :-)
      ->link<-
      • 25: CommentAuthorilmenit
      • CommentTime10 Feb 2021 13:02
       
      Jak tam projekt? Właśnie odpaliłem "Adam Is Me" i nie licząć niewielkich problemów z emulacją dźwięku - działa ładnie w przeglądarce Chrome!
      • 26:
         
        CommentAuthorlaoo
      • CommentTime10 Feb 2021 14:02
       
      Widać, jest "good enough", więc trud skończony ;)
      • 27: CommentAuthorilmenit
      • CommentTime10 Feb 2021 15:02
       
      ja bym tak ładnie ładnie poprosił o usprawnienie tego Pokeya :)
      • 28:
         
        CommentAuthorlaoo
      • CommentTime10 Feb 2021 16:02
       
      Obym się mylił, ale przeczuwam tu problem ściany, do której doszła aktualna implementacja. Oscylatory z "Web Audio API" to może nie być to, czym łatwo obsłużyć wszystkie niuanse emulacji POKEYa.
      • 29: CommentAuthorilmenit
      • CommentTime10 Feb 2021 19:02
       
      Generacja dźwięku to nie mój obszar zainteresowań i umiejętności, ale jest na przykład emulatora SIDa, który - o ile się nie mylę - jest bardziej zaawansowanym układem niż Pokey:
      ->link<-
      • 30:
         
        CommentAuthorlaoo
      • CommentTime10 Feb 2021 21:02 zmieniony
       
      Pobieżnie przejrzałem i tam jest coś o ScriptProcessorNode, więc pewnie generują surowe sample. To tak jakby wykorzystać gotowy i działający kod emulacji pokeya i efekt byłby bardziej przewidywalny.
      • 31: CommentAuthormrk
      • CommentTime10 Feb 2021 23:02 zmieniony
       

      ilmenit:

      Jak tam projekt? Właśnie odpaliłem "Adam Is Me" i nie licząć niewielkich problemów z emulacją dźwięku - działa ładnie w przeglądarce Chrome!


      Rozwija się pewnie nieco wolniej niż na samym początku, ale cały czas do przodu :) Niedługo wrzucę jakieś podsumowanie / opiszę aktualny stan / poproszę o testowanie.

      laoo:

      Widać, jest "good enough", więc trud skończony ;)


      Do momentu "good enough" dochodziłem już kilka razy, ale całe szczęście apetyt rośnie w miarę jedzenia i granica się cały czas przesuwa :)

      laoo:

      Obym się mylił, ale przeczuwam tu problem ściany, do której doszła aktualna implementacja. Oscylatory z "Web Audio API" to może nie być to, czym łatwo obsłużyć wszystkie niuanse emulacji POKEYa.


      Od bardzo dawna nie są używane już tylko oscylatory - większość szumów to już sample generowane za pomocą "polynomial generators", docelowo faktycznie pewnie będzie całość generowana proceduralnie. Na razie skupiłem się po prostu na innych aspektach.

      @ilmenit dzięki za link do tego projektu emulacji SID'a, sporo technicznych detali jak używają WebAudio API, przyda się.
      • 32: CommentAuthormrk
      • CommentTime5 Mar 2021 15:03 zmieniony
       
      Mały update.
      Prace nad nowym emulatorem POKEY'a są dość zaawansowane, poniżej garść informacji technicznych:
      * cały dźwięk jest teraz generowany już proceduralnie, przy użyciu pojedynczego AudioWorkletProcessor z Web AudioAPI
      * dzięki temu nareszcie udało się zaimplementować filtry górnoprzepustowe
      * generowanie szumów w stosunku do poprzedniej wersji też zostało poprawione (poprzednia wersja generowała proceduralnie krótkie sample zapętlane przy odtwarzaniu, co czasami było słychać), dodatkowo przy generacji prostokąta nie dało się nakładać szumu z poly5 - to wszystko powinno działać teraz poprawnie.
      * emulator POKEY'a działa w oddzielnym wątku (webworker) - zostało to wymuszone przez użycie AudioWorkletProcessor i jest oczywiście bardzo korzystne bo nie obciąża głównego wątku emulatora.
      * na razie implementacja jest w JS, co pozwala na dość sprawne eksperymentowanie (docelowo może port do rust, jeśli opłaci się to wydajnościowo). Całość jest też dość krótka, zapraszam do code review: ->link<- :)
      * obecna wersja nie jest w ogóle jeszcze optymalizowana (a sporo można zrobić w tym zakresie)

      Tutaj ->link<- jest proste narzędzie do testowania - można podać wartości rejestrów POKEY'a i posłuchać wyniku. Oczywiście zalecana jest w miarę nowa wersja przeglądarki (testowane na najnowszych wersjach Chrome i Firefox).

      A tutaj: ->link<- można posłuchać muzyki z Lasermanii (LaserDemo)
      • 33: CommentAuthorilmenit
      • CommentTime5 Mar 2021 15:03
       
      świetne!
      • 34:
         
        CommentAuthorKaz
      • CommentTime6 Mar 2021 06:03
       

      mrk:

      Niedługo wrzucę jakieś podsumowanie / opiszę aktualny stan / poproszę o testowanie.


      Tak jak pisałem kilkanaście tygodni temu - nasze łamy są otwarte :D
      • 35: CommentAuthormrk
      • CommentTime6 Mar 2021 10:03 zmieniony
       
      @Kaz bo prawdziwy programista pisze programy, a nie dokumentację ;) ->link<-
      • 36: CommentAuthormrk
      • CommentTime6 Mar 2021 15:03
       
      Update:

      dodany oscyloskop, analizator widma oraz możliwość przekazywania parametrów w URL: ->link<-
      • 37:
         
        CommentAuthorbocianu
      • CommentTime6 Mar 2021 16:03 zmieniony
       
      @mrk: fantastyczna robota. oniemiałem.

      no to w zasadzie można już pisać tracker na pokeya w przeglądarce ;)


      EDIT:
      @mrk: a da sie odpalić dwa pokeye, tak żeby jeden grał lewy kanał a drugi prawy? żeby emulować stero pokeya? bo chyba serio się zabiorę za to pisanie trackera.
      • 38: CommentAuthormrk
      • CommentTime6 Mar 2021 16:03 zmieniony
       
      @bocianu - można i 4 odpalić, oby tylko CPU starczyło ;)

      Na razie chętnie usłyszę opinie czy to gra jak należy. Mogą się dziać dwie rzeczy:
      1. Błędy w samej emulacji - dany zestaw rejestrów nie generuje spodziewanego przebiegu.
      2. Błędy związane z samym WebAudio API - na przykład trzaski / szarpanie przy odtwarzaniu czegokolwiek. Pod linuxem (pulseaudio) miałem na przykład problemy na słuchawkach bluetooth (a na głośnikach lapka dźwięk był odtwarzany ok)
      • 39:
         
        CommentAuthorjhusak
      • CommentTime6 Mar 2021 18:03
       
      Ładny kawałek (dosłownie) kodu, aż przyjemnie się czyta :)
      • 40: CommentAuthormrk
      • CommentTime6 Mar 2021 18:03 zmieniony
       
      @jhusak :) kodu wyszło w sumie pewnie mniej niż w oryginalnej implementacji z oscylatorami, natomiast na razie sporo bardziej obciążam pewnie CPU, głównie przez konieczność downsamplingu na koniec z 1.77Mhz do 48khz (chociaż może uda się do tego też webaudio zaprząc, zobaczę)

      Brakuje wciąż kilku drobiazgów:
      * planuję wysyłać rejestry POKEY'a z dokładnym timestamp'em (numerem cyklu), i aplikować je w odpowiednim czasie
      * implementacja volume-only mode (by miało to sens potrzebna jest wspomniany wyżej dokładny timestamp)
      * reset POKEY'a (SKCTL) - też potrzebny jest dokładny timestamp by miało to sens
      * nieliniowy DAC (banalne do zrobienia)
      * Phaeron dość dokładnie opisuje w AHRF tor analogowy, na przykład kondensator na wyjściu tworzący filtr górnoprzepustowy - zaimplementowanie też powinno być chyba proste i tanie, nie wiem na ile ma to sens)


      przy okazji pytanie (nie mogę tego znaleźć w Altira Hardware Reference Manual) - czy zapis do rejestrów dzielników resetuje zawsze generowany przebieg (jego fazę) ? Spodziewałbym się że raczej tak, inaczej było by to chyba dziwne. Jeżeli tak, to zapis tej samej wartości podzielnika jak aktualnie odtwarzany też powinno resetować fazę (i być słyszalne)?
      • 41:
         
        CommentAuthorjhusak
      • CommentTime6 Mar 2021 18:03 zmieniony
       
      Nie. Są z tym problemy, ale przynajmniej nie pyka jak się vibrato robi. Trzeba specjalnie resetować pokey (lub puścić max częstotliwość na chwilę), aby przebiegi wystartowały od początku (lub prawie od początku). Jest to czasami wykorzystywane w osiąganiu niestandardowych brzmień lub takich, które zależą od fazy.

      Należy to tak traktować, że licznik dzielnika swoje liczy (i nie możemy tego zmienić bezpośrednio), a my mu zmieniamy punkt przeładowania wpisując do AUDF.
      • 42: CommentAuthormrk
      • CommentTime6 Mar 2021 18:03 zmieniony
       
      @jhusak czyli zapis innej wartości do podzielnika resetuje fazę (czyli te liczniki odliczające w dół), a zapis tej samej nie? mega dziwne z układowego punktu widzenia, bo trzeba jakiś specjalny komparator chyba było implementować by to tak działało :]
      • 43:
         
        CommentAuthorjhusak
      • CommentTime6 Mar 2021 18:03 zmieniony
       
      Fazę resetuje tylko reset pokeya (i te triki, co pisałem).

      Jeśli chodzi o trik z ustawianiem zera na częstotliwości, to wówczas mamy szybkozmienny sygnał, i w zasadzie w każdej chwili, po wpisaniu dowolnej dużo większej wartości jesteśmy na początku fazy, ale fizycznego resetu nie ma.
      • 44: CommentAuthormrk
      • CommentTime6 Mar 2021 19:03 zmieniony
       
      @jhusak No właśnie tego triku trochę nie czaję w takim razie. U siebie mam per kanał licznik inicjowany wartością podzielnika i dekrementowany. Jeżeli wystąpi przepełnienie (underflow 0 -> -1) licznik ładowany jest znowu wartością podzielnika (i w przypadku generacji prostokąta zmieniam stan wyjścia). I wydaje mi się że hardware'owo jest podobnie (przynajmniej z tego co co jest opisane w AHRF.

      Jeżeli ten trik z zapisem wysokiej częstotliwości (małego podzielnika) działa, to znaczy że w momencie zapisu resetowany jest ten odliczający w dół licznik (czyli zapisywana jest tam wartość podzielnika)? Bo inaczej trzeba by było czekać aż się znowu przepełni (aż skończy się połówka aktualnie generowanego okresu).

      Zresztą nie jest to super istotne teraz (muszę zaimplementować przesyłanie zmian rejestrów z timestamp'em wcześniej)
      • 45:
         
        CommentAuthorjhusak
      • CommentTime6 Mar 2021 19:03 zmieniony
       
      Tu się moja wiedza kończy. Trzeba sprawdzić, czy przy najniższej możliwej częstotliwości podmianka na pisk od razu zmienia częstotliwość, czy po przejściu całego cyklu, który może trwać ok. 4 sekund max wg moich obliczeń (15.6 khz, 65535 dzielnik).

      Fox na pewno wie :) Można też zajrzeć do źrodeł atari800, tam jest to raczej dobrze zaimplementowane.
      • 46:
         
        CommentAuthorbocianu
      • CommentTime6 Mar 2021 20:03 zmieniony
       
      korzystając z kodu kolegi mrk, na szybko zmontowałem webowy playerek plików SAP TYPE R. Na razie to tylko proof of concept, zero walidacji, mono i na sztywno wbite 50Hz raz na ramke.

      Ale już widać że działa i potencjał jest :D

      ->link<-

      dorzucam tez kilka plików do testowania.
      Jak ma ktos wiecej plików SAP TYPE R, to podrzućcie mi proszę.
      • 47:
         
        CommentAuthormav
      • CommentTime6 Mar 2021 20:03
       
      Wy to jednak macie tęgie głowy
      • 48: CommentAuthormrk
      • CommentTime6 Mar 2021 21:03
       
      @bocianu - brawo, to było szybkie :) GoodEnough SAP Player :)

      Od razu mam mały feature request: obsługa drag&drop URL'i + możliwość podania url'a do odgrywania jako parametr (w URL player'a) - wtedy będzie się dało podrzucać linki do playera od razu odgrywające dany kawałek (podobnie jak zrobiłem w emulatorze).

      Docelowo postaram się opublikować ten emulator POKEY'a jako npm package, będzie łatwiej używać w zewnętrznych projektach.
      • 49:
         
        CommentAuthorDracon
      • CommentTime6 Mar 2021 22:03
       
      @bocianu
      Wrzuciłem digitalizowany sap - OpusX i jest kaszana... :o
      • 50:
         
        CommentAuthormav
      • CommentTime6 Mar 2021 22:03
       
      Mi ogólnie to działają tylko te wrzucone do posta Bociana, bo cała reszta generuje sieczkę - ale to pewnie dlatego, że to nie są "sap type r" ;) aczkolwiek błąd nie wyskakuje