atarionline.pl RMT - nuty w asemblerze - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1: CommentAuthornosty
      • CommentTime16 May 2012 00:05 zmieniony
       
      Mam problem: w grze mam odgrywac efekty specjalne.
      W paczce RMT jest katalog z przykladami w asm min. /sfx

      Wywolanie efektu w asm to:

      tay ;Y = 2,4,..,16 instrument number * 2 (0,2,4,..,126)
      ldx #3 ;X = 3 channel (0..3 or 0..7 for stereo module)
      lda #12 ;A = 12 note (0..60)
      jsr RASTERMUSICTRACKER+15 ;RMT_SFX start tone

      Czyli jesli dobrze rozumiem w akumulatorze mam umiescic nutę (wysokosc dzwieku) w postaci numeru od 0 do 60?

      Tymczasem od autora efektu dostalem wskazowke: "Odgrywać nutą e1".

      Pytanie: jak przelozyc nuty (e1 i inne) na numery 0-60?
      • 2:
         
        CommentAuthortdc
      • CommentTime16 May 2012 00:05
       
      Jeśli dobrze pamiętam to w książce Atari Basic były rozpisane kody kolejnych nutek.
      • 3: CommentAuthornosty
      • CommentTime16 May 2012 00:05
       
      To nie o to chodzi.
      W tej ksiazce jest opisane polecenie Basica i parametr "okres" moze przyjmowac wartosci 0-255.

      A Raster napisal wyraznie: 0-60.
      • 4:
         
        CommentAuthorjhusak
      • CommentTime16 May 2012 00:05 zmieniony
       
      Chodzi o to, że 0-255 to dzielnik częstotliwości 64 khz.
      A do nutki to jeszcze zawiła droga. :)
      Na szczęście w rmt te wartości są przeliczone i umieszczone w tablicach.
      Dzięki temu operujemy pojęciem nuty (jak w midi) a nie częstotliwości.

      I teraz:

      e1 zapewne = nutka 0, nie sprawdzałem, ale albo to jest e1 = 0, albo c1 = 0.

      Jeśli e1=0, to:

      e2 = nutka 12
      e3 - 24
      itd

      a szczegółowiej:
      e1 = 0
      f1 = 1
      f1# = 2
      g1 = 3
      g1#=4
      a1 = 5
      a1# = 6
      h1 = 7
      c2 = 8
      c2# = 9
      d2 = 10
      d2# = 11
      e2 = 12
      itd

      A jeśli nie, to już zasadę znasz.

      Poza tym nie musisz się sugerować co inni piszą.
      Grasz nutkę jak chcesz i z jaką wysokością chcesz.
      Trzeba tylko zapisywać moduł bez usuwania instrumentów (jeśli zapisujemy "stripped")
      • 5:
         
        CommentAuthortdc
      • CommentTime16 May 2012 04:05
       
      Racja nie o to chodzi, ale doszedłbyś.
      • 6:
         
        CommentAuthormiker
      • CommentTime16 May 2012 06:05 zmieniony
       
      A ja myślę, że E-1 należy znaleźć tak:
      C-1 -> 00
      C#1 -> 01
      D-1 -> 02
      D#1 -> 03
      E-1 -> 04

      Czyli w odległości 4 nutek od C-1 w tablicy częstotliwości (co by zresztą pasowało). Względnie zasembluj samą prockę i wyślij autorowi, czy właśnie taki dźwięk miał na myśli.
      Btw. ja wszystkie moje FX-y "stroję" na C-1, po prostu jest łatwiej odgrywać.
      • 7: CommentAuthor0xF
      • CommentTime16 May 2012 07:05
       
      Miker dobrze mówi.
      • 8: CommentAuthornosty
      • CommentTime16 May 2012 09:05 zmieniony
       
      >Poza tym nie musisz się sugerować co inni piszą.
      >Grasz nutkę jak chcesz i z jaką wysokością chcesz.

      Jakub, moge tez zamowic grafike u grafika a potem pozmieniac sobie kolory jak chcę, ale przeciez nie o to chodzi ;)

      Myslalem ze pytanie jest banalne i kazdy kto kiedykolwiek uzywal SFX zna odpowiedz, a tu zaskoczenie ze jednak są kontrowersje.

      Zrobilem probe: odegralem sobie ten instrument w RMT pod Windowsem jako E-1 (klawisz C na klawiaturze), i eksperymentalnie na sluch metodą prob w asm uzyskalem identyczny ton ustawiajac 04. Ja wprawdzie sluch mam mizerny, ale probe zrobilem zanim Miker napisal swojego posta i uzyskalem taki sam wynik, wiec Miker ma pewnie rację.
      Dzieki za pomoc!

      Czyli, zeby juz zostawic kompletną informację dla potomnosci: zapis idzie jak niżej a potem kolejna oktawa i tak az do 60, tak?
      Pytam, bo nie znam sie na nutach i wydaje mi sie dziwne, ze po niektorych sa # (poltony?) a po niektorych nie :P

      C-1 -> 00
      C#1 -> 01
      D-1 -> 02
      D#1 -> 03
      E-1 -> 04
      F-1 -> 05
      F#1 -> 06
      G-1 -> 07
      G#1 -> 08
      A-1 -> 09
      A#1 -> 10
      H-1 -> 11
      C-2 -> 12
      ...
      • 9: CommentAuthor0xF
      • CommentTime16 May 2012 10:05
       
      Tak.

      Półtony nie są wszędzie - mamy tu muzyków, którzy wytłumaczą to lepiej ode mnie.
      • 10:
         
        CommentAuthorstring
      • CommentTime16 May 2012 12:05
       
      Dobrze to Nosty rozpisał.

      Miker: najwygodniej ustawić pod C1, ale mi nie zawsze się to udaje, czasem brzmienie jakie chciałbym osiągnąć wychodzi mi pod np G5 i trzeba przeliczać. Jaką masz metodę?
      • 11: CommentAuthorwieczor
      • CommentTime16 May 2012 13:05
       
      @nosty: obejrzyj klawiaturę fortepianu: całe tony to białe, półtony (te z #) to czarne. Jak widzisz idą od czasu do czasu (nie ma pomiędzy E i F oraz H i C) także oktawa ma 12 dźwięków (co daje * 5 = 60 -> wszystko się zgadza)
      • 12:
         
        CommentAuthorjhusak
      • CommentTime16 May 2012 15:05
       
      Panowie, przecież pisałem, że e1=0 LUB c1=0 Jednak pisałem z pamięci, co oznacza, że albo lenistwo, albo... lenistwo.

      Generalnie zdanie "grasz czym jak chcesz albo na jakiej nucie chcesz" nie odnosi się do tego, jak to specjalista od FX zdefiniuje. Jeśli powie "ma być na C3" - to nie inaczej ma być.
      Ale np. odgłos wchodzenia po drabinie, czy pitego eliksiru, to ten sam instrument coraz wyżej czy niżej.

      -----------------------------
      Co do muzyki.

      Mamy skalę równotemperowaną.

      jeśli mamy dźwięk bazowy a4 - 440 hz. to mając tablelę co półton otrzymujemy częstotliwość tej nuty +-k jako:

      440 Hz * (2^(k/12))

      A jak mamy częstotliwość, to dzielimy te nieszczęsne 64 kHz przez częstotliwość i mamy to, co w książce Atari Basic.

      A w ogóle to trzeba poczytać na wiki:)
      • 13: CommentAuthorwieczor
      • CommentTime16 May 2012 18:05
       
      A w ogóle to nie trzeba się zagłębiać bo w API RMT posługujesz się numerami dźwięków, nie częstotliwościami :)
      • 14:
         
        CommentAuthortdc
      • CommentTime17 May 2012 02:05
       
      Co do występowania półtonów to jest to wprost magiczne.

      Fajnie zażartowali sobie z tego w serialu Alf, gdzie była taka mniej więcej scenka, gdzie Alf grał na chyba pianinie:

      - o, nie wiedziałam że umiesz grać
      - Alf: tak, ale ciężko się gra bez czerwonych klawiszy
      • 15:
         
        CommentAuthormiker
      • CommentTime17 May 2012 06:05
       
      @string: po prostu robię najpierw "na żywca", a potem za pomocą tablicy do arpeggia dostosowuję brzmienie do nuty C-1 (ale fakt, czasem jest z tym hardkor :) ).
      • 16: CommentAuthorwieczor
      • CommentTime17 May 2012 10:05
       
      @tdc: z tymi półtonami to jest śmiesznie trochę bo ta skala jest pogięta :) Tzn ogólnie - różnica częstotliwości między oktawami na dowolnym dźwięku to x 2. Czyli nie jest liniowo. A brak czarnych klawiszy pomiędzy E i F oraz H i C wynika z tego, że różnica pomiędzy nimi to ... pół tonu a nie cały :) Czyli można powiedzieć że F jest "czarnym" klawiszem dla E a C dla H :) Prawdopodobnie wyszło tak eksperymentalnie - że dla melodii taki zestaw dźwięków jest optymalny (i akordów itp.)
      • 17:
         
        CommentAuthortdc
      • CommentTime18 May 2012 02:05
       
      tym bardziej interesujące wydają się być klawisze czerwone ;):)