bład nie wyskakuje, bo nie sprawdzam czy plik jest dobry :) na szybko składałem, czy w ogole zadziała. @mav: czy jest type R można podejrzeć wewnątrz pliku. one mają tekstowe nagłówki i jest tam typ podany.
@Dracon: mrk pisał, że volume-only mode jeszcze nie ma, wiec sample nie chodzą (mam nadzieje, że na razie ;))
@jhusak Zrobiłem eksperyment w atari800 ustawiając te rejestry: ->link<- jak zasugerowałeś, co daje stuknięcie co 4 sekundy. I faktycznie zmiana częstotliwości na wysoką działa dopiero po skończeniu bieżącej połówki okresu :) czyli brak jest natychmiastowego resetu tych liczników (i okazuje się że moja implementacja jest poprawna). Dzięki za pomoc.
@bocianu volume-only mode oczywiście będzie, muszę tylko wcześniej zmienić nieco protokół i dodać timestamp (i pozwolić pewnie też przesyłać na raz większe strumienie rejestrów, trzeba przemyśleć jak to ma wyglądać).
SAP type R bardzo mi się podoba, na pewno dodam opcję zrzucania audio w ten sposób w emulatorze.
@mrk - nie odnośnie Pokeya, ale grafiki - jaką paletę używasz? Podstawową z emulatora Atari800? Co byś powiedział na użycie innej jako podstawowej, np. tej z Altirra?
nie uważam za najlepszą, ale lepszą od tej z Atari800 ;) O ile pamiętam to ta z Altirry jest oparta na tym jak teoretycznie powinna wyglądać, ponieważ jest generowana według algorytmu ze schematów sprzętu. Dyskusji o "najlepszej" palecie było wiele i wszystkich się nie zadowoli. Nawet każdy grafik ma swoje preferencje (g2f, laoo, olivierpal, real, jakub).
Tak, to prawda, że są różne upodobania. PS. OliverPAL i OliverNTSC też są generowane algorytmem, a wyszły zupełnie inaczej niż w AltirraPAL i AltirraNTSC :)
@ilmenit @Kaz na razie jest do domyślna paleta z atari800. (mogę łatwo przełączyć na dowolną inną paletę w formacie act, docelowo będzie się dało na pewno ustawić swoją)
I to jest bardzo dobre rozwiązanie. Zawsze namawiam do tego, by była możliwość załadowania palety, bo tak jak napisał Ilmenit - są różne gusta i przyzwyczajenia wśród grafików, graczy, użytkowników.
Zainspirowany przez POC'a @bocianu zmodyfikowałem nieco jego player SAP type R: * poprawne rozpoznawanie typu (odmówi odtwarzania typów innych niż R zamiast odtwarzać sieczkę) * poprawna obsługa prędkości odtwarzania (z wyjątkiem niskich wartości FASTPLAY, na razie maksymalna prędkość odtwarzania to ok 4 / ramkę) * kontrolki do sterowania odtwarzaniem (play / pause / stop / ramka do tyłu / ramka do przodu + seek bar) * drag & drop rozszerzony na url'e (nie trzeba ściągać pliku lokalnie, można przeciągnąć po prostu URL do odtwarzacza) * możliwość przekazania URL'a do odtwarzania w URL'u do playera - w poniższych przykładach odtwarzane są załączniki z tego post'a :)
Na PC w Vivaldi działa super. Na tablecie z Adroidem 10, też pod Vivaldi, działa chimerycznie, gubi dźwięki i co najważniejsze nie trzyma tempa i strasznie szarpie, ale ogólnie to raczej zwalnia.
@bruno_j - jeżeli nie trzyma templa i zwalnia, to prawdopodobnie CPU nie wyrabia (POKEY jest taktowany zegarem 1.7Mhz i na koniec trzeba całość przesamplować do 48kHz aplikując wcześniej filtr dolnoprzepustowy i to jest najbardziej zasobożerna na razie część, na pewno uda się to jakoś docelowo zoptymalizować)
wspaniała rzecz, dzięmkujemy! (raporcik - u mnie na wypasionym linuchu i7, 32GiB RAM, itp tnie na chromium, oprze i firefloxie, więcej browserów nie mam. widzę, że pulseaudio ciumka procka. fyi - cały emulgator działa szybciutko, więc może gdzieś trzeba jakiś sleep wrzucić czy coś)
@bruno_j @pirx - U mnie na dwóch desktopach chodzi ładnie (linux z Intel i7@2.8 GHz oraz Win10 z Intel i5), zarówno chrome jak i firefox (pod win także Edge). Coś jest nie tak natomiast na telefonie OnePlus6 (z dość mocnym procesorem SnapDragon 845@2.8Ghz) - odtwarzając czysty prostokąt słyszę regularne szybkie 'pykanie' ->link<- - możecie sprawdzić też na tym czystym prostokącie?
Na pewno to będę debugował, jak będę miał coś nowego dam znać (na pewno spróbuję zmienić sampleRate w AudioContext (teraz wymuszam 48kHz, default to chyba 44.1kHz), będę też próbować zoptymalizować zużycie CPU (głównie uprościć jakoś ten downsampling na koniec)
EDIT: może podpatrzę po prostu jak to robi atari800 / Altirra - samo patrzenie chyba nie zarazi mi kodu GPL'em, nie?
Pyka na Chrome na telefonie (Snapdragon 855), ale nie pyka na telefonie gdy odpalę w Firefoxie. Na notebooku pod Windows, zarówno Chrome i Firefox nie pyka.
To jeszcze jedna prośba. Dodałem możliwość ustawienia tzw. latencyHint w AudioContext: ->link<- - wyświetlam także aktualną wartość latency oraz userAgent z przeglądarki.
Jeżeli macie to "pykanie" prosiłbym o zanotowanie domyślnej wartości latency i poeksperymentowanie z większymi wartościami wpisywanymi do latencyHint oraz podesłanie mi tych trzech rzeczy - domyślna wartość latency, userAgent oraz wartość dla której dźwięk zaczyna być odtwarzany czysto.
Przykładowo u mnie:
Latency: 0.021333333333333333
UserAgent: Mozilla/5.0 (Linux: Android 10; ONEPLUS A6003) AppleWebKit/537.36 (KIITML, like Gecko) Chrome/88.0.4324.181 Mobile Safari/537.36
Przestaje pykać od: 0.1
EDIT: właśnie zauważyłem że to raportowanie latency nie działa w Firefox (ale tam generalnie odtwarzanie wydaje się działać lepiej)
Tablet o którym wspominałem. UserAgent: Mozilla/5.0 (Linux; Android 10; KOB2-W09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.186 Mobile Safari/537.36
Po uruchomieniu na domyślnym latency 0.0213333333 nie pyka. Przy próbie zmiany pyka na wszystkich wartościach poniżej 0.1 :(
Na lapku z i5 W10 mogę wstawiać cokolwiek i nie pyka.
[Edit] Core 2 Duo 2.16 GHz W10 na domyślnych pyka.
Latency: 0.03 UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.186 Safari/537.36 - Nie pyka dopóki nie ruszam myszą.
Nooo, teraz to jest super, odtwarza się praktycznie perfekcyjnie, przynajmniej z tymi załączonymi 3 muzyczkami powyżej. :) Na 5-letnim kompie stacjonarnym i7, mam tak: Latency: 0 UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0 :)