atarionline.pl SFX-Tracker - 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:
       
      CommentAuthorpebe
    • CommentTime6 May 2021 zmieniony
     
    Witam w nowym projekcie.

    SFX-Tracker to natywna aplikacja, pisana pod małe Atari.
    Czterokanałowy edytor melodii, wykorzystujący autorski silnik (z gry Kret) o nazwie SFX.

    W miarę rozwoju, będę tu przedstawiał materiały związane z programem.

    Projekt tworzony jest pod MAD Pascalem.
    Wykorzystuje tryb tekstowy 20x12 w 5 kolorach - tak, polubiłem ten tryb, jest oldschoolowy :D

    W zał. zrzuty wyglądu aplikacji.

    Przewidziałem:
    - 10kb na dane (SFX,Notes oraz Song) - jak zostanie miejsca to się zwiększy, a może pokuszę się o wykorzystanie ekstra RAMu? nie wiem :P
    - do 99 SFX do zdefiniowania
    - każdy SFX może być opisany 128 punktową obwiednią w której definiujemy:
    - natężenie,
    - zniekształcenie
    - Mod - od słów Modyficator/Modulator :P

    - Tabs, czyli popularne Patterny - zapewne podobnie jak SFX, do 99 możliwych do zdefiniowania.
    - Każdy Tab chciałbym, aby mógł mieć niezależną długość - zobaczę, czy mnie to nie zmęczy za bardzo :P
    - Song, czyli układ utworu, jeszcze nie wiem :P

    Nie przewiduje wykorzystywania rozszerzonych możliwości POKEYa (filtry, 16-bit, czy inne) To ma być prosty tracker.
    • 2:
       
      CommentAuthorjhusak
    • CommentTime6 May 2021
     
    3mam kciuki za projekt :)
    • 3:
       
      CommentAuthorpebe
    • CommentTime6 May 2021 zmieniony
     
    Troszkę dopieściłem edycję instrumentu (jeszcze można bardziej, ale to na sam koniec zostawiam)
    Zabrałem się za edycję Tabsów. Na razie tworzę tylko screen, ale tak to będzie wyglądało.
    Zauważyłem, że większość trackerów nie ma możliwości ustawiania taktu. Postanowiłem, że dam taką możliwość. Nie jestem specjalistą w dziedzinie muzyki - zwłaszcza jeśli chodzi o nazewnictwo - jednak wyszło mi coś takiego.
    Tik - to trzecia liczba w kolumnie pozycji.
    SubTakt - druga liczba
    Takt - trzecia.

    Czyli mamy trzy cyfry. Ich zapis w ustawieniach (będzie w sekcji Song) to:
    4/4/4

    Oczywiście, będzie można to zmieniać wedle uznania w granicach od 0 do 9 dla każdej z cyfr.

    Co więcej...

    Chwalię się XEXem. Można zobaczyć, jak się edytuje SFXy.

    Klawiszologia jest (w/g mnie) dość intuicyjna:
    - strzałki - przemieszczanie się/zmiana parametru
    - CONTROL+strzałki - przemieszczanie się o rozmiar "okna"
    - RETURN - wejście/akceptacja/wyjście
    - ESC - wyjście/anulowanie

    W zależności, gdzie jesteśmy działa nasŧępująco:
    Po wybraniu (strzałkami lewo/prawo) opcji "SFX" i akceptacji (RETURNem) pokazuje się panel edycji SFXów.

    Strzałkami góra/dół, wybieramy opcję.
    Będąc na "#00", możemy użyć:
    - strzałek lewo/prawo, by sekwencyjnie zmieniać SFX
    - RETURN, by przejść do listy SFXów

    Kolejne dwa elementy są czysto informacyjne:
    - LEN - długość SFXa
    - POS - aktualna pozycja kursora w części edycyjnej
    Następnie są opcje parametrów:
    - VOL - głośność
    - DST - zniekształcenia
    - MOD - Modulacja/Modulator
    - VAL - Wartość dla MOD
    i "sub menu":
    - OPT - opcje (na razie jedna :P)

    Parametr możemy wybrać naciskając klawisz RETURN.
    Przeniesieni będziemy do prawej części, zwanej edycyjną.
    Naszym oczom ukażą się kolejne kroki SFXa oraz kursor wskazujący położenie.

    Tutaj sterowanie jest następujące:
    - strzałki lewo/prawo - przemieszczają kursor w obrębie części edycyjnej.
    - strzałki góra/dół - pozwalają ustawić parametr
    - klawisze 0-9 oraz A-F - pozwalają szybko wpisać wartość parametru, przemieszczając kursor do następnej kolumny.
    - TAB/SHIFT+TAB - pozwala szybko przełączać się pomiędzy parametrami, odpowiednio następny, poprzedni.
    - ENTER - wychodzi z części edycyjnej.

    Należy pamiętać, aby każdą modyfikację SFXa zapamiętać. W tym celu, będą w części wyboru opcji, przechodzimy strzałkami góra/dół do opcji "OPT" i dwa razy naciskamy RETURN.
    Przeniesieni zostaniemy do pola z nazwą SFXa, gdzie możemy ją zmienić przed zapisaniem zmian. Naciskamy ponownie RETURN, aby zatwierdzić nazwę. SFX został właśnie zapisany

    Aby wyjść z panelu edycji SFX, naciskamy ESC, co przenosi Nas z powrotem do górnego Menu.

    ---

    Długość (LEN) określa parametr MOD o numerze 8. Oznacza on koniec definicji SFXa.
    Jeżeli nie zostanie on ustawiony ręcznie, podjęta zostanie próba automatycznego ustalenia końca.
    Jeżli zostanie on odnaleziony, MOD80 zostanie ustawiony na domniemanym końcu definicji.
    Aby zmienić długość, należy pamiętać o przeniesieniu MOD80 w miejsce, gdzie jest nowy koniec, gdyż automat przeszukuje cały zakres (128 kroków) w dwóch fazach:
    - pierwsza, od początku do końca. Jeżeli znajdzie MOD80, kończy proces.
    - druga, od końca do początku, gdzie sprawdzane są poszczególne parametry pod kątem ich występowania. Jeżeli automat natrafi na jakiś parametr różny 0 to przerywa proces i tu określa koniec, wstawiając MOD80.

    ---

    Generalnie, na chwilę obecną to tyle.
    • 4:
       
      CommentAuthorjhusak
    • CommentTime6 May 2021
     
    Żeby dało się używać edytora, autorepetycję bym włączył na 2-3, a repetycję na 20-25.
    • 5: CommentAuthormakary
    • CommentTime6 May 2021
     
    @pebe "Zauważyłem, że większość trackerów nie ma możliwości ustawiania taktu. Postanowiłem, że dam taką możliwość. Nie jestem specjalistą w dziedzinie muzyki - zwłaszcza jeśli chodzi o nazewnictwo - jednak wyszło mi coś takiego.
    Tik - to trzecia liczba w kolumnie pozycji.
    SubTakt - druga liczba
    Takt - trzecia."

    W trackerowym żargonie to byłoby pewnie 'pattern' (takt/pierwsza liczba), 'beat' (subtakt/środkowa), 'LPB' / 'lines per beat' (tik/trzecia).
    • 6:
       
      CommentAuthorpebe
    • CommentTime7 May 2021
     
    @jhusak: Słuszna uwaga.

    @makary: O, tylko dlaczego pierwsza cyfra to 'pattern'? Pytam z czystej ciekawości.
    Dopiero, jak mnie zacytowałeś, zauważyłem błąd w swoim opisie :D "Takt - pierwsza cyfra"
    • 7:
       
      CommentAuthorpebe
    • CommentTime7 May 2021 zmieniony
     
    Jestem teraz na etapie wdrażania TABów (bardziej znanych jako Patterns) Jak wspomniałem wcześniej, będzie można utworzyć do 100 różnych TABów.
    Myślałem o nazywaniu TABów (podobnie jak SFXów) jednak, doszedłem do wniosku, że jest to zbyteczne, ale.. Wymyśliłem coś innego :D

    Każdemu z nich, będzie można przydzielić symbol:
    FRE - FREE TAB
    DRM - DRUMS
    BAS - BASS
    LIN - LINE MELODY
    MEL - MELODY
    ACC - ACCOMPANIMENT
    MIX - MIXED

    Te symbole mają służyć tylko celom informacyjnym - z własnego doświadczenia wiem, że potrafię się zgubić "nutach" :D

    Jak ktoś ma jeszcze jakieś propozycje symboli, będę wdzięczny, bo wydaje mi się, że jest ciekawe rozwiązanie (nie spotkałem się z takim). Do dyspozycji jest 255 możliwości, gdyż informacja zapisywana jest będzie w jednym bajcie.

    A na koniec, screeny. Zmienił się trochę układ edycji SFXów oraz panel edycji TABów.
    • 8: CommentAuthormakary
    • CommentTime7 May 2021
     
    "O, tylko dlaczego pierwsza cyfra to 'pattern'? Pytam z czystej ciekawości."

    Widzę teraz, że 'tab' to 'pattern' ;) Ten 'takt', pierwsza cyfra to bardziej byłby 'bar'.
    • 9: CommentAuthorpin
    • CommentTime7 May 2021
     
    Będzie to na normalnym dosie działać?
    • 10:
       
      CommentAuthorpebe
    • CommentTime7 May 2021 zmieniony
     
    @pin: jak na razie nie przewiduje wielkich, systemowych zmian. Działam na podstawowym OSie. Nie zmieniam domyślnych ustawień kompilatora MADzi. Więc, zakładam, że będzie działać (mogę się mylić)

    Mapa pamięci:
    $2000..$48ed - program
    $48ee..$4fba - dane statyczne (1740 bajtów)

    $8f00..$b6FF - miejsce na dane melodii (10kB)
    $b700..$b7ff - dane układu TABsów (Song)
    $b800..$b8ff - wskazniki SFXów
    $b900..$b9ff - wskaźniki TABsów

    $ba00..$ba00 - pamięć ekranu
    $bae0..$baff - display list
    $bb00..$bbef - bufor ekranu
    $bc00..$bdff - font

    do tego jeszcze dojdzie SFX - mniej niż 768 bajtów
    odtwarzacz SFX-Player - nie ma
    • 11: CommentAuthorpin
    • CommentTime7 May 2021
     
    Odwołania IO do D: daj, nie D1:
    • 12: CommentAuthormono
    • CommentTime7 May 2021
     
    Ej, urządzenie się wpisuje z palca jakie kto chce a nie D: czy inne HGW:.
    • 13:
       
      CommentAuthorpebe
    • CommentTime7 May 2021 zmieniony
     
    @pin: Spoko, zapamiętam. Czym to motywujesz? (sory, może laickie pytanie, ale wypadłem trochę z nurtu pod tym względem)
    • 14:
       
      CommentAuthorpebe
    • CommentTime7 May 2021
     
    @mono: właściwie, masz racje. Jak pamiętam to zawsze tak robiłem - no może poza pierwszą wersją Kreta, gdzie na sztywno miałem wpisane D1: albo nawe H1: XD
    • 15: CommentAuthorpin
    • CommentTime7 May 2021
     
    Bo mając D: nie jest istotne, czy to będzie D2:, czy D12:/progs/costam/
    • 16:
       
      CommentAuthorpebe
    • CommentTime7 May 2021
     
    @pin: czyli mam rozumieć, że DOS, samodzielnie w takiej sytuacji przeszukuje handlery i odpytuje je, oczekując odpowiedzi?
    • 17: CommentAuthorpin
    • CommentTime7 May 2021
     
    W uproszczeniu D: odwołuje się do dysku i katalogu bieżącego.
    • 18:
       
      CommentAuthorKaz
    • CommentTime7 May 2021
     

    PeBe:

    Jak ktoś ma jeszcze jakieś propozycje symboli, będę wdzięczny, bo wydaje mi się, że jest ciekawe rozwiązanie (nie spotkałem się z takim).


    Nie mam konkretnych propozycji, ale mam uwagę ogólną. Najlepiej by było jak najwięcej nazw zaczerpnąć z już istniejących standardów, żeby osoby, które już opanowały pewną terminologię w popularnych programach, nie musiały wszystkie uczyć się od nowa.
    • 19:
       
      CommentAuthorpebe
    • CommentTime7 May 2021 zmieniony
     
    @Kaz: Rozumiem Cię, co chcesz powiedzieć, jednak to jest SFX-Tracker.
    Ja zdaję sobię sprawę z tego, że nie każdy skojarzy TABsy jako Pattern, ale nie lubię pseudo skrótów typu PTRN, czy INSTR dla Instruments (choć to drugie, jeszcze jakoś idzie :P)
    Poza tym, to TYLKO dwie nazwy: SFX który mocno się integruje w środowisko tej aplikacji i TAB, który równie dobrze można skojarzyć z tabulaturą która jest w pewnym sensie synonimem Patterns.

    Co do nazewnictwa związanego z symbolami - to jest rozszerzenie podstawy. Ja się z takimi akronimami nie spotkałem w trackerach, a moim zdaniem, mocno ułatwiają rozpoznanie danego TABa (czy jak kto woli Patterna)

    Reszta? VOL, DST, itd. Fakt, mocne akronimy, ale tu pozwoliłem sobie na takie podejście, ze względu na zastosowany tryb tekstowy. Chodzi bardziej o rozróżnienie niż wytłumaczenie wprost, o co chodzi.

    Po za tym. Jeśli ktoś chce standardów, to ma szeroki wachlarz dostępnych trackerów, gdzie ma standardy.
    Ja nie zmuszam nikogo do korzystania z tego programu i pewnie bym go nie pisał, gdyby nie fakt, że jestem uparty i chce zrobić coś sam. Tak się najlepiej uczę. A to (nie ukrywajmy) jest nauka - 30 lat temu bawiłem małym Atari. Dużo zapomniałem, dużo nie wiedziałem, a teraz chcę sobie przypomnieć i się nauczyć, bo chcę.

    I tak na marginesie - standardy są po to, by je czasami łamać. Nie każdy standard jest dobry, a korzystanie ze złych standardów jest męczące (nic nie sugeruje, absolutnie nic)

    Wyróżniajmy się, bo obecnie wszystko jest standaryzowane - nawet banany, nie mówiąc już o Naszym życiu.

    PS. Nie odbierz mnie źle. Nie chcę, byś to odebrał jako strofowanie, czy coś niecnego. Taki już jestem. Inny. Niestandardowy :)

    Z wyrazami pełnego szacunku do grona Atari
    PeBe.
    • 20:
       
      CommentAuthorpebe
    • CommentTime7 May 2021 zmieniony
     
    Dla złagodzenia atmosfery - bo się trochę wzburzyłem, przepraszam - nowy XEXik, a w nim.

    Zalążek edycji TABsów.

    Po wybraniu z menu głównego TABS, pokazuje się panel w którym mamy kolejno:

    - informacje odnośnie aktualnego TABa: numer; oznaczenie rodzaju zawartości (nieszczęśnie nazwany wcześniej symbolem :P); pozycja/długość
    - okno przedstawiające treść TABa podzielone na cztery kolumny: kolejny beat w TABie; takt/beat/LBM; nuta; numer SFX.

    Na samym dole, aktualnie używany numer SFX oraz jego nazwa.

    Na start fokus jest ustawiony na numer TABa, gdzie używając klawiszy strzałek lewo/prawo, sekwencyjnie możemy wybierać numer. (to jeszcze w powijakach :P) Naciskając RETURN przejdziemy do edycji ustawionego TABa.

    (planuję jeszcze listę TABów, podobnie jak lista SFX)

    Naciskając klawisze strzałek góra/dół lub używając klawisza TAB/Shift+Tab możemy zmieniać fokus pomiędzy "paskami": informacje o TABie, a aktualny SFX.

    Klawiszologia w linii SFXa jest taka sama jak w edycji SFXa.

    (planuję szybkie przejście do edycji z tego poziomu, np. naciskając klawisz Shift+RETURN)

    Klawisze w głównej części okna TAB (jak na razie) tylko strzałki góra/dół, przemieszczają kursor.

    Tutaj nowości SFX-Trackera się kończą.

    Jako ciekawostkę dodam, że planuję dodać możliwość operowania wartościami rejestru określającego częstotliwość dźwięku w sposób bezpośredni, tzn. nie nutą, a wartością bezpośrednią.
    Jako, że mam wolny bit 7 numeru SFXa, chcę go wykorzystać do sygnalizacji, że wartość nuty jest wartością bezpośrednią rejestru. Pozwoli to na dostrajanie brzmienia z poziomu edycji TABa. Wyglądać to będzie tak, że zamiast symbolu nuty, np. C#2, będzie wartość, np. 117 (czysto hipotetyczna wartość)
    Myślałem o tym, by jednak była pokazywana nuta i dodatkowo, np.+5. jednak zbyt dużo czasu będzie zabierać wyszukiwanie zbliżonej wartości dla symbolu nuty, stąd takie podejście.

    Co dalej? Czas pokaże. Jestem pełen optymizmu.
    • 21:
       
      CommentAuthorpebe
    • CommentTime7 May 2021 zmieniony
     
    Szybka zmiana poruszania się po panelu TABs. Mogą być błędy!

    Klawisze TAB/Shift+TAB zmieniają fokus sekwencyjnie góra/dół, pomiędzy:
    - belką informacyjną TABa
    - obszar edycji TABa
    - belką informacyjną SFXa

    Klawisze strzałek góra/dół, podobnie, jednak "wchodzą" w edycję TABa, stosownie do kierunku:
    - strzałka w dół - gdy fokus na belce TABa
    - strzałka w górę - gdy fokus na belce SFXa

    Klawisz ESC, wychodzi do menu głównego z każdego miejsca.

    Reszta klawiszy, bez zmian.

    UWAGA! Wychodzi do menu głównego, gdy naciśniemy RETURN na belce TABa! Jest to skutek nie zaimplementowanej listy dla TABów.

    Zmiana moim zdaniem jest bardziej intuicyjna.
    • 22: CommentAuthormarok
    • CommentTime9 May 2021
     
    Intuicyjny edytor, zupełnie już wygodny. Może nie wszystkie szczegółowe rozwiązania są już do końca ustalone i mogą chyba pojawić się głosy sugerujące jakąś zmianę (czy "emulatorowe" strzałki [na klawiaturze pc] do przechodzenia między najczęściej wybieranymi opcjami, to wybór optymalny dla "natywnych"?).

    Jest to na pewno czytelne i stosunkowo proste do (szybkiego) opanowania [bez podpowiedzi i już za pierwszym razem, o ile miało się jakąś styczność z pokrewnymi programami] (przynajmniej jeśli chodzi o same podstawy i ogólne opanowanie edytora). Interesujące podejście do tematu, "z głową" (bardziej w stylu: prosto do celu). Faktycznie, przy sporych brakach edytorów na atari do komponowania, taki potencjalny soft (zakładając wstępnie, że tylko do prostszych technicznie/ dźwiękowo kompozycji) ma sporą rację bytu, jak dla mnie. Procedura odgrywająca - jeśli tylko nie będzie zawodna, a może dodatkowo będzie miała swoje jakieś mocniejsze strony (będzie może w miarę szybka albo z tych krótszych), to uważam, że będzie tylko dobrze.

    Z uwag: Jak się troszkę bawiłem w edycję instrumentu ("SFX") to nie bardzo wiem czemu cała edycja mi szybko uciekła w niebyt, powiedziałbym ze swojego (chociaż skromnego) doświadczenia, dość niepostrzeżenie, w którymś momencie (uzupełniam: zaraz po opuszczeniu bezpośredniej edycji). Można by odnieść (pierwsze) wrażenie, że trochę nazbyt łatwo. (Sprawdziłem, że aby zmiany się zapamiętały, trzeba uruchomić w edycji OPT i tamtejszą opcję "SAVE". Pewnie pojawią się jeszcze głosy sugestii, że zmiany mogłyby być zapamiętywane automatycznie - jak leży to w przyzwyczajeniu od innych edytorów. Ale, na pewno można się "dostosować" do takiego, jak to, rozwiązania - może mieć ono swoje, z resztą, plusy. Takie rzeczy - warianty zachowań programu przy edycji danych, mogą, domyślam się, czasem wynikać trochę z procedur w kodzie, jakie się wpierw stworzyło i których takie działanie jest - a poniekąd staje się, gdyż może to podążać w następstwie - w pełni do zaakceptowania dla twórcy programu.)
    • 23:
       
      CommentAuthorKaz
    • CommentTime9 May 2021 zmieniony
     
    PeBe - ależ ja się nie gniewam :) Po prostu pytałeś o opinie i pomysły, to podrzuciłem pomysł. O jego zastosowaniu lub nie - Ty decydujesz. A jeżeli chodzi o standaryzację - to nie chodziło mi o to, żeby robić identyczny program jak inne, tylko żeby jego obsługa była podobna, np. skróty klawiszowe (jeśli takie przewidujesz) czy właśnie nazwy, żeby ktoś już wcześniej obeznany z trackerami - szybciej się odnalazł. Ale to przecież nie jest nakaz! Tak więc nie ma potrzeby się denerwować :)

    Trzymam kciuki za powodzenie projektu. A jak uznasz go za ukończony - to zapraszam na główną stronę, damy o nim artek, z instrukcją obsługi :)
    • 24: CommentAuthorpin
    • CommentTime9 May 2021
     
    ładnie wygląda to.

    Pytanie pierwsze - można zrobić tak, by do nawigacji kursorem nie trzeba było trzymać klawisza CONTROL?
    • 25: CommentAuthorpin
    • CommentTime9 May 2021
     
    operacje I/O nie są jeszcze zrobione jak na razie?
    • 26:
       
      CommentAuthorpebe
    • CommentTime9 May 2021
     
    @pin: Dzięki - jestem estetą i lubię ładny wygląd (aplikacji :P) ;)

    Właśnie zauważyłem, że mam błędnie skonfigurowaną Altirre i natywne klawisze strzałek mam z automatu podpięte z CONTROLem :/ Pewnie, że się da. Właściwie to już to zmieniłem :D

    Skończę działać z optymalizacją, którą od dwóch dni robię, dodając co po chwila jakiś niewielki kod do TABsów i nie tylko i wezmę się za menu DISK, bo klepanie na okrągło mnie też drażni :D Jednak nie obiecuję zgodności formatu w wersji finalnej.

    Właśnie dotarło do mnie, że chcąc nie chcąc, muszę zaimplementować mechanizm sterty (HEAP) aby nie komplikować kodu, a mieć dynamiczne zarządzanie pamięcią.

    Idzie trochę jak krew z nosa, ale jest dobrze. Powoli do przodzu.

    Niech Was nie zdziwi zmiana nazwy na "SFX MUSIC MAKER", jakoś tak mnie naszło, by taką dać. Jak się podoba to zostawię, jak nie to przywrócę na "SFX-TRACKER" :D

    @marok: wiem o czym mówisz w uwagach i po Twojej uwadze, zmieniłem nieco sposób działania. Obecnie edytor dla każdego nowego dźwięku przydziela maksymalną jego długość, tj. 128 kroków, na końcu zapisująć MOD80. W trakcie tworzenia, można swobodnie skrócić, wpisując MOD80 w potrzebnym miejscu.
    Doszło też ostrzeżenie o modyfikacji, które jest (póki co) zastępczym rozwiązaniem. Będę chciał zrobić komunikat o nie zapisaniu dokonanych zmian w momencie wyjścia z edycji do menu głównego lub zmiany bieżącego instrumentu i możliwości zapisania z poziomu komunikatu. Opcje zapisu z menu, zostawię.

    Są też zmiany w interface. Mam nadzieję, że na dobre. Jest bardziej spójny dla poszczególnych modułów.

    No i doszedł mały wodotrysk (jeszcze nie funkcjonalny). Jakoś tak mnie naszło, by było - to jest takie w stylu Retro aplikacji.

    Postaram się dziś dać XEXa, by można było wygarnąć mi błędy i niedociągnięcia :P Obiecuję się nie wkurzać XD
    • 27:
       
      CommentAuthorpebe
    • CommentTime9 May 2021 zmieniony
     
    Dziś już nie zdziałam nic, po za tym co jest. A jest:

    - Zmiana w module SFX. Opisana w poście #26 w odpowiedzi dla @maroka. Dodatkowo w OPT są przewidziane nowe opcje:
    - KEY NOTE - nie wiem, czy właściwie to nazwałem, ale chodzi o dostrajanie SFXa do własnych potrzeb. (podobne rozwiązanie, ale LIVE wprowadzam też w edycji TABsów, ale o tym dalej.
    - CLONE, INSERT, DELETE - opcje których raczej nie trzeba tłumaczyć. Klonowanie SETu, Wstawianie oraz Kasowanie.
    - Zmiana w interface. chodzi o moduł TABs. Jest podobny układem do modułu SFXa, co jest spójne. Doszła "strzałka" w bocznym menu, która jest odpowiedzialna za wejście w tryb edycji.
    - TABsy. Można "pisać" nuty, jednak na razie nie gra. Układ klawiszy jak na większości znanych mi trackerów: dwa rzędy klawiszy:
    - od Z do / (całe nuty) SDGHJL; (półnuty) podstawowa oktawa
    - od Q do P (całe nuty) i 2356790 (półnuty) dla oktawy wyżej
    co daje dwie i pół oktawy z klawisza.
    SPACE - blank
    ENTER - funkcje, a w nich:
    - END TAB - zakończenie TABa
    - JUMP - skok do miejsca w aktualnym TABie
    - REPEAT - powtarzanie (bez stosu, czyli nie będzie możliwości zagłębiania pętli - to uprości mechanizm)
    - NOTE VALUE - wartość bezpośrednia dzielnika częstotliwości do rejestru POKEYa. Nie wiem, czy dobrze to nazwałem, ale chodzi o drugi parametr instrukcji SOUND w Basicu :) NOTE VALUE jest właśnie tym LIVE dostrajaniem.
    - < BACK - powrót do edycji.
    Chyba więcej opcji nie będę dawał.
    - Doszedł wodotrysk :P Jeszcze nie funkcjonalny - TRZEBA CZEKAĆ.

    W załączniku XEX do zabawy.
    • 28:
       
      CommentAuthorpebe
    • CommentTime9 May 2021
     
    @marok: taki mały PS. Co masz na myśli pisząc: zawodna procedura? W jakim sensie?
    • 29: CommentAuthormarok
    • CommentTime10 May 2021
     
    Zawodna procedura to określenie, które oddaje sytuację, że kod może w różnych (czasem tylko szczególnych) okolicznościach działać nie tak, jak powinien (oczekiwanie, także przez samego autora). Jest to następstwem jakiś niezamierzonych (ale z reguły ewidentych) błędów w kodzie, których nie udało się uniknąć i nie zostały pierwotnie zauważone. Ponieważ to się czasem zdarza - także zdarzało się w playerach do różnych formatów w przeszłości, więc przyszło mi na myśl o tym (tylko tak z ostrożności) wspomnieć.

    "Obecnie edytor dla każdego nowego dźwięku przydziela maksymalną jego długość, tj. 128 kroków, na końcu zapisująć MOD80."

    Tak tylko dla pewności napiszę, że moje wszelkie poczynione w komentarzu uwagi na temat programu nie mają chyba związku z powyższą zmianą(?). Mnie ten automatyzm dodawania końca (MOD80) w odpowiednie miejsce wcale w niczym nie przeszkadzał.

    A już tak przy okazji, skoro pozwalam sobie znów na dłuższą wypowiedź, wciąż jednak kompletnie jestem niezorientowany, do czego służy modulacja w definicji dźwięku - a wydaje się, jest to dość oryginalne rozwiązanie i sugeruje raczej ciekawe możliwości dostosowywania tych definicji dźwięków (SFX).

    (Przyznaję, że komentuję trochę przedwcześnie, jeśli patrzeć na czas i poniekąd uwagę poświęcone temu programowi. Ale mimo wszystko chciałem pochwalić, bo idea i to, co widać, jest "wporzo".)
    • 30:
       
      CommentAuthorpebe
    • CommentTime10 May 2021 zmieniony
     
    @marok: Twoja uwaga w kwestii zawodności w wymienionym kontekście jest niezwykle cenna. To fakt, że procedury mogą być zawodne, szczególnie w specyficznych sytuacjach i trzeba mieć to na uwadze, ale to wszystko wychodzi tylko i wyłącznie w testach na "żywym organizmie". I tu dużo zależy od:
    - użytkowników danego rozwiązania, czy będą zgłaszać błędy, czy też szerzyć hejt
    - autora/ów, którzy te błędy rozwiązują i aktualizują swój kot
    oraz, co najważniejsze:
    - dobrej dokumentacji rozwiązania i stosowania się do niej przy aplikacjach

    Już Ci tłumaczę, czym jest generalnie MOD.
    W pierwotnym silniku ten parametr był stosowany do względnej zmiany "częstotliwości" od wartości -127 do +127, a jego wartość ustawiona na 128 ($80) stanowiła sygnał dla SFX Engine ;) że to koniec definicji. Pozwoliło to zaoszczędzić informacji dotyczących wielkości SFXa i jednocześnie, stworzyć dźwięk "w locie" (jeśli chodzi o jego wysokość)
    Przy wywołaniu SFX_Play(chn,base,sfxnr) - parameter base określał dzielnik (drugi parametr funkcji SOUND w Basicu) tzw. podstawę SFXa (stąd base :P) a engine czytając definicje, mógł zmieniać tą wartość.

    Tak samo będzie to działało w SFX Music Maker (SFX-Tracker) z tą różnicą, że zakres będzie mniejszy, tak by było więcej dostępnych bitów.

    I tak w przyszłości, będzie to tak wygłądać, że:
    76543210
    1vvvvvvv - Jump to v - skok wewnątrz definicji SFXa do pozycji określonej przez "v". Gdy pozycja równa zero, "zawieszenie" odtwarzania. Pozwala zapętlać odtwarzanie SFXa.

    000Svvvv - modulacja dzielnika, czyli względna wartość zmiany dzielnika. S - Sign; v-wartość (0-15), co daje możliwość zmiany w zakresie -15 do +15.

    001Svvvv - modulacja o pół tony, by łatwiej osiągnąć arpeggio. S - Sign; v to ilość półtonów przesunięcia.

    Tak wiem, to jest podobne (jak nie takie samo) jak w RMT. Jednak kompletnie nie wzoruje się na tym programie (musisz uwierzyć) Samo wyszło :P

    Też się rozpisałem :D
    • 31:
       
      CommentAuthorpebe
    • CommentTime10 May 2021
     
    W ogóle to myślałem o syntezie dźwięku, ale nie samplach!
    Jednak ma wiedza w tym temacie jest bardzo ograniczona, a nawet żadna, bo wiem tylko tyle, że jest możliwa, tylko nie wiem jak to osiągnąć :P
    • 32: CommentAuthormarok
    • CommentTime10 May 2021
     
    Co do rozwiązań koncepcyjnych to, jak już format nieco się komplikuje, warto może zasięgnąć szerokiej opinii od muzyków czy innych twórców obracających się w aspektach oferowania hipotetycznym trackerom najwłaściwszych możliwości dla osiągania wszystkiego, co potrzebne do komponowania na pokey. (Zawile i mało komunikatywnie to ująłem, ale tak już zdarza mi się pisać - proszę o wyrozumiałość.)

    Ja osobiście zgadzam się z podejściem, że pisze się głównie po swoim rozumowaniu i pod kątem sobie właściwych rozwiązań - jakie samemu się uznaje za najlepsze. Sam jestem dużym zwolennikiem takiego podejścia, ale bardziej chodzi mi nie tyle o to, by się do czyiś wymagań dostosowywać, co rozpoznać pewne obecne w "przestrzeni przemyśleń" pomysły rozwiązań, które mogłyby akurat nam osobiście się spodobać. Czyli taka giełda pomysłów, a my sobie z tego coś ewentualnie wybieramy i tak dostosowujemy do naszych planów, jak tylko nam to pasuje.
    Jeśli więc, pewne sprawy dotyczące obranego formatu nie są do końca przesądzone (zmieniają się właśnie), to niekiedy warto, uprzedzając sytaucję wypominania sobie samemu potem, że coś mogłem jednak zrobić inaczej, bo byłoby lepiej, zainicjować takie ogólne dyskusje. To wszak przy bardziej skoncentrowanej pracy nad jakimś projektem, a w przypadku takiego dość szybko powstającego softu, może trochę bardziej pomocniczego, niż docelowego, to sprawa nie jest aż tak wskazana może. (W sumie niepotrzebnie "zawodzę".)

    Dzięki za wyjaśnienie z modulacją. W sumie, jak była ona określana pierwotnie, w skali wielkości bajta, to zaiste można prościej było zamiast modulacji wstawiać nową wartość podmieniającą tą bazową - traktować to w tej formie (jeśli się nie mylę). Bo dzięki temu byłoby to prostsze (z poziomu kodu).
    Też się zastanawiam (tak na szybko), czy znacznik S (sign) nie pasuje bardziej jako pierwszy przed wartością właściwą? Przychodzi mi po prostu do głowy, że to bardziej "typowe" i może w praktyce tworzenia kodu z poziomu asemblera przynajmniej, bardziej natywne (przyjemniejsze - w sensie łatwiejsze - do obsługi), ale to też nic pewnego! (to tylko taka wstępna hipoteza).
    Ogólnie mam taką myśl, że bywają formaty muzyczne, które bardziej uwzględniają (lub przeciwnie - nie robią tego) właściwości oferty danego procesora pod który jest kompilowany dany kod, od którego wymaga się potem pewnej "sprężystości" (wyrabiania się możliwie prędko w swoim zadaniu).

    No to przepraszam ewentualnie za ten być może niepotrzebny post. (Do innych poruszanych zagadnień się już nie zdążyłem odnieść.)
    • 33: CommentAuthormarok
    • CommentTime10 May 2021
     
    Drugi koment z rzędu. Może ten wyjdzie bardziej na miejscu (często się tłumaczę ze swoich wcześniejszych wpisów - ten będzie też taki).

    Odnośnie modulacji. Poprzednia wersja formatu dawała możliwość zapętlenia czy zakończenia wcześniejszego definicji (przez MOD80), a zwykła podmiana wartości (gdyby ją za taką brać zamiast za wartość modulacji) do zapisu w rejestrze częstotliwości pozbawiała by takiej możliwości (bo nie dałoby się raczej tego inaczej - gdzie i jak zapisać). Więc to po pierwsze - więc tamto rozwiązania miało niewątpliwą przewagę (nie miało wobec siebie de facto zadnej "kontr-oferty" w tej czy innej postaci), jeśli nie dałoby się tamtego problemu (znaczy, tego znakowania w definicji SFX jej końca) rozwiązać inaczej. (Miałem to za pierwszym razem nawet na uwadze, ale jakoś pominąłem w swojej uproszczonej argumentacji. W zbyt nieprzemyślanym nastroju to pisałem.)
    Wersja obecnie rozważana jest ze znakiem S(-ign) na pozycji bitu 4, ale jest to wciąż przecież przed wartością liczbową (bity 0-3), którą interpretuje się ze znakiem - więc tutaj moje rozważania były już zupełnie od rzeczy (coś mi się przestawiło w pamięci, jak to wcześniej pisałem). Zresztą, to są rozwiązania w zasadzie zwykle może nawet równorzędne, jak się porozmieszcza poszczególne składowe bajtu, jeśli trzeba jakoś rozbierać go logicznie na osobne części (bo jest to tak po pakowane dla zrozumiałej oszczędności miejsca przeznaczanego na dane). Czy byłby on faktycznie za wartością liczbową czy przed, to może nie ma aż tak istotnego znaczenia - chociaż zawsze warto rozważyć pewną optymalizację rozstawienia tych osobnych w znaczeniu wartości zapisanych na jednym bajcie (najlepiej może w fazie konstruowania procedur do "rozbierania" wartości bajtu na poszczególne składowe, bo wtedy wychodzić może, które rozwiązanie jest jednak najkorzystniejsze. Ja, w sumie, w tym kontekście, tylko zachęcałem do takiej ogólnej refleksji, żeby się jej nie pozbawiać tak w ogóle ;) ).

    Dobrze, że dałeś ten opis o modulacji (i trochę więcej, co do przewidywanego znaczenia tego bajtu), bo dzięki temu jest możliwość wyrazić na przykład zdanie, co do zakresu dopuszczanej wartości dla takiej modulacji, czy oby na pewno ten zakres wartości (więc +/- 15) to jest akuratny, czy czasem przydał by się może nieco większy? (nie mam tu zupełnie własnego zdania, ale ktoś może mieć silnie sprecyzowane inne stanowisko i jakieś argumenty na jego poparcie, które mogłyby ewentualnie przekonywać.)


    Zgadzam się, że dopiero poprzez używanie procedury pod różnymi "konstelacjami" nabiera się przekonania, że działa ona niezawodnie (w pełni uniwersalnie). Wcześniej trudno jednoznacznie i bez cienia najmniejszej wątpliwości zakładać nieraz (bo nie napiszę raczej, że zawsze), że nic się niespodziewanego nie wydarzy / czegoś może nie przewidziało.

    Na temat syntezy dźwięku nic nie potrafię powiedzieć, bo chyba rozumiem jeszcze mniej niż Ty.

    No raczej niepotrzebne te moje ostatnie dwa komentarze (zwłaszcza ten poprzedni), więc przepraszam za nie, zwłaszcza jeśli okazały się trochę przygaszające na nastroju (przez swego rodzaju "obłęd").
    • 34:
       
      CommentAuthorpebe
    • CommentTime10 May 2021 zmieniony
     
    @marok: "W twym szaleństwie jest metoda" to cytuje do Twoich wypowiedzi. Po głębszej ich analizie, masz trafny przekaz, stąd szaleństwo :D

    Wersja obecnie rozważana jest ze znakiem S(-ign) na pozycji bitu 4, ale jest to wciąż przecież przed wartością liczbową (bity 0-3) (...)

    Tu wartałoby się zastanowić na tym, co powiedziałeś. Nie myślałem o tym, by dać znak na 0 bicie, choćby dlatego, że naturalnym zapisem liczby ze znakiem w bajcie jest właśnie ostatni bit. Jednak patrząc pod kątem wydajności przy mniejszej ilości bitów, może mogłoby mieć to znaczenie.
    Dla przykładu, co będzie szybsze?
    sprawdzenie bitu na 6 pozycji, operacja AND wartości, wykonanie operacji?
    przesunięcie bajtu w prawo, sprawdzenie FLAGI, wykonanie operacji?

    Tym się będę zajmował przy projektowaniu playera, ale warto się nad tym zastanowić już teraz, przy projektowaniu, by nie dodawać sobie roboty później.

    Na temat syntezy dźwięku nic nie potrafię powiedzieć, bo chyba rozumiem jeszcze mniej niż Ty.


    Haha, rozbawiłeś mnie. Wiesz, że występuje (jak ja) wiec, wiesz tyle samo co ja :D

    No raczej niepotrzebne te moje ostatnie dwa komentarze (zwłaszcza ten poprzedni), więc przepraszam za nie, zwłaszcza jeśli okazały się trochę przygaszające na nastroju (przez swego rodzaju "obłęd").


    Niesądze. Każde zdanie jest ważne - no może prawie, ale Ty się raczej do grupy politycznej nie zaliczasz (nie? :D)
    Obłęd to mój ulubiony stan :D ;)

    Trochę ode mnie:
    Wartości +/-15 w odniesieniu do oryginału, gdzie ta wynosiła +/-127 to bardzo mało. Zauważyłem (teraz), że niepotrzebnie opuściłem 6 bit, co w efekcie zmniejsza ten zakres właśnie do +/-15. stosując 6 bit jako Sign, można uzyskać wartość modulacji w zakresie +/-31, co już jest całkiem ładnie i tylko 4 razy mniej w porównaniu z oryginałem.
    • 35: CommentAuthor0xF
    • CommentTime10 May 2021
     
    Oryginalny wygląd użytku w trybie GRAPHICS 2 z czarnymi literami. Super! Ekran ma 240 bajtów, co znacznie upraszcza jego programowanie w asemblerze. Nie wiem, czy w MAD Pascalu też?
    • 36:
       
      CommentAuthorpebe
    • CommentTime10 May 2021
     
    @0xF: W samo sedno. Dokładnie to mnie urzekło w tym trybie, jego prostota oprogramowania. To na ile proste jest użytkowanie tego trybu w MAD Pascalu zależy od podejścia i sposobu optymalizacji podczas kompilowania kodu źródłowego, a z tego co widzę, jest całkiem nieźle. Zapewne w Assemblerze można to jeszcze bardziej uprościć (czyt. przyspieszyć) jednak, dla użytku jest to w zupełności wystarczające.

    Invers na wszystkich znakach jest czad! Wyśniłem ten pomysł haha ;) Czasami trochę brakuje znaków, ale... jak się pokombinuje to jest OK.
    • 37:
       
      CommentAuthorpebe
    • CommentTime10 May 2021 zmieniony
     
    Dziś prawie nic nie zrobiłem. Prawie, bo:

    - wdrożyłem prosty i nie oszczędny :D moduł do zarządzania stertą (dynamiczna alokacja pamięci) w efekcie czego na dane sterty tracę od strzała 2kb :/ To będę chciał zoptymalizować, bo chciałbym, aby te dane też były dynamicznie alokowane na końcu sterty, czyli np:
    - dla rozmiaru sterty 10kb i braku alokacji, dostępna pamięć wynosi 10kb.
    - przy alokacji 256 bajtów, dostępna wolna pamięć sterty będzie wynosiła 10kb-260bajtów, gdyż na dane sterty przeznaczam 4 bajty (2 na wskaźnik w stercie, 2 na rozmiar alokowanego miejsca) umieszczane by były na końcu pamięci sterty.

    Z rozmiaru można by zrezygnować, jednak wtedy należałoby niezmiernie uważać na to ile pamięci się zwalnia, a tak to po prostu HEAP_Free(hptr) i po sprawie - zwalnia ile było przydzielone.

    Przyjemne rozwiązanie i przy odrobinie pomyślunku, możnaby zaimplementować takie rozwiązanie do współpracy z XMS.

    Sterta jest bardzo szybkim mechanizmem i bardzo wydajnym, co pozwala na pracę w locie z danymi - jest to odpowiednik oryginalnego Turbo/Borland Pascalowego rozwiązania (który niewiedzieć-czemu, nie został dodany do MADzi) tam nie była zapamiętywana wielkość alokowanej pamięci, stąd czasami pojawiały się wycieki.

    - można zobaczyć zapis funkcji specjalnych modułu TABs - bardziej jako ciekawostka.

    - troszkę zmieniłem znaki i doszła opcja w module TABs Play i Stop. Oczywiście niezaimplementowana :P

    W załączniku, oprócz XEXa, dodałem jeszcze (dla zainteresowanych) unit HEAP (źródełko do swojej implementacji sterty) oczywiście w MADzi.
    • 38: CommentAuthormarok
    • CommentTime11 May 2021
     
    Takie jeszcze moje luźne rozważania.

    Modulacja (na danej pozycji w SFX) odnosi się (czyli: zawsze) do wartości bazowej, a nie do wartości uprzednio wyliczonej po danych dla danego SFX (po ostatniej modulacji dla aktualnie przetwarzanego dźwięku).

    Dzięki temu nie jest żadnym problemem określić właściwą wartość (restartową) po poleceniu "JMP" w SFX (%1.. ).


    (Tak mi przyszło do głowy..) Gdyby ograniczyć się do najprostszego:
    %1.. - jmp
    %0.. - wartość dla modulacji na 6 bitach (+ bit[0] znaku +/-)

    (Odpowiadam tak na pytanie, co wydaje mi się potencjalnie korzystniejsze w rozkodowaniu - czy znak wartości na bicie 0 czy na 6.)

    Odpada wtedy (każdorazowe) kodowanie bitu potencjalnie przełączającego modulację z wartości względnych traktowanych literalnie na półtony (staje się to wtedy ograniczeniem, bo nie można "przeskakiwać" z jednego typu modulacji na drugi w jednym SFX - być może to zbyt duża cena).

    Co nie znaczy, że trzeba by z tej drugiej możliwości (modulacji półtonami) zrezygnować (choć trzeba by się wtedy zdecydować dla danego SFX co do typu mod.), gdyż odpowiednia informacja byłaby zapisana na 1 bicie (ale pojedyńczego tylko) bajtu w tablicy bajtów, które normalnie kodują głośność i zniekształcenie (bo chyba jest taka wspólna i osobna?), ale na miejscu odpowiadającym temu, gdzie kończy się definicja modulacji odpowiedniego SFX (za każdym razem to wartość %1..) . Obie tablice stają się wtedy równe sobie (i paralelne), więc, co ważne, indeks (miejsce) "wejścia" pod konkretne SFX w obu tablicach jest taki sam.

    Na tym dodatkowym (specjalnym) bajcie dla każdego SFX moźna stworzyć system takich różnych przełączników, znaczników, dodatkowych (małych) wartości. Może on przybrać nawet dość skomplikowaną i złożoną strukturę (wzajemnie zależną).


    Czyli, uwzględniający też (o czym pisałem wcześniej) określenie typu modulacji (jak traktować wartość w definicji SFX dla modulacji). Niezbędne (wtedy).


    Jakieś jeszcze wstępne pomysły nt. tego specjalnego bajtu w definicji SFX (na pewno nie dość przemyślane). (Chyba raczej po prostu głupoty)

    Czy modulację traktujemy od wartości bazowej czy od wartości uprzednio wyliczonej?

    A jeśli dopuszczamy zmianę orientacji na wartość bieżącą (z wartości bazowej) w opcji do obliczeń szukanej wartości (częstotliwości), to też może: czy robimy ponad to (co wynika z modulacji) dodatkowe slide dźwięku (jak w cmc - up/down), czy bajdziej może podbicie dźwięku o jakąś dodatkową (małą) wartość - może być wtedy ona zapisana na (niektórych?) pozostałych bitach tego bajtu (więc być różna tylko od zwykłego dla slide +/- 1). Miałoby to może największy sens (albo i nie) w SFX z krótką definicją, grających w loopie.
    • 39:
       
      CommentAuthorpebe
    • CommentTime11 May 2021 zmieniony
     
    @marok: Wciągłeś się w projekt :) Miło mi.

    Jak to było (i póki co jest) w SFX z tą modulacją, już piszę.

    - inicjowałem moduł SFX
    - po czym, w "miejscu" gdzie chciałem mieć dźwięk wykonywałem:
    SFX_Play(chn,base,sfxid);


    Gdzie:
    - chn - Channel (kanał)
    - base - Podstawa dzielnika częstotliwości (drugi parametr instrukcji SOUND w Basic)
    - sfxid - id definicji SFXa. ID ponieważ trzymam kolejno listę wskaźników do definicji

    Definicja SFX ma budowę liniową dwubajtową, tzn:
    - pierwszy, zawiera informacje o głośności i zniekształceniu (%ddddvvvv); ten jest w czystej postaci wpisywany do rejestru POKEYa
    - drugi, wartość MOD.
    - trzeci, info o gł. i zniekszt.
    - czwart, MOD
    - piąty, %ddddvvvv...
    itd, az do, np. 8 pozycji definicji, tj.:
    - szesnasty bajt, info
    - siedemnasty, MOD80 - koniec

    Jak działa moduł SFX:
    - dla każdego z czterech kanałów są następujące rejestry:
    - 16 bit (jako wskaźnik do aktualnego SFX)
    - offset (pozycja) SFXa
    - wartość dzielnika (base)
    Czyli łącznie 16 bajtów. Dodatkowo są jeszcze rejestry pomocnicze tylko dla aktualnej iteracji (umieszczone na stronie zerowej)

    Pętla sprawdzająca dla każdego z czterech kanałów, czy:
    - offset jest różny od 255, jeżeli nie, cisza, następna iteracja (następny kanał)
    - jeżli tak, pobierane są dane z aktualnego offsetu SFXa, czyli: głośność, zniekształcenia - jako jeden bajt - i parametr MOD.
    - jeżeli MOD jest równy $80 i offset jest ustawiany na $ff, cisza, następna iteracja
    - jeżeli nie, sprawdzana jest wartość bez znaku (7bit)
    - jeżeli jest równa zero, zwiększany jest offset i następna iteracja
    - jeżeli nie jest równa zero, wartość była zawsze dodawana. Odejmowanie uzyskałem przed dodawanie "odwrotności" liczby, tj. base=base+(256-v); co przy dodawaniu 8-bitowych wartości, dawało, odejmowanie :D (przepełnienie ignorowałem)
    - ostatecznie, zwiększany jest offset i następna iteracja.

    Także, wartość base była modulowana względnie przez wartość MOD.
    Odtwarzany SFX nie musiał się kończyć ustawioną głośnością na 0, gdyż w momencie sprawdzania wartości MOD, jeśli była równa $80 to dany kanał był wyciszony przez moduł odtwarzający.

    Generalnie. Moduł SFX, jest bardzo, ale to bardzo pisany pod grę Kret. SFX-Tracker jest rozwinięciem tego modułu, które jak widać, "trochę" upgraduje.

    Moduł SFXa i tak musi być przepisany, gdyż jest kompletnie nie zoptymalizowany (przesyłam go w załączniku, sory, że w MADzi - kod assemblera był pisany pod Quick Assemblerem :P to jako ciekawostka) Stąd moja decyzja o rozwinięciu o dodatkowe możliwości.

    Teraz:
    (Tak mi przyszło do głowy..) Gdyby ograniczyć się do najprostszego:
    %1.. - jmp
    %0.. - wartość dla modulacji na 6 bitach (+ bit[0] znaku +/-)


    To podejście jest mocno zastanawiające i muszę się z tym "przespać" :D Bo kusi :D Kusi możliwościami, które pozwolą tworzyć dźwięki do gier, jak i melodie, a kto wie, może nawet syntezę :P
    Ale to kuszenie, jest jakby zwodnicze. Boję się, że procedura odtwarzająca będzie bardzo skomplikowana (jak na moje możliwości pisania w ASM :/) Boję się, że będzie też duża, a to już źle wróży SFX-Trackerowi.

    Tak naprawdę, poniosło mnie z tym projektem i już dawno nie zachowałem kompatybilności z pierwotnym modułem SFXa :/

    Ale...
    Można uprościć Twój pomysł do ustawienia dla całego SFXa rodzaju MODulacji, czy to będzie modulacja półtonami, czy też modulacja względna z zakresu nawet +/-127 rezygnując z JMP, lub z zakresu +/-63 nie rezygnując z JMP

    Takie rozwiązanie miałoby jeden, niezaprzeczalny plus: KOMPATYBILNOŚĆ z wcześniejszym modułem SFXa.

    No. I po spaniu :D

    Jakieś jeszcze wstępne pomysły nt. tego specjalnego bajtu w definicji SFX (na pewno nie dość przemyślane). (Chyba raczej po prostu głupoty)


    Pisz mi tu natychmiast te "głupoty" :D ;)

    Podobają mi się Twoje pomysły. Masz ciekawe myślenie, choć ciężko je czasami zrozumieć :D (moje pewnie też, hihi)

    Uff... się napisałem.
    • 40:
       
      CommentAuthorpebe
    • CommentTime11 May 2021 zmieniony
     
    A ja mam pytanie z nieco innej półki.

    Czy do korzystania z IO (operacje dyskowe) wymagany jest ROM systemowy?
    "Zapytuje", bo chciałbym się wyzbyć ROMu w przypadku braku pamięci. Jest jej jeszcze trochę (ok. 11kB), ale chcąc nie chcąc, ubywa :P
    • 41: CommentAuthormono
    • CommentTime11 May 2021
     
    • 42: CommentAuthortebe
    • CommentTime11 May 2021 zmieniony
     
    jeśli użyjesz {$define romoff} masz do dyspozycji pamięć pod ROM ($C000..$CFFF ; $D800..$FFF9), możesz korzystać jednocześnie z I/O

    nie należy jednak umieszczać programu ANTIC-a w takim obszarze, w momencie wystąpienia operacji I/O ROM jest automatycznie przywracany, a to kończy się źle dla ANTIC-a który zacznie wykonywać "śmieci"

    ->link<-

    kod realizujący {$DEFINE ROMOFF} pochodzi od Mono
    • 43: CommentAuthormono
    • CommentTime11 May 2021
     
    Aaaaa. Używasz MP. I bardzo dobrze :)
    Ani dlisty, ani znaków, ani pamięci ekranu, ani sprajtów, ani procedur przerwań.
    • 44:
       
      CommentAuthorpebe
    • CommentTime11 May 2021
     
    Wymienione rzeczy przez @mono mam umieszczone <$c000. Więc rozumiem, że jest ok.

    Czyli, jeżeli będę trzymał tylko stertę (HEAP) w obszarze ROM'u (który oczywiście będzie wyłączony) wszystko będzie OK?
    Mogę się nie martwić o "zwiechę". Zadbać "tylko" o to, by w momencie inicjacji VBlank do momentu wykonania swoje i po, przywrócić ROM. Dobrze rozumuję?
    • 45:
       
      CommentAuthorpebe
    • CommentTime11 May 2021
     
    O sory @tebe, nie przeczytałem Twojego linka.
    :D
    • 46: CommentAuthormono
    • CommentTime11 May 2021
     
    ROM może być zniknięty cały czas. Handler do przerwań dba o to, żeby był przywracany kiedy obsługiwane są przerwania. Natomiast Ty potrzebujesz opuścić ROM na czas kiedy wołasz procedurę z ROM-u.
    MadPascal robi to sam.
    • 47:
       
      CommentAuthorpebe
    • CommentTime11 May 2021
     
    Właśnie o tym pisałem tebe, że nie przeczytałem jego linka w którym to jest napisane :) Ale dzięki mono, utwierdziłeś mnie już całkowicie w tym, że MADzia zadba o wszystko w tej sprawie :D
    • 48:
       
      CommentAuthorpebe
    • CommentTime11 May 2021
     
    ^_^ Jak miło popatrzeć na 22KB wolnej pamięci.

    W załączniku, szybka korekta dla obsługi HEAP z wyłączonym ROMem. Jest kilka bajtów mniej niż z włączonym, ale... :P ujdzie.

    Nadal zjadam 2KB na dane sterty.

    W przypadku włączonego ROMu, sterta inicjowana jest na sztywno od adresu $B500.
    Pierwsze 2KB to dane sterty, a po tym pamięć sterty (10KB)

    Dla wyłączonego, dane są pod adresem $C000, a pamięć od $D800 :D

    Działa miodnie :)
    • 49:
       
      CommentAuthorpebe
    • CommentTime13 May 2021
     
    Heja.

    Taka skromna aktualizacja SFX Music Makera.

    Można powiedzieć, że edycja TABsów jest już ukończona.
    Zapraszam do testów.

    Po wejściu w moduł TAB i przejściu do edycji TABa, można pisać nuty. Naciskając klawisz RETURN, pojawia się lista możliwych funkcji. Domyślnie wybierana jest opcja "z pod kursora", dzięki czemu można szybko edytować parametry naciskając ponownie ENTER. Wybierając inną funkcję, nadpisana zostanie ta, na którą wskazywał kursor w TABie. Podanie parametrów odbywa się w oknie edycyjnym. Klawiszem ESC, anulujemy operacje wprowadzania parametrów, jednak wybrana funkcja zostaje (taki jawny BUG)
    Poszczególne funkcje wymagają następujących parametrów:
    - Jump To: pozycja do której ma być wykonany skok
    - Repeat: ilość powtórzeń oraz pozycja do której będzie wykonany skok
    - Note Value: wartość dzielnika częstotliwości (drugi parametr instrukcji SOUND w Basicu) oraz numer SFXa (domyślnie wpisywany jest aktualnie wybrany, ale dałem możliwość jego zmiany)

    Dużo czasu poświęciłem na ogarnięcie rozpirzonego wcześniej kodu i jeszcze trochę zostało, głównie zmienne/stałe, które nijak się mają do pełnionych funkcji :P (jakoś tak wyszło, że nie wyszło)

    Mam nadzieję, że sposób edycji TABów przypadnie do gustu i że jest intuicyjny.

    Będę się powoli zabierał za samego "grajka". Także trzeba czekać.
    • 50: CommentAuthormarok
    • CommentTime14 May 2021
     
    Brakuje chyba załącznika do zapowiadanej wersji z ostatniego posta (zgłaszam tutaj jako pierwszy, bo nie chcę wyjść na kogoś, kto to zbagatelizował - a mimo to pozwala sobie na jakiś komentarz.)


    Czuję się nawet w lekkim obowiązku trochę jeszcze kontunuować. (Głównie ze względu na przyjazne przyjęcie tych moich kilku "nie do końca" przemyślanych sugestii, ogólnych uwag i opinii.)

    Aczkolwiek...

    Połapanie się w zamiarach i celach programu jakoś mnie (już nawet) przerosło. Dlatego pisałem tym bardziej nierozsądnie. (Taką przejawiam jednakowoż "charakterystykę".)

    Mimo sugestywnej nazwy i pewnie wystarczającego opisu poczynionego wstępnie.


    Gdyż, jak teraz bardziej już zauważam, manipulacje wartościami modulacji wyrażanymi na "dzielniku częstotliwości" ustalonymi z góry, nie będzie dawało raczej (podobnej) jakości przy różnych wartościach bazowych dla zdefiniowanego w ten sposób określonego SFX. (Chyba tym bardziej skorzystanie z opcji "key note" w ten sam sposób "zwiąże" SFX.) To raczej jest rozwiązanie przystosowane dla jednej, bądź paru zbliżonych, wartości bazowej (dzielnika częstotliwości), a więc określone SFX będzie miało poniekąd ją przypisaną (z pewną tolerancją jej przesuwania), inaczej będzie to, jak sądzę, popadać w dużą dysharmonię (przynajmniej: inną charakterystykę brzmienia, która może być mniej użyteczna w możliwym do wykorzystania kontekście).


    Uczciwie mogę powiedzieć, że jeśli cały ten projekt jest to rozwiązanie przewidywane przede wszystkim jako wyspecjalizowane narzędzie do efektywnego tworzenia urozmaiconego i bogatego - w sposób możliwie ułatwiony i wygodny - udźwiękowienia w grach, to jest to poniekąd, faktycznie, wypełnienie istniejącej niszy, braku czegoś równie kompleksowego, dostępnego tak po prostu od ręki. Względnie prosta melodia towarzysząca rozgrywce i zaawansowane SFX elastycznie wchodzące po dowolnych kanałach - tak to chyba ma wyglądać.

    Wyobrażam sobie, że pełniejsze wykorzystanie tego narzędzia może spowodować, iż udźwiękowienie współczesnych gier trochę może znów zacząć przypominać najlepsze przykłady ze starych gier na atari. W sensie - podobnego nawet klimatu.

    Gdy się nie ogarnia całości i nie czuje odpowiedniego balansu, jaki powinien być nadany danej produkcji, to mnożenie oczekiwań wobec niego jest zajęciem dalece niewskazanym. Stąd raczej ograniczę już teraz swoją aktywność w tym wymiarze, chyba że faktycznie coś konkretnego (i w miarę oczywistego) przyszłoby mi na myśl "podpowiedzieć". A tak, zdaję się (przyzwoitość i pewien rozsądek to by nakazywały) na dojrzałość, wyczucie i ogólną wizję twórcy tego narzędzia.

    (Takie mi "poważne", nieco nawet "udramatyzowane" w tonie komentarze wychodzą, ale to dlatego, że staram się pisać zwykle w miarę starannie, natomiast brakuje mi na wyższym poziomie "pomyślunku" - zadanie w związku z tym, od strony zrozumienia problemu, zwykle mnie, z grubsza rzecz ujmując, przerasta.)