Odp: SOFTSYNTH - może ktoś napisze dwa zdania?
swiety: To jest wojna! :P Jak za starych dobrych czasów ;):D
Ogólnie im więcej "nowości" przy SoftSynth'cie tym bardziej oddalacie się od tego co, chyba, na początku chcieliście uzyskać...
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
Silly Venture 2024 SE - stuff Dostępny jest już stuff z zeszłomiesięcznego party Silly Venture 2024
FujiCup FujiCup ma na celu wspieranie sceny gier retro, dając uczestnikom szansę na pokazanie swojego talentu
Echa Silly Venture 2024 SE Są już dostępne wyniki Silly Venture 2024 SE
Uaktualnienie firmware do The400 Poprawki do "fizycznego" emulatora ośmiobitowych komputerów i konsol Atari.
Akcja - Wsparcie w reverse-engineering Wspierajmy tych, którzy do tej pory zrobili wiele!
Strony Poprzednia 1 2 3 4 5 … 8 Następna
Zaloguj się lub zarejestruj by napisać odpowiedź
swiety: To jest wojna! :P Jak za starych dobrych czasów ;):D
Ogólnie im więcej "nowości" przy SoftSynth'cie tym bardziej oddalacie się od tego co, chyba, na początku chcieliście uzyskać...
Ktoś mi mówił, że FC (ten atarowski) mógł grać paterny dowolnej długości zaczynające się niezależnie od siebie. I był to tracker. Paterny dowolnej długości są w ogóle standardem w trackerach od dawna. Nie wiem o jakie przypisanie paternów do kanałów chodzi. Przecież nie będziemy grać standardowymi syntetykami z POKEYa, każdy patern w Neo jest jednościeżkowy, więc można go posadzić na którym kanale dusza zapragnie.
Tracker jest. Nie chodzi o to, żeby grać i edytować muzaki z programu SoftSynth, tylko coś, co gra na podobnej zasadzie. Kwestia dopisania edytora instrumentów i playera, niewykluczone, że będzie to player Świętego, przecież już o tym rozmawialiśmy. ;)
Zgadza się, choć warto rozpatrzyć jakieś założenia zanim będzie można pisać muzę - Atarowski fc nie wiem jakie miał patterny ale amigowski - 32 pozycyjne, każdy pattern ponadto miał transpozycję + numer nuty , + numer instrumentu - z tym że można było zrobić lock instrument , lack note w edytorze instrumentów - dzięki temu np bas z perkusją transponowało się idealnie.
Generalnie chyba 32 pozycje wystarczają do napisania muzy - generalnie w trackerach z amigi chciano oszczędzić na długości songu co się udało ! (np. niektóre playery miały już w sobie podstawowe fale na których odgrywana była muza)
Zielony: może i tak, może i wojna :) , ale jeśli ktoś będzie w stanie napisać jakąś sensowną muzę na takim edytorze to chyba warto coś nowego napisać
Ostatnio edytowany przez swiety (2006-04-13 13:49:35)
Ta. Zwłaszcza w MODzie, gdzie jeden patern 4 ścieżki * 64 linie zajmuje zawsze cały kilobajt. A jak chcesz zmienić dwie nutki na jednej tylko ścieżce, to jesteś następny kilobajt w plecy. :]
Swiety: No mam nadzieję, że zamiast hałasów usłyszę muzykę z linią melodyczną. :D Piszcie, piszcie, ja się będę przyglądał ;) Jakby co, służę mała wiedzą (od strony programowej) na temat oryginalnego SoftSyntha.
Ta wiedza może się przydać :)
I skrol co pół piksela. :]
Equalizery majom byc! ;)
Epi: No problem :P synchronizacja pójdzie się kochać, ale skrol będzie jak ta lala.
Zielony: widziałem, dlatego zaczepiłem. ;]
lewiS: "napisz se!"
'nieliniowe' trackery epij zjada na sniadanie ;)
Nie chodzi o to, żeby grać i edytować muzaki z programu SoftSynth, tylko coś, co gra na podobnej zasadzie.
Nie obraziłbym się, gdyby była taka mozliwość. ;)
Napisz se! ;)
:) :) :)
[OT] GUI
Tu skrol łamany co pół piksela :P
00:| C-1 0A000000 | --- -------- | --- ------- | G-2 01000000 |
01:| G-1 0A000000 | --- -------- | --- ------- | H-2 02000000 |
02:| C-1 0A000000 | --- -------- | --- ------- | H-2 02000000 |
03:| G-1 0A000000 | --- -------- | --- ------- | H-2 02000000 |
04:| C-1 0A000000 | --- -------- | --- ------- | C-3 03000000 |
Chciałbym tylko zauważyć, że heksadecymalnie da się zapisać jedynie pierwszą i czwartą nutkę z gamy: D0, re, mi, FA, sol, la, si, D0.
[/OT]
Wyciągnę temat softsyntha na wierzch :)
A to dlatego, że nie widziałem drugiego takiego programu na nic . Po prostu, przyszła amiga i jej format trackerowych modułów zawładnął światem. Tymczasem softsynth to taka klasyka syntezy: definiujesz 1 okres sampla, adsr, i .. jedziemy.
W związku z czym robię dwie rzeczy:
(1) reverse engineering plików Softsyntha.. żeby je móc wylistować i edytować na PC
(przy okazji: źródła najlepszej muzyki na Atari made by Jakub Husak, są zabezpieczone przed listowaniem)
(2) softsynth na PC. Żeby (1) brał i odtwarzał pliki atarowskiego softsyntha, (2) nie miał jego ograniczeń.
Tak sobie wyobrazić "Wodospadem Czasu" zagrane na maszynie Softsyntha z 16-bitowymi samplami...
No i to, co można by skomponować, mając Softsyntha bez ograniczenia na ilośc kanałów i na dodatek jajieś GUI.
W sumie wiem jak to zrobić, aby mi tylko czasu i zapału nie zabrakło. Jak się uda, opublikuję na GPL :)
No ma być, ma być. Trudne to to nie będzie, ale po maturze. ;]
Ówczesny maturzysta zdążył posiwieć, brzuch zapuścić, a syntezatora jak nie było, tak nie ma. ;)
pik33:
Na PC to chyba że cross-platform, żeby plik wynikowy chodził na 800XL. To wtedy rozumiem.
.
Ostatnio edytowany przez YERZMYEY/HOOY-PROGRAM (2010-06-07 14:31:49)
Tak sobie wyobrazić "Wodospadem Czasu" zagrane na maszynie Softsyntha z 16-bitowymi samplami...
No i to, co można by skomponować, mając Softsyntha bez ograniczenia na ilośc kanałów i na dodatek jajieś GUI.
No to żeś PIKnął (33 razy ;P). A na poważnie - jak sama nazwa wskazuje - SOFT(SYNTH) - tam nie ma sampli, wszystko jest liczone przez Atari, poprzez zapętlanie fali. To są pseudo-sample, generowane, a nie samplowane. Taka idea programu.
Swoją drogą - szkoda, że nie ma drugiego takiego z obsługą jak w trakerze, może by więcej muzyczek było...
Pliki .s to jednak są sample.. mają zdefiniowany 1 okres fali na 256 bajtach :) @ 4 bity na bajt.
Pliki .h to coś a'la adsr
No i siła brzmień softsyntha i jego prostota to możliwość kombinacji .s z .h - dowolnie
A teraz wyobraźmy sobie nie 4 a 16 bitów w definicji .s. I nie 256 bajtów a np 4 kB
----
A tymczasem format i syntezator mam wstępnie rozpracowany.
tak, ale sample wygenerowane software-owo. W każdym razie jak napisał yerz: gdyby dało się to potem odpalić na atarkę...
Tak sobie wyobrazić "Wodospadem Czasu" zagrane na maszynie Softsyntha z 16-bitowymi samplami...
Odlot! Akurat ten kawałek to mój najulubieńszy utwór z Softsynth i jeden z najlepszych ogólnie z Atari 8-bit !!!! :)
Solo na basie w tym utworze to po prostu mistrzostwo... Poza tym jest świetna perkusja, itp., itd.
W sumie wiem jak to zrobić, aby mi tylko czasu i zapału nie zabrakło. Jak się uda, opublikuję na GPL :)
Trzymam kciuki, oby Ci się udało!
Ostatnio edytowany przez Dracon (2010-06-07 21:12:34)
Po rozpracowaniu w jakichś 70% kodu zapisu muzyki w Softsynth jestem coraz bardziej pełen podziwu dla autora/autorów. W każdym razie mam już wstępną wersję listera na PC - autor tego softu zadbał, żeby najczęściej używane polecenie w stylu 1,C1 było zapisane jsk najoszczędniej. 5 bajtów na nutkę, z czego 2 bajty numeru linii, 1 bajt offsetu do następnego polecenia, skombinowanego z numerem kanału i zapalonym siódmym bitem (ten zapalony bit robi za kod tego polecenia, pozostałe mają kod na 4 bajcie plus 15 bit numeru linii), dwa pozostałe bajty to częstotliwość, pomnożona przez jakąś dziwaczną stałą, (65/11 - nie wiem skąd taka dziwna liczba) w każdym razie dźwięk A (440 Hz) =$0A28 = 2600 dec
A moduły zabezpieczone przed listowaniem mają najzwyczajniej w świecie wyzerowane wszystkie numery linii.
Początek kodu zaczyna się zawsze $168 bajtów od początku pliku. Wcześniej jest nagłówek i nazwy plików sampli/adsr użytych w module.
Rekord zapisu ma strukturę następującą (bajty liczę od 1):
bajt 1,2 (15 bitów) - numer linii (LO, HI); bit 7 bajtu HI jest bitem 9 kodu instrukcji
bajt 3:
- bit 7 - ustawiony na 1 oznacza 2-argumentową uproszczoną instrukcję grania tonu (kanał, ton)
- bity 6,5 - numer kanału dla niektórych instrukcji
- bity 0..4 - długośc rekordu w bajtach.
Dla polecenia "print" długością rekordu są bity 0..6
bajt 4: 8 młodszych bitów kodu instrukcji; jeśli bit 7 bajtu 3 =1 to bajt 4 i 5=częstotliwość*65/11
kolejne bajty, do końca rekordu: argumenty instrukcji.
Plik kończy się sekwencją $00,$80,$20,$20,$20
Zdekodowane jak dotąd polecenia (kody dec):
125 - pełne polecenie grania w składni kanał, ton,fala,obwiednia,głośność, czas, opóźnienie
257 - print ('?')
265 - speed
260..263 set 1..set 4
273 tron
274 troff
275 track
291 wait
Reszta kodów to już tylko kwestia czasu.. trzeba zacząć robić maszynę grającą na PC i sprawdzić, czy nie da się wyciągnąc tego samego kodu z plików .sap
--------------
EDIT: Kod źródłowy plików SoftSyntha daje się wyciągnąć z SAPa. Dają się też z niego wyciągnąć wszystkie użyte w module .s i .h. Właśnie wydusiłem "Wodospadem czasu" (nie miałem tego źródła) oraz brakujący w moich zasobach "beben.s", wrzuciłęm z pomocą windows commandera do obrazu dyskietki .atr, uruchomiłem pod emulatorem softsyntha - plik wczytuje się i gra.
Ostatnio edytowany przez pik33 (2010-06-08 11:48:02)
dobra robota. Jeśli się Jakub Husak zgodzi - poprosimy o pliczki w formacie SoftSyntha. I o traker zapisujący dla Atari z PC :)
Jak mnie nie przywalą nadmiarem roboty, to jutro zacznę z interpreterem MASICa na PC. Mam w głowie ogólny schemat, ale trzeba go zaimplementować. No i trochę żmudnej roboty z dekodowaniem całej reszty poleceń - muszę zdekodować kilka modułków żeby wydusić z niego wszystkie polecenia wraz z argumentami. Modułki Jakuba Husaka mam już wszystkie w formacie softsyntha.
Poniżej procedury w Pascalu (FPC/Lazarus) - kod pisany dziś na szybko, więc nie musi być idealny. Trzeba zrobić w lazarusie formę z elementami: Memo, 2 buttony i 1 OpenDialog, po czym dokleić poniższe procedurki.
// (c) 2010 pik33
// licencja: GPL 2.0
procedure TForm1.Button1Click(Sender: TObject); //lister
var i,fh,il,command,offset,chl,line:integer;
bufor:array[1..5120] of byte;
koniec:boolean;
linijka, l2:string;
begin
if opendialog1.execute then
begin
fh:=fileopen(opendialog1.filename, $40);
fileread(fh,bufor,$168); //168
koniec:=false;
memo1.lines.clear;
repeat
il:=fileread(fh,bufor,4);
command:=bufor[4];
line:=bufor[1]+256*bufor[2];
if line>=32768 then
begin
line:=line-32768;
command:=command+256;
end;
if command=257 then offset:=bufor[3] else offset:=bufor[3] and $1F;
if command<>257 then chl:=(bufor[3] shr 5) else chl:=-1;
l2:='';
for i:=1 to 4 do l2:=l2+inttostr(bufor[i])+' ';
if (bufor[1]=00) and (bufor[2]=$80) and (bufor[3]=$20) and (bufor[4]=$20) then koniec:=true;
if not koniec then
begin
il:=fileread(fh,bufor,offset-4);
if il<>offset-4 then koniec:=true;
linijka:='('+l2+') ';
linijka:=linijka+'line: '+inttostr(line)+' ';
linijka:=linijka+'offset: '+inttostr(offset)+' ';
linijka:=linijka+'channel: '+inttostr(chl)+' ';
linijka:=linijka+'command: '+inttostr(command)+': ';
linijka:=linijka+'args: ';
for i:=1 to offset-4 do linijka:=linijka+inttostr(bufor[i])+' ';
memo1.lines.add(linijka);
end;
until koniec;
fileclose(fh);
end;
end;
procedure TForm1.Button2Click(Sender: TObject); //cracker
var i,fh2,fh,il,command,offset,chl,line:integer;
bufor:array[1..5120] of byte;
koniec:boolean;
linijka, l2:string;
linenum_lo,linenum_hi:byte;
begin
if opendialog1.execute then
begin
fh:=fileopen(opendialog1.filename, $40);
fh2:=filecreate(opendialog1.filename+'.crack');
fileread(fh,bufor,$168);
filewrite(fh2,bufor,$168);
linenum_lo:=0;
linenum_hi:=0;
koniec:=false;
memo1.lines.clear;
repeat
il:=fileread(fh,bufor,4);
command:=bufor[4];
line:=bufor[1]+256*bufor[2];
if (bufor[1]=00) and (bufor[2]=$80) and (bufor[3]=$20) and (bufor[4]=$20) then koniec:=true;
if line>=32768 then
begin
line:=line-32768;
command:=command+256;
end;
if command=257 then offset:=bufor[3] else offset:=bufor[3] and $1F;
if not koniec then
begin
inc(linenum_lo);
if linenum_lo=0 then inc(linenum_hi);
bufor[1]:=linenum_lo;
bufor[2]:=linenum_hi;
if command>=256 then bufor[2]:=bufor[2] or 128;
filewrite(fh2,bufor,4);
il:=fileread(fh,bufor,offset-4);
if il<>offset-4 then koniec:=true;
filewrite(fh2,bufor,il);
end;
until koniec;
bufor[1]:=0;bufor[2]:=$80;bufor[3]:=$20;bufor[4]:=$20;bufor[5]:=$20;
filewrite(fh2,bufor,5);
fileclose(fh);
fileclose(fh2);
end;
end;
PS: czy macie gdzieś tu miejsce na wrzucanie plików?
Ostatnio edytowany przez pik33 (2010-06-08 18:51:48)
Macie. Pod polem, w którym piszesz jest przycisk "Wybierz plik".
Strony Poprzednia 1 2 3 4 5 … 8 Następna
Zaloguj się lub zarejestruj by napisać odpowiedź
[ Wygenerowano w 0.640 sekund, wykonano 9 zapytań ]