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ć...

52

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. ;)

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

53 Ostatnio edytowany przez swiety (2006-04-13 13:49:35)

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ć

54

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. :]

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

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.

56

Ta wiedza może się przydać :)

57

I skrol co pół piksela. :]

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

58

Equalizery majom byc! ;)

Epi: No problem :P synchronizacja pójdzie się kochać, ale skrol będzie jak ta lala.

60

Zielony: widziałem, dlatego zaczepiłem. ;]

lewiS: "napisz se!"

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

61

'nieliniowe' trackery epij zjada na sniadanie ;)

don't come after... please don't follow me along. when you read this, i'll be gone...
epi napisał/a:

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ść. ;)

Trzy najpopularniejsze w Polsce platformy 8-bit: Piwo, Wino i Wódka.
http://ym-digital.i-demo.pl/ - http://yerzmyey.i-demo.pl - https://soundcloud.com/yerzmyey
ŻADEN DOBRY UCZYNEK NIE UJDZIE BEZ KARY.

63

Napisz se! ;)

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

:) :) :)

Trzy najpopularniejsze w Polsce platformy 8-bit: Piwo, Wino i Wódka.
http://ym-digital.i-demo.pl/ - http://yerzmyey.i-demo.pl - https://soundcloud.com/yerzmyey
ŻADEN DOBRY UCZYNEK NIE UJDZIE BEZ KARY.

[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]

66

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 :)

67 Ostatnio edytowany przez YERZMYEY/HOOY-PROGRAM (2010-06-07 14:31:49)

epi napisał/a:

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.











.

Trzy najpopularniejsze w Polsce platformy 8-bit: Piwo, Wino i Wódka.
http://ym-digital.i-demo.pl/ - http://yerzmyey.i-demo.pl - https://soundcloud.com/yerzmyey
ŻADEN DOBRY UCZYNEK NIE UJDZIE BEZ KARY.

68

pik33 napisał/a:

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...

Sikor umarł...

69

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.

70

tak, ale sample wygenerowane software-owo. W każdym razie jak napisał yerz: gdyby dało się to potem odpalić na atarkę...

Sikor umarł...

71 Ostatnio edytowany przez Dracon (2010-06-07 21:12:34)

pik33 napisał/a:

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.

pik33 napisał/a:

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!

72 Ostatnio edytowany przez pik33 (2010-06-08 11:48:02)

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.

73

dobra robota. Jeśli się Jakub Husak zgodzi - poprosimy o pliczki w formacie SoftSyntha. I o traker zapisujący dla Atari z PC :)

Sikor umarł...

74 Ostatnio edytowany przez pik33 (2010-06-08 18:51:48)

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?

75

Macie. Pod polem, w którym piszesz jest przycisk "Wybierz plik".

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