C64 MUSIC-TUTORIAL v0.1 (2000/09/27)

Autor: Piotr Kuciapski alias Wizard/Elysium
Kontakt: mailto:wizard@elysium.pl


1.  WSTP
  Witam  wszystkich zainteresowanych tworzeniem muzyki na  C64.
  Ten   tekst  ma  przybliy  przede  wszystkim  pocztkujcym
  muzykom  rne  aspekty  tworzenia zakw.  A  moe  kto  kto
  zajmowa  si  dotd np. kodem czy grafik  odkryje  w  sobie
  dusz kompozytora? Jakie tam bum-bum to przecie kady  moe
  sobie zrobi i bdzie mia duo radochy. No to jedziemy.
  
  Primo:   jeeli  chcesz  tworzy  muzyk  to   NAJLEPIEJ   na
  prawdziwym  komciu. Emulatory (typu CCS64 czy VICE)  odpadaj
  ze  wzgldu  na  sab  jako generowanego  dwiku  (przede
  wszystkim  brak 100% emulacji filtrw i skopany  hard-restart
  playera). Nieco lepiej jest z takimi programami jak  SIDPlay,
  ale do tworzenia zakw to si raczej nie przydadz.
  
  Secundo:   wymagana   jest  wiedza  o  notacji   binarnej   i
  szesnastkowej. Nie musze chyba tez tumaczy co to jest  bit,
  nibble   (pbajt),  bajt  czy  sowo  bo  to   jest   wiedza
  podstawowa.
  
  Tertio:  W  przykadach  bd si posugiwa  playerem  20.G4
  autorstwa  JCH  (ale to dopiero w rozdz.  3),  co  wcale  nie
  znaczy  e  informacje  zawarte w tym tekcie  nie  mog  by
  wykorzystane przez muzykw uywajcych innych playerw.
  
  

2.
   
   SOUND INTERFACE DEVICE
   W  tym  rozdziale zamieszczone s informacje na temat ukadu
  SID.  Ta  wiedza  wg  mnie  jest muzykowi  bardzo  przydatna,
  jeeli nie NIEZBDNA, przy robieniu zakw.
   
   Nie  bd si tutaj bawi w jakie szczegowe opisy kadego
  rejestru  SIDa,  bo od tego jest literatura, niemniej  jednak
  nie   zdziwcie   si  jeeli  "rozo"  jaki   rejestr   na
  pojedyncze  bity i bd wyjania po kolei znaczenie  kadego
  z  osobna  (patrz  pocztek tego rozdziau).  Moe  to  kogo
  zdziwi,  ale  przecie  nie ma tak, e w  edytorze  wybieramy
  sobie  np. ksztat fali albo rodzaj filtra zaznaczajc  jak
  opcj.  Wszystko odbywa si "niskopoziomowo" przez ustawianie
  lub gaszenie poszczeglnych bitw. Nie ma lekko.
   
   Jak  zapewne  powszechnie wiadomo SID  ma  tylko  3  kanay,
  jednake  wprawnemu muzykowi to w zupenoci  wystarcza.  Nie
  powiem  e nie przydaoby si tego wicej, ale jeli si  nie
  ma co si lubi... :)
   
   W  dalszej  czci  rozdziau zamieszczam  opis  parametrw,
  ktre  decyduj  o  tym co wydobywa si z naszego  poczciwego
  komcia. Do dziea wic.
   

2.1.Ksztat fali
  Kady  z  3  generatorw  (kanaw) moe  wytwarza  4  rne
  ksztaty fali: trjktn, pioksztatn, prostoktn i szum.
  
  
    /\    /\    /\                  /|  /|  /|
   /  \  /  \  /  \                / | / | / |
  /    \/    \/    \              /  |/  |/  |
        Trjkt                 Pia
  
  --+   +-------+   +-----
    |   |       |   |
    |   |   A   | B |
    +---+       +---+
            Prostokt             A  szum  to  narysujcie  sami
  ;)
  
  Sorry  za  prymitywn semigrafik, ale chyba kady wie  o  co
  chodzi.
  SID   ma   3   oddzielne  rejestry  dla  kadego  z   kanaw
  odpowiedzialne za ustawienia ksztatu fali (ale nie tylko  za
  to).  Oto  opis  poszczeglnych  bitw  tych  rejestrw   (od
  najstarszego do najmodszego):
  
  
  
  7 6 5 4 3 2 1
  
  Bit 7 - szum
  Bit 6 - prostokt
  Bit 5 - pia
  Bit 4 - trjkt
  Bit 3 - zerowanie
  Bit 2 - modulacja
  Bit 1 - synchronizacja
  Bit 0 - bramkowanie
  
  Jak   wida   starszy  pbajt  rejestru  (bity   7-4)   jest
  odpowiedzialny  za  to co nas w tej chwili interesuje.  Wybr
  danego  ksztatu fali nastpuje oczywicie poprzez ustawienie
  odpowiedniego  bitu  na  "1".  Ksztaty  fali  mona   czy
  (ustawi  np.  bity  6  i  4 na "1"  czyli  pbajt  przyjmie
  warto  $5 hex), w takim wypadku przebiegi nakadaj  si  -
  nie  brzmi to zbyt ciekawie. Szumu z innym ksztatem fali nie
  polecam czy.
  
  Bitami  3-0  zajm si nieco pniej. Teraz  przyjrzyjmy  si
  bliej  fali  prostoktnej. Dodatkowym parametrem  dotyczcym
  tego   (i  tylko  tego)  przebiegu  jest  wypenienie,  czyli
  stosunek czasu trwania impulsu oznaczonego na rys. jako A  do
  okresu  przebiegu  (czyli  A+B) - w  procentach.  W  argonie
  wypenienie   nazywane  jest  po  prostu  pulsem.   Regulujc
  wypenienie   zmienia  si  barw  dwiku.  Za   wypenienie
  odpowiada  rejestr  dwubajtowy, przy czym cztery  najbardziej
  znaczce  bity  (7-4) starszego bajtu (ale to brzmi  :)  tego
  rejestru s nieuywane (czyli mamy 12 bitow warto  pulsu),
  ale  to  nie jest takie istotne, polecam eksperymenty. Powiem
  tylko,  ze  wypenienie  50%  uzyskuje  si  wpisujc  0   do
  modszego  bajtu  rejestru  i  ustawiajc  bit  3  na  "1"  w
  starszym bajcie (przydatne przy robieniu perkusji),czyli  12-
  bitowa  warto  $800  szesnastkowo.  Wypenienie  50%   daje
  dwik   "najmocniejszy",  a  bliskie  0  i   100%   "saby".
  Oczywicie   wypenienie  ustawia  si  dla  kadego   kanau
  osobno.
  
  Starszy bajt     modszy bajt
  7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 |
  \_____/ \________________________/
  nieuy   wypenienie (12 bitw)
  wane
  

2.2.Obwiednia (ADSR)
  Kolejne  4  wane  parametry,  ktre  decyduj  tym  razem  o
  ksztacie  amplitudy przebiegu generowanego  przez  ktry  z
  kanaw. S to:
  
  A  Attack  -  czas  narastania  amplitudy  fali  od  zera  do
  maksimum,
  D  Decay  -  czas opadania od maksimum do poziomu  ustalonego
  przez parametr S,
  S  Sustain  -  poziom  ustalony amplitudy (przy  podtrzymaniu
  dwiku),
  R Release - czas opadania do poziomu zerowego.
  
  Wyglda to mniej wicej tak:
  
  max    /\
        / .\
  S    /  . ---------\
      /   . .        .\
  0  /    . .        . \
     .    . .        .  .
     .  A .D.        . R.
  
  1  +---------------+
     |               |       <-- impuls bramkujcy
  0--+               +----
  
  Mwic  opatologicznie amplituda (gono) dwiku najpierw
  ronie  przez  czas A, pniej maleje przez czas  D,  zostaje
  podtrzymana  przez pewien czas (uwaga: to nie  jest  parametr
  S, ale o tym niej) i maleje przez czas R. Kapewu?
  
  Oczywicie   rys.  tego  nie  odzwierciedla,   ale   opadanie
  amplitudy   (odcinki  D  i  R)  nie  ma  tak  prostoliniowego
  przebiegu  jak  jest pokazane, tylko logarytmiczny,  ale  who
  carez. Wiadomo o co chodzi.
  
  Kady kana ma po dwa bajty odpowiedzialne za obwiedni:
  
  Bajt 1          | bajt 2
  7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0
  \_____/ \_____/   \_____/ \_____/
  attack  decay     sustain  release
  
  Kady  z parametrw opisany jest przez 4 bity, mamy zatem  po
  szesnacie  moliwych wartoci kadego  z  nich.  Jeeli  np.
  bity   7-4  (parametr  A)  ustawi  si  na  "0"  oznacza   to
  minimalnie    krtki   (prawie   zerowy,   dokadnie    kilka
  milisekund) czas narastania, jeeli na "1" ($f hex)  to  czas
  ten  jest  max. i wyniesie ok. 8 s. Podobnie jest w przypadku
  parametrw  D i R z tym, e max. czas dla tych param.  wynosi
  ok. 24 s.
  Parametr  S w praktyce oznacza gono dwiku (0-minimalna,
  $f - maksymalna).
  
  Tu  naleaoby wyjani co to takiego ten impuls  bramkujcy.
  W  rozdz.  2.1  opisaem  rejestr odpowiedzialny  za  ksztat
  fali. Bit 0 w tym rejestrze to jest wanie to o czym mwi.
  Po  ustawieniu tego bitu na "1" nastpuje modulacja  ADSR,  a
  wiec  mamy  faz narastania (A), opadania (D) i  podtrzymania
  (S),  ktra trwa a do momentu ustawienia tego bitu  na  "0".
  Wtedy  dwik  zanika (R). Paniali? Z tego wynika,  e  jeli
  impuls  bramkujcy  "skoczy si" jeszcze przed  zakoczeniem
  narastania  (A) to generator obwiedni przejdzie  od  razu  do
  fazy zaniku (R).
  
  Przykadowo: ADSR=$a3f9 oznacza narastanie przez  0.5s  ($a),
  opadanie  przez  0.072s  ($3), podtrzymanie  na  poziomie  $d
  (gono)  i  zanik  dwiku  w  czasie  0.75  s.  Nie  bd
  przytacza  czasw trwania odpowiadajcych danym  wartociom,
  bo to i tak dobiera si eksperymentalnie.
  
  

2.3.Czstotliwo dwiku
  To  zagadnienie pomin, jako e wiedza o tym jak  ustala  si
  czstotliwo (wysoko) dwiku kompletnie nie przydaje  si
  muzykom.  W edytorze wpisuje si przecie od razu nuty,  wiec
  nie  ma  sensu  zawraca sobie gowy czstotliwoci.  Powiem
  tylko,  e kady kana ma 2-bajtowy rejestr opisujcy wanie
  ten  parametr. Moe on przyjmowa wartoci od 0 do  ok.  4000
  Hz.
  

2.4.Filtry
  C64   ma   3  rne  typy  filtrw:  dolnoprzepustowy   (DP),
  grnoprzepustowy (GP) i pasmowoprzepustowy (PP).  Nie  znaczy
  to  jednak  ze mona sobie filtrowa kady jeden kana  innym
  filtrem  -  co  to to nie. Mona tylko wybra rodzaj  filtru,
  jego  czstotliwo rezonansow (fr)/graniczn (fg),  stopie
  tumienia  i  "zaaplikowa" ten filtr  do  wybranych  kanaw
  (np.  do  kanau  nr  1, albo do wszystkich  naraz,  jak  kto
  chce).
  
  Oto       charakterystyki       amplitudowo-czstotliwosciowe
  poszczeglnych rodzajw filtrw:
  
  A^      DP           ^      GP          ^      PP
   |                   |                  |
   |------\            |     /--------    |      -.-
   |      .\           |    /.            |     / . \
   |      . |          |   | .            |    |  .  |
   |      . |          |   | .            |    |  .  |
   |      . \          |   / .            |   /   .   \
   +------.-------->   +-----.-------->   +-------.-------->
          fg      f        fg               fr
  
  
   ^      PZ
   |----\    /-----
   |     \  /
   |      \/
   |       .
   |       .
   +-------.-------->
           fr
  
  Znowu  sorry za brzydkie rysunki. O co tu chodzi?  Po  prostu
  jak   same  nazwy  wskazuj  -  filtr  DP  tumi  sygnay   o
  czstotliwoci  wikszej  ni  czstotliwo  graniczna   fg,
  (przyjmijmy   tak   dla  uproszczenia,   bo   jeszcze   jaki
  elektronik  by  si obruszy),a podbija niskie czstotliwoci
  (basy).  GP  robi dokadnie odwrotnie (podbija "soprany"),  a
  PP   tumi  wszystkie  sygnay  o  czstotliwoci  innej  ni
  rezonansowa  fr  (znowu uproszczenie). A  jak  uzyska  filtr
  pasmowozaporowy  (PZ)?  Nakadajc na siebie  charakterystyki
  filtrw  DP i GP. Mwic prociej - wczajc oba  te  filtry
  naraz.  Filtr  PZ  oczywicie tumi sygnay o  czstotliwoci
  rezonansowej  fr  (gwoli cisoci - o cz.  bliskiej  fr),  a
  przepuszcza pozostae.
  
  Za   rodzaj   filtra  odpowiada  jeden  z   rejestrw   SIDa.
  Interesuj nas tylko 3 bity:
  
  Bit 6 - w. filtr GP
  Bit 5 - PP
  Bit 4 - DP
  
  Tak  wiec  np.  ustawienie bitw 6 i 4  na  "1"  (warto  $5
  pbajtu) wczy nam filtr PZ.
  
  W   inny  rejestr  SIDa  wpisuje  si  warto  wspczynnika
  tumienia  rezonansowego i informacj  o  tym,  ktre  kanay
  maja by poddane filtracji.
  
  Bity 7-4  - wspczynnik tumienia
  Bit 3     - filtruj sygna z wejcia (to nas nie obchodzi)
  Bit 2,1,0 - filtruj odpowiednio kana 3,2,1.
  Jak  wida  starszy  pbajt odpowiada  za  tumienie  i  tak
  warto    $f    tego   pbajtu   oznacza   max.    podbicie
  czstotliwoci  bliskiej  granicznej  (na  ch-ce  tworzy  si
  takie  "kolanko" w pobliu cz. granicznej, patrz rys. poniej
  -  przykad  dla filtra GP), a warto 0 tumienie  normalne,
  czyli brak podbicia (jak na rysunkach wyej).
  
  A^
   |     /-\
   |     |. \
   |     |.  \
   |     |.   --------
   |     |.
   |     |.
   |    / .
   |   /  .
   -------.-------------->
          fg              f
  
  Bity  2-0  nie  bardzo muzykw obchodz,  bo  i  tak  playery
  wczaj  poszczeglne  bity w zalenosci  od  tego,  czy  na
  danym  kanale odtwarzany jest aktualnie instrument filtrowany
  czy  nie  (o  tym w nast. rozdziale). Niektre  playery  maj
  moliwo filtrowania tylko jednego kanau.
  
  Za   czstotliwo   rezonansow/graniczn   odpowiada   taki
  okrojony  dwubajtowy  rejestr  SIDa  (tylko  8+3=11   bitw).
  Dziwnie  to jest rozwizane, poniewa te "samotne" 3 bity  sa
  mniej  znaczce,  duo playerw wogle je  pomija  i  ustawia
  tylko  8  starszych. Jak mona si domysli  ustawienie  tych
  omiu  bitw na "0" to czstotliwosc graniczna/rez. bliska  0
  Hz  (dokadnie 30 Hz), za ustawienie wszystkich na "1"  ($ff
  hex) to max. fg/fr (ok. 12 kHz).
  
  Po  co  te filtry? Jak kto chce zrobi podne basy  to  bez
  filtrw  si  nie  obejdzie. A powiedzcie teraz  "buuaaaa"  -
  taki  dzwik  te  si  da  zrobi  przy  pomocy  filtrw  ;)
  Oczywicie mona uzyska mnstwo innych ciekawych efektw.
  

2.5.Modulacja i synchronizacja.
  Zajmijmy   si   teraz  bitami  nr  2   i   1   w   rejestrze
  odpowiedzialnym  za  ksztat fali (rozdz.2.1).  Jeli  ustawi
  si  bit 2 np. w rejestrze kanau nr 1, to sygna tego kanau
  bdzie  modulowany  koowo  przez  sygna  z  kanau   nr   3
  (odpowiednio  sygna  z gen. 2 jest zawsze  modulowany  przez
  sygna  z  gen. 1, a gen. 3 jest modulowany przez gen.  2,  a
  jak  si  wczy  modulacj  na wszystkich  kanaach  to  ju
  wogle nie wiadomo o co chodzi ;) )
  
  Podobnie  jest z synchronizacj, z tym e ustawia si  bit  1
  rejestru   ksztatu  fali  odpowiedniego  kanau.  Nie   bd
  prbowa    nawet    rysowa   przebiegw   modulowanych    i
  synchronizowanych, bo s za skomplikowane.  I  tak  przebiegi
  nie   powiedz  wam  co  si  otrzyma  suchowo,  to   trzeba
  sprawdzi dowiadczalnie.
  

2.6.Player.
  Player  to  po  prostu  procedura modyfikujca  na  podstawie
  danych dostarczonych przez muzyka odpowiednie rejestry SIDa.
  I  tyle.  Istnieje  caa  masa ronych  playerw  i  edytorw
  napisanych  specjalnie dla nich. Skadaj  si  przewanie  z
  dwch  czci:  procedury inicjujcej i  grajcej.  Procedura
  inicjujca  wywoywana  jest  tylko  raz  przed  rozpoczciem
  odtwarzania  zaka. Procedura grajca musi  by  odtwarzana  z
  odpowiedni szybkoci w rwnych odstpach czasowych  (zwykle
  50  razy na sekund czyli "co ramk" jak mwi koderzy),  ale
  istniej  rwnie playery umoliwiajce wywoywanie procedury
  grajcej 200 razy na sekund (cztery razy na ramk)  a  nawet
  i   wicej.   Umoliwia  to  tworzenie  znacznie  ciekawszych
  instrumentw.
  
  UWAGA!  Mwic "ramka" (ale nie taka na obrazek ;) )  mam  na
  myli  czas (ew. przedzia czasowy) w jakim ekran monitora/tv
  podczonego  do komcia jest omiatany w caoci przez  wizk
  elektronw (ok. 1/50 s). Jeeli nie wiesz co to ma  wsplnego
  z muzyk to przeczytaj ten rozdzia raz jeszcze :)
  


3.
   
   TWORZENIE INSTRUMENTW.
  Tworzenie  instrumentw w takich edytorach jak DMC, Hardtrack
  Composer  czy JCH-Editor w zasadzie nie roni si zbytnio  (a
  w  innych  edytorach  pewnie te). Do  dyspozycji  muzyka  s
  przewanie  dostpne 32 definicje instrumentw. Definicje  te
  obejmuj praktycznie wszystkie parametry opisane w rozdz.  2,
  a  wiec  ADSR,  ksztaty fali, wypenienie fali prostoktnej,
  filtry itp. itd.
  
  Zwykle  definicja  instrumentu  zawiera  osiem  bajtw.   Ich
  znaczenie  podam nieco dalej. To oczywicie nie wszystko.  Do
  dyspozycji  uytkownika pozostaj te  przewanie  3  tabele:
  tabela  ksztatw fali, tabela wypenienia fali  prostoktnej
  (dalej bd nazywa ja tabel pulsw, bo tak si przyjo)  i
  tabela  filtrw. Kada definicja instrumentu odwouje si  do
  konkretnych  pozycji  w poszczeglnych tabelach,  ale  o  tym
  szczegowo  poniej.  Fragment  tabeli  przynaleny   danemu
  instrumentowi nazywijmy makrodefinicj.
  

3.1.Tabela ksztatw fal.
  Tabela  ksztatw fali zawiera to co mwi jej nazwa, ale  nie
  tylko.  Skada si (przewanie) z 255 pozycji i dwch kolumn:
  w  jednej  z  kolumn  wpisuje si informacje  (hex  ofcoz)  o
  ksztacie   fali,  w  drugiej  -  wzgldn  lub   bezwzgldn
  wysoko   dwiku.  Przyjmijmy,  e  definicja   instrumentu
  odwouje  si  do  pozycji nr 05 w tabeli fal,  za  fragment
  samej tabeli wyglda tak:
  
  Poz. A  B
  05  de 81  <--szum, ADSR w.(bramkowanie na "1")
  06  03 43  <--prostokt, bramkowanie na "1" i w.modulacja
  07  00 40  <--nadal prostokat, ale bit bramkowania na "0"
  08  7f 07  <--skocz do poz. 07
  
  Ju  objaniam. Wartoci z kolumny B s "ywcem" przepisywane
  do  rejestru  ksztatu fali (patrz rozdz. 2.1), tak  wiec  tu
  decydujemy   nie   tylko  o  fali  ale   te   o   modulacji,
  synchronizacji i bramkowaniu.
  Kolumna  A wpywa na wysoko dwiku w danej chwili (ramce).
  Jeeli  warto w tej kolumnie na danej pozycji jest mniejsza
  rwna  7d  to  jest to liczba ptonw jak  doda  player  do
  wysokoci  zagranego dwiku. Janiej: jeeli zagramy  dwik
  C#3  a  w  kolumnie  A wpiszemy na odpowiedniej  pozycji  np.
  wart.  03  to  uzyskamy dwik o 3 ptony  wyszy  ni  C#3,
  czyli  E-3  (oczywicie w danej chwili czasowej  -  szczegy
  przy omawianiu arpeggio).
  Jeli  natomiast warto w kolumnie B jest z przedziau 80-ff
  to  niezalenie od tego jaki dwik zagramy, czy b-0 czy g#6,
  wysoko   dwiku   w  danej  chwili   pozostaje   ta   sama
  (konkretnie taka, jak warto wpiszemy). Zrozumiano?
  (UWAGA!  Troch  inaczej jest jeli w  definicji  instrumentu
  ustalimy,  ze chodzi nam o tzw. instrument typu drum,  ale  o
  tym dalej).
  
  Po  zagraniu dwiku instrumentem, ktry wskazuje na  pozycje
  nr  05  w  tej tabeli, player modyfikuje odpowiednio rejestry
  SIDa  zgodnie  z reguami podanymi wyej, po czym  przechodzi
  do  pozycji nr 06. Po nastpnym wywoaniu procedury  grajcej
  (po   ramce)   modyfikowane  s  rejestry  SIDa   zgodnie   z
  informacja  zawart  w  pozycji 06  itd.  Komenda  '7f'  jest
  przydatna przy zaptlaniu. '7f 07' oznacza 'skocz do  pozycji
  nr  07'. Jak wida na przykadzie po dojciu do pozycji nr 07
  player bdzie ja odtwarza w kko. Proste chyba?
  

3.2.Tabela wypenienia fali prostoktnej.
  Jeeli  nasz  instrument bdzie zawiera fale prostoktn  to
  musimy  wprowadzi te informacje dla playera o  wypenieniu.
  Do  tego  suy tabela pulsw. W JCH 20.G4 skada si  ona  z
  czterech   kolumn  i  64  pozycji.  Przyjmijmy  e  definicja
  instrumentu wskazuje na pozycj nr 0c. Fragment tabeli:
  
  Poz. A  B  C  D
  0c   2a 00 00 0c
  
  Jak  pamitamy wypenienie to warto 12-bitowa,  jednake  w
  playerze  20.G4  zrezygnowano z modyfikowania 4  najmodszych
  bitw  tej  wielkoci  (przy  ustalaniu  pulsu)  i  mamy   do
  dyspozycji  tylko 8 (te 4 pominite bity s zawsze  ustawiane
  na  "0").  Konkretnie  t  8-bitow warto  wpisuje  si  do
  kolumny  A. Lewy pbajt (w naszym przypadku '2') jest  mniej
  znaczcy,   a   prawy   (warto  'a')   bardziej   znaczcy.
  Otrzymalimy   wic  warto  wypenienia   $a20   (12-bitowa
  warto).  A  co  z  kolumnami B, C, D? Cierpliwoci.  Jeeli
  tabela wygldaaby tak:
  
  Poz. A  B  C  D
  0c   08 00 00 0c
  
  To   otrzymalibymy   wypenienie  50%  ($800).   Wypenienie
  bliskie 0:
  
  Poz. A  B  C  D
  0c   10 00 00 0c  <--wypenienie $010
  
  a wypenienie bliskie 100%:
  
  Poz. A  B  C  D
  0c   ef 00 00 0c  <--wypenienie $fe0
  
  Kumacie czacz?
  Jeeli    jednak   zdefiniowalibycie   w   powyszy   sposb
  wypenienie  to instrument brzmiaby "sucho".  Lepsze  efekty
  mona   uzyska  stosujc  zmian  wypenienia,  wtedy  mona
  otrzyma naprawd "soczysty" dwik :) Oto przykad:
  
  Poz. A  B  C  D
  0c   34 60 05 10
  10   ff 1a 90 14
  14  ff 1a 10 10

  Ju  objaniam. Pozycja 0c: ustalamy warto  pulsu  na  $430
  (kolumna  A),  potem  przez  5 kolejnych  ramek  (kolumna  C)
  wypenienie  zwiksza si o $060 (NIE O $600  tylko  o  $060,
  czyli  w  efekcie  wyniesie $610 = $430 + 5*$060).  Nastpnie
  player  jest  informowany przez nas e ma si "przenie"  do
  pozycji  nr $10 (kolumna D). Warto ff w kolumnie A  na  tej
  pozycji  oznacza, e player ma warto wypenienia pozostawi
  "nietknit"  (czyli dalej bdzie tam $610). Przez  $10  (16)
  kolejnych  ramek puls bdzie si ZMNIEJSZA o $01a,  czyli  w
  efekcie  otrzymamy  $470  = $610 - $10*$01a,  potem  skok  do
  pozycji  nr $14 i dzieje si prawie to samo z tym,  e  przez
  16   ramek  dodajemy  do  wypenienia  warto  $01a,   czyli
  otrzymujemy z powrotem puls $610. Nastpuje ponowny  skok  do
  pozycji  nr  $10  (zaptlenie). Jak atwo zauway:  jeli  w
  kolumnie  C  podamy warto X z przedziau  80-ff  to  bdzie
  oznaczao,  e player ma ODEJMOWAC od aktualnego  wypenienia
  warto  podan w kolumnie B przez X minus $80 ramek. Kolejny
  przykad:
  
  Poz. A  B  C  D
  0c   08 00 08 10 <--ustal wypenienie na $800, przez 8 ramek
                      go nie zmieniaj i id do poz. 10
  10   7c 34 98 14 <--ustal puls na $c70, przez $18 ramek
                      odejmuj warto $034 i skocz do poz. 14
  14  ff 00 00 14 <--nie ustalaj adnej nowej wartoci pulsu,
                      nie zmieniaj jej i id do poz. 14 (zaptlenie)

  Mam    nadziej   ze   ten   przykad   rozjani   wszystkie
  wtpliwoci.
  Dziki  tej technice moemy uzyska efekt "pywania" dwiku.
  Tego  si  nie da opisa, to trzeba usysze :)  To,  w  jaki
  sposb  bdziecie zmieniali puls, zaley tylko od  tego  jaki
  dwik chcecie osign - eksperymenty to podstawa.
  
  

3.3.Tabela czstotliwoci filtru.
  Przejdmy teraz do tabeli filtrw. Jest prawie taka sama  jak
  tabela  wypenienia.  Przyjmijmy,  e  definicja  instrumentu
  odwouje si do pozycji nr $24 i w tabeli tej mamy:
  
  Poz. A  B  C  D
  24  01 06 20 28 <--ustal czstotliwo filtru na $01, przez 32
                    ramki ($20) dodawaj warto 06 i skocz do poz. 28
  28  ff fa 20 2c <--nie ustalaj nowej wartoci cz. filtra,
                    przez 32 ramki ($20) ODEJMUJ 6 i skocz do poz. 2c
  2c   80 00 10 30 <--ustaw czst. na $80 i przez 16 ramek
                    ($10) nic nie rb
  30   ff 00 00 30 <--nic nie rb (zaptlenie)

  Spiesz  z  wyjanieniami. Jak wida zasady s te same  co  w
  przypadku  pulsu, a wic kolumna A: ustal cz. filtra/pozostaw
  j  bez  zmian ($ff), kolumna B: warto DODAWANA przez  czas
  (liczb  ramek)  podany  w kolumnie C  (czas  zawiera  si  w
  przedziale  00-ff)  i  kolumna D: skok do  wybranej  pozycji.
  Kolumna A zawiera wartoci wpisywane do 8 najstarszych  bitw
  rejestru   czstotliwoci  granicznej  filtru  (3  najmodsze
  player ustawia na "0" i nie modyfikuje ich).
  Zapytacie moe jakim cudem przy poz. 28 player odejmuje 6  od
  biecej  czstotliwoci przez 32 ramki. To  proste.  Warto
  czstotliwoci   jest  8-bitowa  i  moe   zawiera   si   w
  przedziale  od  0 do $ff. Jeeli do liczby $fe  dodamy  1  to
  otrzymamy  oczywicie $ff, ale jeeli  do  $ff  dodamy  1  to
  otrzymamy znw 0 (jak gdyby "przekrci si licznik"),  bo  na
  8  bitach  nie  ma wartoci wikszej ni $ff.  Logiczne  jest
  zatem  to, i po dodaniu do liczby $ff wartoci $ff otrzymamy
  w  wyniku  $fe,  czyli jak gdyby ODEJMIEMY 1. Inny  przykad:
  dodanie  $fc  jest rwnowane odjciu liczby  4,  po  dodaniu
  liczby $f4 zauwaymy, e odjlimy $0c, za dodawanie $e0  to
  to  samo  co odejmowanie $20. Jasne chyba? Dlatego w  tablicy
  filtrw  nie rozgraniczono dodawania i odejmowania,  tak  jak
  to byo przy pulsie.
  
  

3.4.Definicje instrumentw.
  Teraz   pora   na   sam  definicj  instrumentu.   Jak   ju
  wspomniaem  zawiera  ona 8 bajtw, definicji  moe  by  $20
  (32). Przykad definicji instrumentu nr 03:
  
  Poz. A  B  C  D  E  F  G  H
  03  b3 fc 81 d1 04 10 17 17

  Pierwsze  dwa pola to ustawienie obwiedni ADSR (patrz  rozdz.
  2.2).
  Bajt  A:  lewy  pbajt  to  Attack,  prawy  to  Decay.   Tu:
  Attack=$b, Decay=$3.
  Bajt  B:  odpowiednio  Sustain  i  Release.  Tu:  Sustain=$f,
  Release=$c.
  
  Bajt C na razie pomijam.
  
  Bajt  D:  lewy pbajt to wspczynnik tumienia  filtru  (tu
  =$d),  prawy - typ filtra (zgodnie z opisem z rozdz.  2.4,  z
  tym  e  w tym polu bity 2-0 odpowiadaj dokadnie bitom  6-4
  rejestru  typu filtra opisanego wanie w tym rozdziale).  Tu
  ustawiono filtr DP bo bit 0 w polu D jest ustawiony  na  "1",
  czyli  bit 4 rejestru SIDa jest ustawiony na "1" :)  Wiem  e
  to  brzmi  troch  dziwnie ale tak dokadnie  jest.  Inaczej:
  prawy  pbajt  pola  D odpowiada lewemu pbajtowi  rejestru
  SIDa  sterujcego filtrami. Prociej: warto 4 oznacza filtr
  GP,  2  -  filtr PP, 1 - filtr DP, 4+1=5 - filtr PZ.  Zreszt
  niej podam wicej przykadw.
  
  Bajt E: pozycja startowa w tabeli filtrw.
  
  Bajt F: to samo co E tylko odnosi si do tabeli wypenienia.
  
  Bajty  G  i  H:  wskazuj na pozycj w  tab.  ksztatw  fal.
  Zwykle  w  obu wpisuje si to samo, a czym si  te  dwa  pola
  rni podam gdzie indziej.
  
  Inne przykady:
  
  Poz. A  B  C  D  E  F  G  H
  04  00 f9 c0 00 00 00 00 00
  05  04 55 81 f4 10 14 2f 2f
  06  30 af 42 05 1c 10 11 11
  07   11 98 00 82 40 24 e0 e0
  
  Instrument 04: ADSR bez komentarza, filtr wyczony,  pozycja
  w tabeli pulsu i fal 00.
  Instrument  05:  tumienie filtra = $f,  wczony  filtr  GP,
  pozycja w tab. filtrw $10, pulsu $14 i fal $2f.
  Instrument  06: tumienie filtra = $0, wczone filtry  GP  i
  DP  NARAZ  (czyli  filtr PZ), pozycje w tabelach  odpowiednio
  $1c, $10 i $11.
  Instument 07: tumienie = $8, wczony filtr PP, wskazuje  na
  pozycje: nr $40 w tab. filtrw, $24 wypenienia i $e0 fal.
  
  Wrmy  do  pola  oznaczonego jako C.  Lewy  pbajt  okrela
  "tryb"  instrumentu. Bit 6 pola C ustawiony na "1"  informuje
  player,   e   ma   do   czynienia  z  instr.   typu   'drum'
  (perkusyjnym).   Wspominaem  o  czym  takim   przy   okazji
  omawiania  tabeli  ksztatw fal  (rozdz.  3.1).  Jeeli  typ
  'drum'  jest wczony to wartoci z lewej kolumny (A)  tabeli
  ksztatw   fal   s  wpisywane  bezporednio   do   rejestru
  czstotliwoci  danego  kanau, czyli niewane  jak  zagramy
  nut  -  d#2 czy b-6 - uzyskamy taki sam dwik.  Gdy  bit  6
  jest "0" to obowizuj zasady opisane w rozdz. 3.1.
  
  Bit  7  pola  C  jest  odpowiedzialny za  tzw.  hard-restart.
  Polega   to  na  tym,  e  przed  zagraniem  dwiku   player
  odpowiednio ustawia rejestry tak, by dwik zagra  dobrze  i
  bez  adnych "trzaskw" na pocztku. Nie bd tu  wchodzi  w
  szczegy,  jak zwykle polecam "nauszne" przekonanie  si  co
  to  takiego  jest  ten  hard-restart. Dodam  tylko,  e  przy
  bardzo  szybkim odtwarzaniu dwikw kolejno  po  sobie  moe
  si okaza, e wcale ich nie usyszymy jeli bdzie w. hard-
  restart,  lub usyszymy nie to co chcemy :). Bit 7  ustawiony
  na  "1"  wcza ,a  ustawiony na "0" - wycza ten efekt  dla
  danego instrumentu.
  Prociej:  0  wpisane do lewego pbajtu pola C oznacza  brak
  hard-restartu i zwyky instrument, 4 to instrument typu  drum
  bez  hard-restartu,  8  oznacza w. hard-restart  i  normalny
  instrument, c - instrument typu drum + hard-restart. I tyle.
  
  Pozosta  jeszcze prawy pbajt (bity 3-0) pola C. Liczba  tu
  zawarta  okrela  przez  ile ramek  bdzie  odtwarzana  kada
  pozycja  w  tabeli ksztatw fal. Konkretnie: 0  oznacza,  e
  przez  1  ramk,  1 - 2 ramki, 2 - 3 ramki itd.  Zastosowanie
  podam w rozdziale o arpeggio.
  
  W   kolejnych   podrozdziaach  przytocz  kilka   przykadw
  konkretnych instrumentw rnych typw.
  

3.5.Perkusja.
  W  takich  instrumentach  przewanie wykorzystuje  si  szum,
  fal  prostoktn  i  trjktn. Dla przykadu  'kick'  czyli
  "stopa". Najpierw def. instrumentu:
  
  Poz. A  B  C  D  E  F  G  H
  00  00 f4 c0 00 00 00 00 00
  
  A  teraz  makrodefinicja w tabeli fal (fali prostoktnej  nie
  uywamy, wic wypenieniem nie musimy si martwi, to samo  z
  filtrami):
  
  Poz. A  B
  00  a0 81
  01  10 11
  02  0c 11
  03  08 11
  04  04 11
  05  00 10
  06  7f 05
  
  Jak  wida najpierw przez jedn ramk gra szum, potem trjkt
  i   zmniejszamy  stopniowo  czstotliwo.  Ustawilimy   typ
  'drum',  zatem niezalenie jaki dwik zagramy, usyszymy  to
  samo.  W  poz.  05 wyczylimy bramkowanie dla pewnoci,  by
  dwik od razu zanik. Zaptlamy na poz. 05.
  
  Pora na jaki bben ('snare'):
  
  Poz. A  B  C  D  E  F  G  H
  01  04 f9 c0 00 00 00 07 07
  
  Tabele (odpowiednio fal/pulsu):
  
  Poz. A  B                     Poz. A  B  C  D
  07  90 81                    00   08 00 00 00
  08  0e 41
  09  0c 40
  0a   90 80
  0b   7f 0a
  
  Poniewa    uywana   jest   fala   prostoktna,   musielimy
  zatroszczy  si  o  wypenienie.  Najlepiej  ustawi   sta
  warto  50%  (chyba  e kto chce otrzyma  jakie  "dziwne"
  dwiki).
  
  Oba  instrumenty  s  typu 'drum'. Proponuj  wyczenie  tej
  opcji  (wpisanie $80 w pola C) i zagranie kilku rnych  nut.
  Polecam eksperymenty z ustawieniami ADSR, modyfikacj  tabeli
  fal, filtrowanie itp.
  

3.6.Basy.
  "Niewane  e  muzyczka jest ch**owa, wane e  ma  zajebiste
  basy" - oto credo co niektrych ;)
  
  May   przykadzik  (wykorzystamy  tu  filtry   i   falowanie
  wypenienia):
  
  Poz. A  B  C  D  E  F  G  H
  02  05 d9 80 f1 04 04 0c 0c
  
  Tabele (odpowiednio fal/pulsu/filtrw):
  
  Poz. A  B          Poz. A  B  C  D         Poz. A  B  C  D
  0c   e0 81         04   d1 50 04 08        04   e0 e8 08 08
  0d   00 41         08   ff 1c 8c 0c        08   ff 00 00 08
  0e   7f 0d         0c   ff 1c 0c 08
  
  Zauwamy,  ze  na  poz.  0c  w tabeli  fal  wczamy  szum  o
  wysokiej  czstotliwoci  (tak jak przy  perkusji).  To  daje
  bardziej "ostre" brzmienie instrumentu.

3.7.Arpeggio.
  Arpeggio  to  technika  grania akordw polegajca  na  bardzo
  szybkim  odtwarzaniu kolejnych dwikw wchodzcych  w  skad
  akordu.  Poniewa  C64  ma tylko 3 kanay  ta  technika  jest
  bardzo  popularna, bo na akord "zuywamy" tylko 1 kana.  Kto
  uwanie  przeczyta  rozdzia  o  tab.  ksztatw  fal,   bez
  problemu zrobi taki dwik.
  
  Przykad:
  
  Poz. A  B  C  D  E  F  G  H
  03  02 7b 80 00 00 10 0f 0f
  
  Tabele (filtrw nie uywamy):
  
  Poz. A  B                      Poz. A  B  C  D
  0f   07 41                     10   ce 40 8c 14
  10  04 41                     14   ff 10 10 18
  11  00 41                     18   ff 10 90 14
  12  7f 0f
  
  Jak  wida  nastpuje  zaptlajce  si  szybkie  odtwarzanie
  dwikw  o rnej wysokoci - bazowej, wikszej o 4  ptony
  i  wikszej o 7 ptonw. Jeeli zagramy np. c-3 to otrzymamy
  akord  skadajcy si z dwikw c-3, e-3 i  g-3.  Jak  wida
  jest  to trjdwik durowy. Zmieniajc odpowiednio kolumn  A
  tabeli  fal  otrzymamy rne konfiguracje  dwikw  i  rne
  akordy, np. 7-3-0, 9-5-0, a-5-0. Mona uy 4 dwikw np. c-
  7-3-0,  b-7-4-0,  9-6-3-0. Zaley to oczywicie  od  intencji
  kompozytora.
  Zmieniajc  prawy  pbajt pola C def. instrumentu  zmieniamy
  prdko odtwarzania akordu (proponuj wpisa tam 1 albo 2  i
  posucha).
  

3.8.Lead.
  Czyli dwik prowadzcy, na melodi itp.
  
  Poz. A  B  C  D  E  F  G  H
  04  01 86 80 00 00 1c 13 13
  Tabele (nie ma filtrw):
  
  Poz. A  B                      Poz. A  B  C  D
  13  00 11                     1c   07 00 01 20
  14  00 41                     20   ff 10 18 24
  15   7f 14                     24   ff 30 88 28
                                  28   ff 10 98 2c
                                  2c   ff 30 08 20
  
  To   wszystko.  Reszta  zaley  ju  od  was.   Jeszcze   raz
  podkrelam - wasne eksperymenty to podstawa.

4.
   
   EDYTOR.
  This chapter is under development :)
  

5.  PODSUMOWANIE.
  Mam  nadziej,  e  wiedza tutaj zawarta  komu  si  przyda.
  Pamitajcie  te,  e nie kady od razu zostaje  Drax'em  czy
  innym  Metal'em.  Efekty  przychodz  wraz  z  dowiadczeniem
  zdobytym w trakcie robienia muzyki. Powodzenia.
  
  Wszelkie  uwagi  i  zapytania  kierujcie  emailem  na   adres
  wizard@elysium.pl.  Sorry za ew. bdy i  literwki,  ale  to
  dopiero  pierwsza wersja. Czy bd nastpne zaley  tylko  od
  was.
  
  
  Best regards,
  
  Wizard.



  LITERATURA:
  
  B. Frelek "Commodore 64"
  Mapa pamici C64.
