1 Ostatnio edytowany przez mono (2015-07-16 19:00:21)

Player modułów SoftSynth-a dla SDX.
Funkcje:
- często używane parametry w zmiennej środowiskowej SSPLAY,
- detekcja drugiego POKEY-a,
- panorama /P p1,p2,p3,p4 w przypadku dźwięku stereo.
Programik gra trochę niżej (16 cykli CPU na cykl odtwarzacza) ze względu na panoramowanie stereo.
Program nie obsługuje rozkazów "/".
Proszę uruchamiać na standardowej prędkości Atari (dla Rapidusa na razie nie są przeliczane częstotliwości i czasy).

Wszelkie bugi i żądania mile widziane.
Smacznego.
P.S. Z programem załączyłem wszystkie znalezione muzyczki.
P.P.S. Wymagana SDX 4.47.

Edit: Ze względu na fakt, że sam SoftSynth nie definiuje domyślnego rozszerzenia (i praktyka pokazała, że muzycy nie nadają), to jeśli ktoś chciałby korzystać z RUNEXT.SYS, musi sobie zdefiniować własne rozszerzenie. Bezwzględnie nie zaleca się definiowania przypisania:

,A:>SSPLAY.COM

dla pustego rozszerzenia, ponieważ będzie łapało wszystkie polecenia DOS-a np. MEM.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

2

Gra.

Co do rozszerzeń, ja mam jedną muzyczkę (której zresztą nie ma w Twoim archiwum) z rozszerzeniem "mus". Jest to plik bilinski.mus, "Dom w Dolinie Mgieł", podlinkowany tu kiedyś przez Jakuba Husaka.

Tak czy owak, nadanie rozszerzenia jest proste:

REN * *.MUS

(czy co tam)

i powinno być po sprawie...

KMK
? HEX$(6670358)

3

Jak mus to mus :)

W jaki sposób ustalicie konwencję rozszerzenia pliku dla konkretnych rozwiązań?

Myśleliście, by sprawdzać 'magic number' jak file(1) w dowolnym ludzkim systemie? Atari jest na to wystarczająco wydajne?

.: miejsce na twoją reklamę :.

4

@drac030: Ja to bym się skłaniał bardziej ku .SS. .MUS jest już zajęte na muzykę z SoundMachine.

@skrzyp: Magii nie używamy w RUNEXT.SYS - tylko rozszerzenie. Za to player sobie sprawdza czy plik jest tym, czego oczekuje i robi to właśnie magicznie.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

5 Ostatnio edytowany przez Pin (2015-07-16 23:45:10)

Wow ... czasem realizacji to mnie Mono zaskoczyłeś, przyznam :)

EDIT:

1. W trybie overlay vbxe player generuje pierwszy dźwięk z początku modułu i leci w pętle bez końca. Sprawdzę, czy w okrojonym ze stawie sterów coś jest inaczej. Na RC_GR8 działa.

2. na 100% OURWOD1. gra nieprawidłowo. Coś cię jakby poprzesuwało i czegoś brakuje. Dodatkowo moduł ten rozleci się bardziej, jeśli zaplanujemy np. taki rozkład kanałów:

/P -1,0,0,1

3. "Wodospadem Czasu" gra dobrze, lecz po rozplanowaniu kanałów j.w. sypie się perkusja. Reszta gra jak by ok.

3a. :)- dla "Wodospadem Czasu": lepiej działa panorama /P 0,-1,1,0. W takim przypadku gra jak by dobrze.

4. Oczywiście zrobiłem też tak, jak mówiłeś by nie robić. Odpaliłem to na dopale. Tu chyba jest potencjał :D. Tempo trzyma, ale gra ze 3-4 oktawy wyżej. Czas wybrzmiewania instrumentów OK.

SUGERUJĘ dla modułów SoftSyntowych ustalić domyślnie rozszerzenie "SS". Mam nadzieję, że nie podzielę niniejszym losu Janusza Korwin-Mikkego ;)

Kontakt: pin@usdk.pl

6

... no no. .. SoftSynt w stereo .. :):)-

Kontakt: pin@usdk.pl

7

Dzięki Pin. Bug z p.1. zgłosił już Draco więc w CVS jest poprawka. Przyjrzę się reszcie rano.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

8

A może zamiast .SS dać po prostu .SYN?

SYNU!

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.

.ssyn ;)

10 Ostatnio edytowany przez mono (2015-07-17 09:28:17)

Na dyskietkach z SoftSynth-em są już pliki .SYN - są to pliki używane przez program: binarne, BASIC-owe, zwykłe dane.
Rozszerzenie .SYN zarezerwował też Święty w swoim SynthTrakerze.

Edit: Mogłoby dojść do pomyłki kiedy to zwykły użytkownik usiłowałby odpalić takie pliki z playerem do SS a tego byśmy jednak nie chcieli.
Aktualnie program bierze plik jaki się mu wskaże i nie dokleja żadnego rozszerzenia - kojarzenie po rozszerzeniach realizuje RUNEXT.SYS więc można zdefiniować sobie dowolne przypisanie. Jak jakieś rozszerzenie się ustali to wrzucę do playera.
A czemu nie może być .SS? :)

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

11

... bo to zagrożone karą do dwóch lat więzienia? ;)

Kontakt: pin@usdk.pl

12

Końcówka SSY brzmi okej.

Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.

13

Chory świat.
Niech będzie .SSY.

Pin napisał/a:

1. W trybie overlay vbxe player generuje pierwszy dźwięk z początku modułu i leci w pętle bez końca. Sprawdzę, czy w okrojonym ze stawie sterów coś jest inaczej. Na RC_GR8 działa.

Jak pisałem - poprawione i będzie za chwilę.

Pin napisał/a:

2. na 100% OURWOD1. gra nieprawidłowo. Coś cię jakby poprzesuwało i czegoś brakuje. Dodatkowo moduł ten rozleci się bardziej, jeśli zaplanujemy np. taki rozkład kanałów:

/P -1,0,0,1

Dziwna sprawa, bo odpaliłem to z wersją dla SDX od Draco i gra tak samo. Może coś z instrumentami się popsuło. Kuba miałbyś może gdzieś źródła z instrumentami?

Pin napisał/a:

3. "Wodospadem Czasu" gra dobrze, lecz po rozplanowaniu kanałów j.w. sypie się perkusja. Reszta gra jak by ok.

3a. :)- dla "Wodospadem Czasu": lepiej działa panorama /P 0,-1,1,0. W takim przypadku gra jak by dobrze.

Dziwna sprawa. Może Kuba gra dwoma instrumentami które sumarycznie dają mu żądane brzmienie?

Pin napisał/a:

4. Oczywiście zrobiłem też tak, jak mówiłeś by nie robić. Odpaliłem to na dopale. Tu chyba jest potencjał :D. Tempo trzyma, ale gra ze 3-4 oktawy wyżej. Czas wybrzmiewania instrumentów OK.

Tempo i wybrzmiewanie są taktowane 200Hz na DLI więc siłą rzeczy są niezależne od sprzętu. Sama synteza dźwięku idzie pełną parą, więc na pewno będzie wyżej :) Trzeba określić prędkość maszyny i przeliczyć delty. I wtedy w stereo będzie grało dobrze i na Rapidusie też. Ale to kwestia przyszłości (może się nie da bez przebudowania programu syntezującego).

Ech miło byłoby mieć też dodatkową instrukcję do panoramy kanału w SoftSynth :)

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

14 Ostatnio edytowany przez qbahusak (2015-07-18 20:26:46)

Dziwna sprawa. Może Kuba gra dwoma instrumentami które sumarycznie dają mu żądane brzmienie?

Tak,  na to wychodzi.

A co to OURWOD1?

mono napisał/a:

A czemu nie może być .SS? :)

To proste. SoftSynth jest niemieckim programem, a nie chcemy prowokacji.

15

Nie no, player nawet w obecnej postaci robi robotę ;)- Mono - działaj!

Mono - z jaką mniej więcej frq dało by radę polecieć po Rapisusie?

Kontakt: pin@usdk.pl

16

Że się wtrącę - z 4 kanałami 44khz spoko, a z obliczeń wynika, że max coś koło 12* 7 czyli 84 khz, a może nawet 88 pójdzie?

17

Zmodyfikowany player (148+16 cykli CPU na cykl syntezy) wypisuje na Altirrze:
* 1.77 MHz - 9911 Hz,
* 7 MHz - 34573 Hz,
* 14 MHz - 54484 Hz,
* 21 MHz - 68258 Hz.

Standardowy player (148 cykli CPU na cykl syntezy) działa z 10983 Hz.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

18

Czyli potencjał mocy z nadmiarem jest ;)

Kontakt: pin@usdk.pl

19

Coś mi się te częstotliwości nie zgadzają, jakieś waitstates?

20

Procedura pomiarowa uruchamia przerwanie z częstością 200Hz jak w SoftSynth. Ta procedura odmierza 50 ramek w PAL i z nią synchronizowany jest start procedury syntezującej SoftSyntha trwającej 148+16 cykli, ale akumulatory fazy używane są tym razem jako liczniki wywołań playera - czyli do obliczenia częstotliwości syntezy. No i tyle wychodzi.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

21

Wersja 0.2 playera.
Zrobiłem pomiar częstotliwości odtwarzania i przeliczanie częstotliwości do prędkości maszyny.
Poprawki wymagały:
- nuty,
- odległości w interferencjach (INT),
- głębokość wibracji (VIB),
- częstotliwość i głębokość glissanda (>).
Dodatki:
- "opcja 0" czyli /0 - włącza oryginalny player dla jednego POKEY-a,
- /Q wyłącza wypisywanie tekstów instrukcją "?",
- /A adres drugiego POKEY-a,
- automatyczne rozszerzenie .SS :],
- instrukcja "?" wypisuje teksty na konsoli.
Domyślnie odpalany jest player zmodyfikowany.

Nasunęło mi się kilka wniosków:

1. Zmodyfikowana procedura dla stereo powoduje niższą częstotliwość odtwarzania. Niesie to za sobą ograniczenia w wartościach regulujących interferencje - w oryginalnym SoftSynth maksymalnie można interferować o 43 Hz. Zmodyfikowany player nie będzie grał poprawnie interferencji wysokich - górna granica leży gdzieś na poziomie 36 Hz. Da się to naprawić w innym miejscu playera lecz wymaga zmiany wewnętrznego formatu zapisu danych w MASIC-u. Na razie więc odpuściłem, tym bardziej że w dostępnych utworach dźwięki interferują o 1,2,3 Hz.

2. Ponieważ interferencje i wibracje przebiegają wolnozmiennie, to dla CPU szybszych niż standardowe 1.77 MHz wyliczane delty są mniejsze, a co za tym idzie należałoby dołożyć dodatkowy bajt dla osiągnięcia odpowiedniej precyzji, co z kolei powoduje wydłużenie pętli syntezy o kolejne 32 cykle. Dla standardowego Atari 1.77 MHz częstotliwość syntezy spada wtedy do 8293 Hz, co w porównaniu z 10983 Hz osiąganym przez standardowy player oznacza syntezę z prędkością 75% oryginału. Myślę więc, że nie warto modyfikować dalej playera pod kątem standardowego Atari 1.77 MHz, za to warto to zrobić dla turbo (X14, Rapidus, itd.).

3. Glissando w SoftSynth definiowane jest np. tak:

100 1,C,15,100,100,>C1,głębokość,czas przejścia

Mam poważne obawy, że czas przejścia jest przez player SoftSynth-a ignorowany! Czy ktoś mógłby to potwierdzić?

4. W artykułach w "Moje Atari 1990 nr 2" i  "Moje Atari 1991 nr 3" dotyczących SoftSynth-a, częstotliwość C opisana jest jako 216 Hz - w rzeczywistości jest to 261 Hz.

5. Podczas stosowania efektów player (również oryginalny) potrafi zwolnić - słychać to np w utworze Kuby Husaka Radioactivity. Czy da się takie sytuacje skorygować podbijając np częstotliwość nuty o 1, 2 Hz?

6. Stosowanie panoramy dźwięku (/P) jest ograniczone przez interferencje kanałów i dlatego przy sztywnej separacji kanałów na różne układy muzyka może grać niepoprawnie - pozostaje to tylko jedynie jako ciekawostka, gdyby ktoś chciał poeksperymentować. Prawdziwe korzyści dałaby synteza na 8 kanałach (dwóch układach) ze sztywno przypisanymi kanałami 1..4 do lewego POKEY-a, oraz 5..8 do prawego POKEY-a. I może taką modyfikację warto by zrobić. Oczywiście bez dodatkowych narzędzi pozwalających na przetworzenie źródła programu w MASIC-u do modułu .SS i listującego .SS w postaci źródła programu się nie obejdzie. Tudzież trackera pozwalającego na komponowanie takich utworów. No ale to ma szansę zadziałać na dopale. Do gołego Atari proponuję oryginalnego SoftSynth-a.

7. Problem z odpaleniem oryginalnego SoftSynth-a pod różnymi DOS-ami polega na dwóch plikach: INSERT1.SYN i INSERT2.SYN, które lokują się w obszarze $600..$70F. W załączeniu zoptymalizowane pliki INSERT1.SYN i INSERT2.SYN pozwalające na działanie SS np. z U-BASIC-em by Draco. Prawdopodobnie Draco w swojej wersji SoftSynth-a pracującej pod SDX to zrobił więc dla tamtej wersji proszę nie aplikować poprawki - poprawka jest wyłącznie na oryginalną wersję SoftSynth-a.

Tak więc przez wzgląd na małą precyzję akumulatora fazy player nie będzie poprawnie grał muzyczek na dopalonym Atari i należy go traktować tylko testowo. Dźwięk nut nie powinien odbiegać od oryginału - problematyczne są tylko efekty.
Player w "opcji 0" powinien grać poprawnie wszystko, bo nie jest modyfikowany :)

Zapraszam do testowania.

Post's attachments

insert1fixed.obx 262 b, liczba pobrań: 1 (od 2015-07-22) 

insert2fixed.obx 262 b, liczba pobrań: 1 (od 2015-07-22) 

Tylko zalogowani mogą pobierać załączniki.
hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

22 Ostatnio edytowany przez Pin (2015-07-22 16:49:43)

w overlay dalej mam problem. Wylicza dla turbo coś koło 10kHz, poza tym (zależy ile włączę banków fast ram) mam od 40 do 50kHz z groszem, tylko że na Anticu. Bardzo ciekawie to brzmi ;)

EDIT:

OPCJA /0 - na rapidusie użyje std playera, ale przy obliczonych 70kHz muzyka gra kilka oktaw wyżej.

Kontakt: pin@usdk.pl

23

Opcja /0 używa niemodyfikowanego playera. Nadaje się tylko dla 1.77 MHz żeby odtwarzać muzykę maksymalnie wiernie z oryginałem. Dla turbo jest player zmodyfikowany. W overlay powinno działać (odpalałem na Altirra z VBXE, bo nie mam na czym sprawdzić) - musisz mi to pokazać. Warto dopalić banki 0,1 i 2, bo player używa ZPG dla rejestrów roboczych, natomiast sam lokuje się na MEMLO, czyli może być gdzieś w pamięci podstawowej. Pamięć pod ROM nie jest wykorzystana.
Z czym dokładnie jest problem w turbo?

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje