Rozwiązane zgłoszenia nr #19 - zmiana kolejności poleceń w menu IO - zamieniony SAVE z LOAD, dla szybkiego zapisywania #26 - poprawiony plik z domyślnymi tablicami nut - były zdublowane informacje #27 - dodany komunikat o błędzie przy operacjach IO dla Tablic nut #29 - możliwość ustawienia kroku w TABie w trybie edycji - obecne rozwiązanie jest szalone, ale zastanawiam się nad innym, bardziej przystępnym.
Szaleństwo to polega na tym, że ustawienie kroku odbywa się za pomocą kombinacji klawiszy CONTROL i cyfry. Jednak: - 0 ustawia krok na 0 - a reszta jest po prostu sumowana. Czyli naciskając wielokrotnie 1, będziemy zmieniać wartość kroku co jeden, 2 co dwa, 3 co trzy, itp, itd.
Alternatywą być może będzie po prostu komunikat w linii statusu z informacją o wprowadzenie wartości kroku.
Procedura przesuwania kursora nie przewidywała kroków większych niż rozmiar "ekranu" i działa tak, że, jeśli kursor nie był na pierwszej lub ostatniej linii w oknie to skok o ekran (strzałki z CTRL), najpierw przenosił kursor na skraj ekranu, a dopiero później (po ponownym naciśnięciu) przesuwany był ekran. To dawało miły dla oka efekt, jednak nie pozwalało na skoki większe niż ekran - funkcja TAB STEP nie działała poprawnie.
Zmieniłem to. Teraz nie ma "miłego dla oka efektu", ale za to można wykonywać skoki większe niż ilość linii na ekranie - funkcja TAB STEP działa poprawnie.
Czego się nie robi dla użytkowników :P
--- Posumowanie zmian:
- Dodałem klawisz skrótu do ustawiania kroku kursora w trybie edycji TAB (TAB STEP) - CONTROL+B, gdzie można wpisać wartość kroku
- Usunąłem obsługę klawisza CAPS LOCK w trybie edycji TAB - w pewnym sensie dublowała ona CONTROL+0. W zamian jest właśnie kombinacja klawiszy CONTROL+0, która działa dokładnie tak samo i łączy w sobie jeszcze jedną opcję - zeruje krok kursora (TAB STEP) zapoznaj się z dokumentacją, dowiesz o co chodzi.
- Uzupełniłem też dokumentację o zestawienie wszystkich klawiszy, jakimi można operować w programie oraz informacje o sposobie działania szybkiego wyboru SFXa oraz ustawianiu kroku kursora (TAB STEP) w trybie edycji TABa
mówiąc precyzyjniej w sumie, to na 65c816 program normalnie działa, tyle co zwisa w momencie w którym dopalamy fast ramem pierwsze 64kB "normalnej" pamięci Atari.
szkoda, że ten program nie wspiera stereo, lub nawet quad (pokeymax). Pewnie coś się tam napisze bo program dość ciekawy, ale - sumarycznie ze względu na stereo wrócę do tmc.
pod Rapidusem dopalenie banku #0 (pierwsze 16k std ram) powoduje zwiechę po uruchomieniu trackera.
nie znam specyfiki Rapidusa i z tego co się orientuje (a może być to błędna orientacja) MAD Pascal nie wspiera 65c816 po za zgodnością z podstawowym 6502.
Rzuciłem okiem (pod Altirrą) na tryb 65c816. Faktycznie się zawiesza przy włączonej opcji Shadow ROMs in fast RAM Opis Altirry mówi: "Enable full-speed CPU operation in ROM address space to simulate a CPU accelerator that shadows the on-board ROMs in fast memory."
Obawiam się, że to mimo wszystko nie zadziała, choć mogę się mylić. Program wykorzystuje pamięć RAM pod ROMem i włącza go tylko, gdy wykonuje systemowe operacje (głównie IO), a te, przy rozruchu programu jak najbardziej występują (wczytywanie domyślnych tematów i tablic nut). Co za tym idzie, ROM nie jest obecny cały czas w systemie. Nie bardzo rozumiem, jak działa Shadow-ROM w 65c816. Być może, gdyby MAD Pascal, wspierał 65c816 byłoby to bardziej możliwe.
szkoda, że ten program nie wspiera stereo, lub nawet quad (pokeymax).
No niestety, wykorzystanie stereo, co najwyżej Tylko w formie "wide-stereo" (jak było to poruszone) jednak, jeszcze bez implementacji.
może HELP pod klawiszem HELP? ;)
HELP pod klawiszem HELP - brzmi rozsądnie ;) ale rzuć okiem na dokumentację SFXMM. Tego jest od cholery (nie mówię o sekcji technicznej) Nawet klawisze skrótu to dwie strony A4. Myślałem nad mechanizmem pomocy, który by wczytywał dane helpa i prezentował je na ekranie, ale czy to aż tak istotne(?)
Pamiętaj, że założenie też jest takie, by program działał na stockowym Atari.
@pebe: pół serio: dziś słuchając rano radio, ktoś tam reklamował film na arte tv jak walczyć z "wypaleniem". Jeszcze nie oglądałem, ale obejrzę, bo króciutkie, może ciekawe, nie wiem, ale wrzucam link ->link<- Drugi, może też ciekawy - nie wiem - chroniczne zmęczenie ->link<-
Paweł, przetestowałem wczoraj w nocy. Wszystko działa OK. Znalazłem jeden błąd, którego wcześniej jakoś nie było. Przy przejściu z definicji songa do TAB czasem jakby mu sie psuł wskaźnik wiersza i przy przesuwaniu nie można dojść ani do wiersza 1 ani do 127 do przeskakuje. Nie umiem tego powtórzyć za każdym razem więc na razie nie rejestruję błędu. Zgłosiłem też błąd odnośnie odgrywania TAB z pełną długością 127 kroków.
Drobne poprawki: - wyjście do DOS przywraca właściwą Display List - idea by @mono - dziki błąd z zapętlaniem się utworu, gdzie jest odtwarzany TAB o długości 128 wierszy - SPACE w edycji SFX kasuje kolumnę definicji przez ustawienie wartości 0000 - CONTROL+N także w module SONG - możliwość grania w trakcie odtwarzania utworu (SONG) - niewielka redukcja rozmiaru kodu, zjedzona przez powyższe zmiany :D
@sun: dzięki za pomyślunek ;) to serio miłe. Oglądnę wieczorkiem. @pin: "danke" za cynk z DOSem, całkowicie o tym zapomniałem. @mono: "danke" za pomysł z IOCB#0 - best idea
Dooobra, to teraz przenieś drania na Lynxa, wizualizację już masz idealną, zyskasz gazyliony fanów i exposure na kanale "Look Mum No Computer" :]]]] ->link<-
Jak na razie, jest sam tracker. Wyekstrahowałem zeń sam silnik, który jest dostępny w osobnym repozytorium ->link<-
Bardzo zastanawiam teraz nad użytkami do silnika, tzn. na razie jeden program chodzi mi po głowie.
Coś co pozwoli mi wykorzystać stworzone SFXy/TABy/SONGi. Problem w tym, że nie bardzo mogę się zdecydować na język w którym to napisać. Czy tworzyć crossplatformowo, czy tylko natywnie dla Atari? Nie wiem, jak to ugryźć. Nie specjalnie znam inne języki, które pomogły by uzyskać zamierzony efekt, jakim jest wyodrębnienie z pliku SMM składowych: - tablice wskaźników SFX i TAB - tablice definicji SFX (tryby SFXów, użyte tablice nut) - definicje tablic nut w końcu, same dane SFXów i TABów (bez nazw)
Kurde, mam zagwozdkę. Ze znanych (mi) języków, dobry byłby Pascal, tylko jak go ogarnąć aby to zadziałało na Atari i PC? JavaScript i NODE? W cholere dawno nie robiłem nic w JS/NODE. Pythona nie znam :( "C" i pochodnych kompletnie ni huhu.
@pirx: To nie taki zły pomysł, jeno nie znam platformy Lynxa, a i MP chyba nie kompiluje nań :( Ziomek z kanału "Look mum No computer" jest gigantem. Jego projekty instrumentów są wprost onieśmielające :) Jakbym tam trafił to chyba bym oszalał.
@tatqoo: pracy w bród, a i Twoje zaangażowanie pomogło. Mam nadzieję, że to nie koniec współpracy.
Muszę zaktualizować CREDITSy na stronie projektu.
@Kaz: Ehh... nie sądziłem, że dożyje tej chwili, ale to jeszcze nie czas na publikację taką wiesz... na AOL. Muszę przysiąść nad dokumentacją i softem wspomagającym do SFXMM.
Gratulacje! Świetnie, że zdecydowałeś się na zakończenie jakiegoś etapu i uznanie, że w pewnym momencie można opublikować wersję "oficjalną". Miałem obawy, że będzie się to rozwijało w nieskończoność i nigdy nie będzie miało wersji "finalnej". To bardzo ważne, żeby kończyć projekty i ustalać w którym momencie jest to już jakiś gotowy standard. Bez tego nawet najbardziej obiecujący program nie ma racji bytu, a tak jak teraz, to mam poczucie, że można zacząć w tym coś tam sobie próbować działać. Jeszcze raz gratuluję!
Tak ku przestrodze. Padłem ofiarą własnego requesta. Miałem co do tego wątpliwości, ale co zrobić...dalej mam. Czułem, że to się prędzej czy później stanie.
Otóż zmiana domyślnej opcji w IO z Load na SFX spowodowała, że z rozpędu zamiast Load wybrałem save ..... i muszę odtworzyć coś nad czym pracowałem. Zrobiłem to zaraz po starcie, więc nadpisałem utwór pustym.
No cóż, jakiś automatyczny system backupów muszę zainstalować.
@tatqoo w końcu się do prosił o akcenty w SFXach. Wprowadziłem taką funkcjonalność, przerywając prace nad użytkiem do SFXMM :P
Wykorzystuje ona (nowa funkcjonalność :) ) nieparzyste wartości zniekształcenia, gdzie w rejestrze MOD/VAL określa się wartość dzielnika częstotliwości. Całość można nazwać funkcją SET FREQ for current distortion. Nie jest ona dostępna z listy funkcji SFX.
Najlepiej by było, jakby pomysłodawca przedstawił, jak to wykorzystuje :)
Na chwilę obecną, nie daję nowego releasea, ale po skompilowaniu będzie dostępna. Się uzbiera to wrzucę go (nowe wydanie) na githuba.
@mq: Dzięki bardzo za gratulacje :) Fakt, można było odnieść wrażenie, że oficjalna wersja nigdy nie wyjdzie. Sam nie wiedziałem, czy to w ogóle nastąpi, ale w końcu doczekałem się, względnie satysfakcjonującej funkcjonalności SFXMM.
Po wprowadzeniu funkcji akcentów (SET FREQ) pojawił się błąd w działaniu funkcji skoku (JUMP TO) w definicjach SFXów.
Nie był to krytyczny błąd, jednak mógł wprowadzać użytkownika w stan frustracji. Objawiał się tym, że parametry VOL/DST zdefiniowane przy funkcji JUMP TO, zostawały przypisywane w miejscu gdzie odbywał się skok. Jeżeli przy funkcji JUMP TO wartości VOL/DST były ustawione na zero, objawiało się to przerywaniem ciągłości dźwięku. W celu pozbycia się problemu, należało w kolumnie gdzie występowała funkcja JUMP TO wprowadzić w rejestrach VOL/DST wartości z kolumny do której był wykonywany skok.
W załączonym obrazie dyskietki, ten błąd został usunięty, czyli definicje SFX działają zgodnie z przewidywaniami :)
Obejrzałem youtube. Szacun! Instrukcja też wygląda dobrze. Rzadko się taką spotyka w obecnych czasach.
Wydaje mi się, że główne ograniczenia to: - brak basów 16-bitowych - tylko 64 linie w songu (CMC - 85, MPT - 128 a i tak było mało) - stereo! - brak bezpośredniego wsparcia dla synthów (najprościej chyba zdefiniować dwa instrumenty z offsetem AUDF i grać nimi jednocześnie na różnych kanałach) - brak filtrów (ale o ile wiem, używa ich się bardzo rzadko)
Wymienione przez Ciebie braki to wynik tego, że miał być to prosty program do prostych melodii. W trakcie wyszło, że program ma potencjał, jednak konstrukcja nie pozwalała na zwiększenie możliwości - zbyt ukorzenione założenie. To się już nie zmieni w tej wersji, a następna produkcja? no cóz... Na chwilę obecną jestem niesamowicie "wypruty z chęci".
Zacząłem prace nad użytkiem dla SFXMM, który by konwertował plik źródłowy SMM na kod źródłowy ASM - tak by można było swobodnie linkować. Dwa tygodnie już męczę i żadnych konkretów nie mogę zaprezentować :/
Takie "coś" wykluło mi się wczoraj. Dziś jeszcze pomajdlowałem przy tym i uznałem, że to ostateczna ostateczność :)
Tytułowy utwór z gry Planet X3 (przedstawiałem go w wątku ->link<- ), przeniesiony na małe Atari. Oczywiście wykorzystałem SFXMM :P
Ponieważ nie szukałem żadnego zapisu tego utworu, wykorzystałem swój słuch, więc może "nie brzmieć". Jeśli tak uznacie, to znak, że starość mnie dopadła i siadł mi już słuch.
Ta nowa muzyczka brzmi na pewno dobrze. Kawałek na prawdę niezłego brzmienia - świadczy tym samym dobrze o możliwościach trackera (pierwotnie może niedoszacowanych przeze mnie - na swoje jakieś usprawiedliwienie: sam nie komponuję).
Ze spraw porządkowych to tylko napiszę jeszcze, że pierwowzoru nie znam i w związku z tym nie umiem odpowiedzieć na pytanie, czy jest to wierne odwzorowanie (nie bardzo mam czas to teraz sprawdzać).
Zauważam, że kompozycja nie korzysta na pełnej długości z jednego kanału (zapewne jak w oryginale). To więc takie, powiedzmy, 3/4 możliwości trackera.
Z przyczyn, których się tylko domyślam (pewnie to łatwiejsze w edycji), w żadnej z definicji taba (a tradycyjnie - "patternu") nie robi się użytku z loopa. To pewnie styl, który chętnie będzie przyjmowany przez większość autorów, natomiast architektura trackera poniekąd jakby zachęca do korzystania z tej możliwości (i może to mieć tym większy sens, jak dla mnie, gdyby opcjonalnie móc generować, lub przekształcać choćby z narzędzia zewnętrznego, jakiś super optymalizowany blok - specjalną, bo "ultra" krótką, wersję modułu, na pewno bez nazw i innych teoretycznie zbędnych "balastów").
W sprawie tej ostatniej uwagi, może trochę mało rozważnie postawionej z mojej strony (nie pierwszy to raz), mam na uwadze to w zasadzie, że loop w tabie może przydać czytelności lub wręcz przeciwnie - to zależy od kontekstu i preferencji kompozytora. Więc odkładając ten motyw tworzenia kopozycji z tabami z loopem, mamy jeszcze korzyść z loopa w postaci skrócenia utworu muzycznego w wymiarze fizycznie zajmowanej przestrzeni. Aspekt ten odnieść jednak wtedy należy do całości charakterystyki generowanych danych w postaci takiegoż utworu - czy jest ona możliwie zwięzła, czy nie specjalnie. W tym drugim przypadku powiedzielibyśmy zapewne, że wysiłek związany z korzystania z loopa, w takim głównie celu aby skrócić fizycznie utwór, nie koresponduje w pełni z ogólną charakterystyką tego typu modułów (inaczej pisząc, jest w dużym stopniu, z perspektywy skracania go jeszcze, nieco wątpliwy).
Ta nowa muzyczka brzmi na pewno dobrze. Kawałek na prawdę niezłego brzmienia - świadczy tym samym dobrze o możliwościach trackera(...)
Dzięki bardzo.
(...)pierwowzoru nie znam i w związku z tym nie umiem odpowiedzieć na pytanie, czy jest to wierne odwzorowanie (nie bardzo mam czas to teraz sprawdzać)
Na poniższym filmie, jest utwór na którym się wzorowałem.
Ta wersja występuje w grze, więc ją traktuję jako oryginał.
Z przyczyn, których się tylko domyślam (pewnie to łatwiejsze w edycji), w żadnej z definicji taba (a tradycyjnie - "patternu") nie robi się użytku z loopa.
Tak, jak najbardziej masz racę. To po prostu łatwiejsze w edycji. W rozmowie z @tatqoo też poruszyłem ten temat, mówiąc, że nie korzysta z funkcji TABów. Po przedstawieniu mu, o co chodzi, stwierdził, że po pierwsze: nie wiedział, że można zapętlać puste wiersze TABa i ostatecznie podsumował, że: tak mu jest wygodniej komponować.
Czytając dalej Twoją wypowiedź:
(...)i może to mieć tym większy sens, jak dla mnie, gdyby opcjonalnie móc generować, lub przekształcać choćby z narzędzia zewnętrznego, jakiś super optymalizowany blok - specjalną, bo "ultra" krótką, wersję modułu, na pewno bez nazw i innych teoretycznie zbędnych "balastów"
Doszliśmy do takich samych wniosków z @tatqoo, że narzędzie zewnętrze (które jeszcze nie powstało, ysh) taką opcje optymalizacji TABów ma oferować.