251

(192 odpowiedzi, napisanych Fabryka - 8bit)

Działa save do .wav.

Rozgrzebałem więcej rzeczy niż nad tym panuję.. więc, żeby jakiś postęp był, skoro jakaś nowa funkcja działa, skompiluję to pod win i wrzucę wreszcie update na SourceForge. Najprawdopodobniej jutro. Muszę przetestować ten kod pod windą, zanim go wpuszczę w net.

Z innych działających nowinek - od ostatniej wersji - dodany dekoder MIDI (niestety, spoo trzeba jeszcze po nim ręcznie poprawić, żeby zagrało, ale jest) oraz stereo - kanały 1..4 są  w tej chwili domyślnie "lekko rozrzucone" po bazie stereo; poza tym polecenie pan channel, parametr (0..127, tak jak w midi) ustawia kanał w wybranym miejscu bazy stereo.

No i rozgrzebałem track editor.. i edytor do presetów. To jest rozbebrane i nie działa tam póki co prawie nic.

Przestudiowałem format .mod. Będzie trudniej z konwersją, niż .mid. Póki co, nawet tego nie zacząłem.

252

(192 odpowiedzi, napisanych Fabryka - 8bit)

Ściągnięte, wydrukowane.

253

(192 odpowiedzi, napisanych Fabryka - 8bit)

No to po kolei:
- zrobiłem konwerter, ale z .mid zamiast z .mod. Wstępnie działa. Problem jest taki, że wszystkie pliki .mid jakie mam są mocno polifoniczne i jako takie nie bardzo się nadają do grania na 4-głosowym, z 1 głosem na kanał, Atari Softsynth. Zaleta jest natomiast taka, że można zagrać jakąc melodyjkę jednym palcem na keyboardzie i skonwertować ją do softsynthowego tracka

- import .mod też mam w planie, bo 4-kanałowego mod nie ma wspomnianych wyżej problemów z polifonią. Muszę gdzieś dopaść specyfikację.. kiedyś nawet miałem, ale szybciej znajdę ją od nowa w necie niż w swoim bałaganie...

- save .wav jeszcze nie działa. Muszę dopisac procedurę do owego "wichajstra". Jako, że mnie samego wkurza brak owej funkcji, a procedura nie jest skomplikowana, myślę że niedługo zadziała. Jak zadziała, to po zaznaczeniu "save WAV" i wciśnięciu play, otworzy sie save dialog z pytaniem, gdzie owego wav zapisać. Żeby nie robić rewolucji, będzie grać i zapisywać jednocześnie, przynajmniej na razie. Po prostu wygenerowany strumień bajtów oprócz tego, że pójdzie do bufora karty dźwiękowej, trafi także do pliku.

- eksperymenty z konwersją midi pokazały, że bez porządnego track editora nie będzie nic, w związku z czym zacząłem go właśnie dziś robić. Póki co najprostsza możliwie wersja: edytor presetów (bardzo mi ich brak, więc za chwilę będą), możliwośc edycji jednego tracka naraz i odsłuchania go z wybranym presetem, rozdzielanie listingów softsynthowych na tracki wg numeru tracka i według numeru kanału, możliwośc zagrania kawałka melodyjki na klawiaturze PC i zapis tego do tracka, zapis projektu do pliku wraz z presetami i trackami, żeby nie dekodować masicowego listingu za każdym razem od nowa.

254

(192 odpowiedzi, napisanych Fabryka - 8bit)

Właśnie zagrała po raz pierwszy melodia zaimportowana z pliku .mid. Zagrałą na początek trochę dziwnie, poza tym wymagała trochę ręcznych poprawek, póki zagrałą... ale zagrała. Teraz oczywiście rzecz trzeba dopracować (po doprowadzeniu do tego, żeby grało bez poprawiania, wstawię nową wersję na SourceForge), ale konwerter midi->masic powoli zaczyna istnieć. Czyli teraz będzie można tak: robimy coś sequencerem, zapisujemy .mid, importujemy do PC Softsyntha, doedytowujemy, żeby było ładnie, eksportujemy do .lst i gramy na Atari 8-bit :) .

255

(192 odpowiedzi, napisanych Fabryka - 8bit)

Zacząłem robić do tego import z midi... i bank brzmień (s/h) do standardu General Midi... chodzi, oczywiście, o to, żeby się za długo nie zastanawiać co wsadzić, zamiast MIDI Program Change, np, 088: No to będzie wiadomo co wsadzić: GM088.s i GM088.h :) 
No i wyszło przy takiej robocie na to, że sporo trzeba zmienić w edytorze brzmień. Ot, edytor obwiedni jest za mało dokładny, a importu brak - patrząc się sobie na przebieg sampla i próbując to "narysować" myszą.. niewiele z tego wychodzi. Potrzebne jest narzędzie importujące dowolnego sampla i ułatwiające konwersję. Z sampla, czy to spróbkowanego, czy to wyciągniętego z amigowskiego modułka, da się wyciągnąć co trzeba...- oczywiście, brzmienie po takiej operacji jest już inne, ale w końcu to syntezator a nie sampler. Jest inne, ale "ma coś wspólnego" z tym, co miało się na początku... no i na tym w końcu polega cała zabawa w syntezę :)

256

(6 odpowiedzi, napisanych Fabryka - 8bit)

Może w takim razie w ogóle zrobić krzyżówkę i wcisnąć w obudowę ośmiobitowca jakąś płytkę pico-itx (100x72 mm)

257

(192 odpowiedzi, napisanych Fabryka - 8bit)

Opublikowałem projekt na sourceforge.

https://sourceforge.net/projects/pc-softsynth/

Póki co, cały ten sourceforge to dla mnie niezły gąszcz; to pierwszy projekt jaki tam publikuję; ale pliki są już do pobrania.

258

(192 odpowiedzi, napisanych Fabryka - 8bit)

No, bo SIO=MIDI :) z dokładnością do paru szczegółow. To raz. A dwa: ściągnąłem sobie i poczytałem specyfikację plików MIDI - SMF. No i... to prawie to samo, co zapis Softsyntha....  Numer kanału, nuta, lub komenda efektu, dt.... Rekord MIDI 7F 90 3C 60 to MASIC 1,C,12,(xxx),127...

W tej sytuacji biorę się za konwersję MIDI->Masic.

Mam w zasobach kilka tysięcy plików midi...

259

(10 odpowiedzi, napisanych Fabryka - 8bit)

Masz przestarzałego pc-softsyntha :) Jak w poniedziałek nie zarzucą mnie nagłą, a nową robotą, wstawię nowszego. Ale rzeczywiście... do tego kawałka trzeba część brzmień zastosować w formacie .s, nie .s2 - "sinran" i "hat" po konwersji "nie brzmią"

260

(192 odpowiedzi, napisanych Fabryka - 8bit)

Jak już się będę rozpędzał, to popatrzę, co mam i z czego mogę ściągać :) Na razie wyhamowałem, bo nie mam kiedy spokojnie przy tym usiąść. Ale tak: jeśli dodam do tego obsługę plików midi, to mogę robić muzykę dowolnym sequencerem, i zaimportować do softsyntha plik midi. Z drugiej strony brak mi porządnie działającego sequencera na linuxa, na licencji GPL ...

261

(192 odpowiedzi, napisanych Fabryka - 8bit)

I tak przyjdzie się nauczyć, jak to się obsługuje :) Ale ja też chciałbym mieć: edycję tracku (jednego naraz); wprowadzanie realtime dźwięków, czy to z klawiatury PC, czy jeszcze lepiej - MIDI, oraz presety - pojedyncze identyfikatory, np "piano" zamiast "GEIGE,PERCUS,15,40,10 "

Widzę to tak: otwieram track editor, definiuję track, wybieram preset, uruchamiam "record", gram na czym mam - na klawiaturze PC lub keyboardzie, robię STOP i mam zapisane, co grałem. Teraz mogę to odsłuchać, wyedytować, eksperymentować z brzmieniami itp, itd, na koniec zapisać jako track, a nie jako całość. Na koniec - edit main melody - i z posiadanych tracków składam to do kupy.

Ale to wszystko samo się nie zrobi. To muszę jeszcze napisać i  to będzie ze dwa razy więcej kodu, niż to, co do tej pory tam jest.

262

(192 odpowiedzi, napisanych Fabryka - 8bit)

Zostawiasz sobie parę linii na początku

i:

100 tron 1
110 wait 2000
120 troff 1

A teraz jak sobie piszesz track1, no to piszesz

1000 track 1
1010 1,c1
1020 1,d1,50
1999 end

Chcesz sprawdzić, co jak brzmi, to jeszcze to:

10 set 1,sinus,percus,15,50,100

Teraz play. Słyszysz, jak gra track 1. W Atari nie mogłeś w tym momencie robić nic, a tymczasem na PC gra, a ty dopisujesz, na przykład:

1030 1,e1,25

albo zmieniasz brzmienie np z sinus na glocke.

po czym apply i play - słyszysz od razu, coś zmienił. A jak zaznaczysz repeat, to sam będzie grał w kółko. A ty w tym czasie możesz dopisywać.

263

(192 odpowiedzi, napisanych Fabryka - 8bit)

Czemu nie ma muzyki? Wszyscy się do trackerów przyzwyczaili, a tymczasem... Masic jest prostszy (!) i ma więcej możliwości (!!!). Jedyny problem na Atari, to brak jakiegokolwiek edytora i pisanie po linijce na ślepo.

A tracker, a raczej ja wiem - skrzyżowanie takowego z Masicem, będzie, tylko nie jutro.

Co do pisania muzyki  w Masicu... Po prostu - najpierw definiujesz tracki.
Track 1; 1,c1;1,d1;1,e1,1,f1;1,g1;1,a1;1,h1;1,c1;kanał,nuta,kanał,nuta...  i masz (np) główną melodię. Teraz bas. Track 2; 2,c-2; 2,f-2. Zdefiniowany. Perkusja. Track 3; 3,'10; 3,'5. Zdefiniowana.

Teraz ustawiamy instrumenty. Set 1,glocke,percus,150,100,50. Set 2,bass,percus2,15,100,50. Set 3,random,percus,15,5,50.

A teraz gramy. Tron1; tron2;tron3; wait 2000; troff1; troff2; troff3.

264

(192 odpowiedzi, napisanych Fabryka - 8bit)

PC Softsynth, niestety, zwolni tempo. Wakacje się skończyły, trzeba pracować w pracy, w domu też swoje do zrobienia jest i na softsyntha brak już czasu.

Za jakiś (niedługi) czas wrzucę to, co udało się do tej pory osiągnąć. Tylko dopisze dwie procedury do eksportowania s i h, to nie jest wielki problem.

I będziemy mieli:
- interpreter Masica z obsługą efektów: > (już pełną), int, vib, echo, mod (tylko MOD 1)
- pełnoekranowy edytor Masica
- eksport do Atari: LST (do Atari Softsynha wczytujemy poleceniem ENTER a nie LOAD), .S, .H

Nie będziemy mieli, póki co:
- obsługi efektów < (repeat), PHAS i KW (jeszcze nie mam ani jednego modułu, gdzie ktoś ich używa)
- trackera

Projektu w żadnym wypadku nie zarzucam, ale teraz jakieś update'y będą raczej co tydzień, a nie co dzień.. A, przy okazji.. chyba należałoby napisać jakąś uproszczoną instrukcję obsługi Masica. W sumie, przy pełnoekranowym edytorze, całkiem swobodnie daje się tworzyć i testować na bieżąco, co się stworzyło.

265

(10 odpowiedzi, napisanych Fabryka - 8bit)

Ładne. :) Słucham sobie na PC_Softsynthu... PS: Z wiadomych przyczyn, zbieram wszystko, co ktokolwiek kiedykolwiek wypuścił w tym standardzie..

266

(21 odpowiedzi, napisanych Fabryka - 8bit)

Jak zrobię softsyntha-pc. I znajdę czas na hardware'owe dłubanie, czego od dawna nie robiłem. Czyli, najszybciej, na wiosnę.

Ostatnią zabawką jaką wyprodukowałem, było hardware'owe demo "Craft" by LFT. Tak mi sie spodobało, że skopiowałem sobie to ustrojstwo. Autor udostępnił "wsad" do Atmegi i schematy - jak ktos tego nie widział, radzę obejrzeć. Goła ATMega 88 z dodatkiem paru oporałek robi w czasie rzeczywistym dźwięk i obraz VGA.

Ale w tej sytuacji nie trzeba tego projektu robić od zera. Prototyp spłonął, ale schematy chyba jeszcze gdzieś są i można zrobić drugi. Po czym zasadzić do niego softsynthową machinę i grać, ile się da :)

267

(192 odpowiedzi, napisanych Fabryka - 8bit)

Tam pokey po prostu wysyła 4 kanały 4-bitowych próbek w świat :) Jedyne co różni PC od Atari w tym względzie, to to, że ja wysyłam z PC 16-bitowe próbki. Muszę natomiast kombinować, co wymyślił autor softsyntha. Że, na przykład,  w poleceniu vib 1,sinus,9,100, to "9" tłumaczy się na "640 Hz". A na "1" w drugim parametrze dla ">" przypada 3.3 Hz - na każdą sekundę.

Na to pomaga tylko analiza widmowa tego, co wypuszcza z siebie Atari Softsynth. Dobrze, że mam parę narzędzi do tego. Zresztą, to już wszystko, najgorszy reverse engineering mam za sobą, "phas" i "kw" nie będzie wymagał takich sztuczek.

268

(192 odpowiedzi, napisanych Fabryka - 8bit)

Zmęczony już jestem użeraniem się z kompatybilnością,, :( Dodałem drugi argument do > (glissando). Trzeba było napisac sporą ilość próbek na Atari, zapisać dżwięk i potraktować analizatorem widma, żeby mniej więcej dojść, co on z nim wyprawia. No, ale to mniej więcej zrobione.

Ale teraz robię (wreszcie) eksport do Atari. No i ręce mi opadły.. Fehler... czego on, k... , chce? Upcase ma, ATASCII ma...

no cóż.. okazało się że legalne jest INT 4,3,5.678, albo INT 4,3,5.601, ale NIELEGALNE jest INT 4,3,5.600. Ma być 5.6 i już. Bez zer nieznaczących. No, żesz ty, bulwa twoja nać !!! Niby takie nic... a jednak teraz trzeba wymyślić metodę pozbywania się tych nieszczęsnych zer.

Edit: No i działa.
Jeszcze tylko eksport .s i h do Atari... i można będzie eksportować twórczość własną do 8-bitowca. Trackera co prawda jeszcze nie ma, ale jest normalny, a nie jednoliniowy, edytor Masica, co dużo ułatwia napisanie czegokolwiek.

269

(192 odpowiedzi, napisanych Fabryka - 8bit)

Której dystrybucji używasz?

Ja ten projekt robię pod linuxem właśnie. I tylko na potrzeby użytkowników najbardziej popularnego systemu operacyjnego uruchamiam virtual boxa z windą i rekompiluję tam projekt. W związku z tym właśnie linuxowa wersja (64bit, QT) jest podstawowa :)

Jako, że środowisko Lazarusa ( http://www.lazarus.freepascal.org/ ), w którym to robię, jest wieloplatformowe, program powinien dać się skompilować także dla Mac OS.

270

(192 odpowiedzi, napisanych Fabryka - 8bit)

Cholerka.. zapomniałem wyłączyć ten pierniczony range check przed kompilacją pod win... :(  Ale i tak powinno działać, przed chwilą ściągnąłem tego rara z forum, rozpakowałem i gra.

Jedną z przyczyn wywalania range checków w tej wersji jest brak dostępu do .s i .h - normalnie fileopen, jak nie znajdzie pliku  zwraca -1, na co program reaguje komunikatem, że nie może znależć pliku. Ale jak jest włączony range check w kompilatorze, fileopen, zamiast zwrócić -1, wywala wyjątek.

Sprawdź, w "settings" ustawienia katalogów dla .s i .h - mają mieć koniecznie kończące "\".  No i wskazywać na odpowiednie katalogi.

Zresztą, mam tu źródła, zaraz je przekompiluję z wyłączonym range checkiem, przejdzie mu ta choroba.

Edit: poniżej exe skompilowany bez range check. Niestety, jak przed chwilą sprawdziłem, wpada w nieskończoną (albo bardzo długą... nie wiem jeszcze) pętlę jeśli ma źle poustawiane katalogi dla .s i .h i trzeba go wtedy zabijć z poziomu managera zadań (ctrl-alt-del). Taki to urok alfatestowych programów i kompilowania na innym systemie, niż się go pisze. Poprawię krzaka przy najbliższej okazji. - ma wypisać raz, że nie znalazł pliku i przerwać dalsze próby interpretacji.

271

(192 odpowiedzi, napisanych Fabryka - 8bit)

Zapodaję nową wersję.

Jedyne, czego brakuje, żeby moduły Jakuba Husaka brzmiały tak, jak autor zaplanował, to drugi parametr dla >

Rozbabrałem tracker, ale tam jeszcze nic nie działa. Tracker będzie się trzymał softsynthowej, a nie trackerowej filozofii działania - w końcu wynikiem ma być plik softsyntha. Zresztą, softsynth jest "bliżej muzyki" niż standardowy tracker.

272

(192 odpowiedzi, napisanych Fabryka - 8bit)

Dodałem echo i mod (niestety, tylko mod 1 - nie wiem czy uda mi się dojść jak działają mod 2 i mod 3) , poprawiłem int, dodałem nie istniejące w atari, a przydatne na PC polecenie gain, ustawiające ogólne wzmocnienie.

Nie mam już dziś siły rekompilować tego pod windę, (linux rulez :) ) może jutro wstawię porządnie zrobioną paczkę (prog+.s+.h+moduły+licencja+readme)

Ale mam już wstępną wizję trackera do tego wynalazku i może zacznę go powoli implementować.

273

(21 odpowiedzi, napisanych Fabryka - 8bit)

Czyli hardsynth właściwie już jest :)

274

(192 odpowiedzi, napisanych Fabryka - 8bit)

Interfejs - jakikolwiek - do komponowania - jest po prostu jeszcze w ogóle nie zaczęty. Ale w Masicu można już pisać, działa "normalny" edytor. Tyle, że nie ma jeszcze eksportu do Atari. Można co prawda zapisać listing, ale żeby to żyło na Atari, trzeba wyrzucić wszystkie polecenia "play" - Atari ich nie trawi; ma być 1,C1, a nie play 1,C1, zamienić wszystko na uppercase i wszystkie końce linii przekonwertować z OA 0D na ATASCII 9B.
Ten interfejs to na pewno nie będzie to tego rodzaju tracker, bo to nie pasuje pod softsynthową machinę i będzie ją wybitnie ograniczać. Muszę jeszcze wykombinować coś, co będzie nie mniej wygodne, a równie funkcjonalne i będzie w stanie jak najwięcej z tego wydusić. Przy czym najpierw chcę mieć wersję 0.10 w stanie takim, że interpretuje Atari Masica na 100% i działają wszystkie funkcje load/save/import/export. W tym momencie programem można będzie już coś zrobić, czy to na Atari, czy na PC. Wtedy zabiorę się za tracker.

Przy imporcie niektórych utworów wyskakuje komunikat "Error - bad frequency string, ignored". Nie zauważyłem żadnych konsekwencji tego komunikatu, ale razi w oczy"

To jest efekt jeszcze nie zaimplementowanych instrukcji Masica, przede wszystkim "?" - interpreter, najpierw sprawdza, czy pierwszy argument po numerze linii jest znaną mu instrukcją, a jeśli nie, próbuje na koniec zinterpretować ten string jako dźwięk do zagrania w domyślnym kanale. Wysyła ten nieszczęsny "?" do procedury zamiany stringu (typu np C#1) na częstotliwość, a ta zwraca powyższy komunikat. Innym efektem ubocznym braku implementacji efektów są linie typu play 33,cośtam. Nawet już nie wiem, które polecenie to tak załatwia, w każdym razie tu są tylko 32 kanały, więc play w kanale 33 też będzie ignorowane.

Wszystkie te krzaczki powinny znikać z czasem.

Póki co, muszę poprawić znalezione błędy w interpretacji vib (żle działa w "długiej" wersji vib wave,adsr,depth,wave len, adsr len)  oraz int (potrafi zagrać pierwszy dźwięk po int nie tym kształtem fali) .

275

(192 odpowiedzi, napisanych Fabryka - 8bit)

Build 103.

Zmiany:
- synteza w całości przepisana na zmienny przecinek
- dodana obsługa efektu int
- usunięte kilkanaście błędów (i dodane kilkanaście innych o których jeszcze nie wiem)

Archiwum zawiera tylko .exe do podmiany; jeśłi ktoś nie uruchamiał jeszcze tego programu, to powinien ściągnąc archiwum z postu #107 a potem podmienić .exe. z archiwum poniżej.