Witam Panowie!

I co, że to niby ja miałem zzielenieć?  :mrgreen:  ;)

Co do procki to gra... Tylko dopisując kolejne... stworzymy nowego NEO.
I czemu uważasz, że to nazbyt wolno i że dziwnie gra... Przy czterech kanałach nie ma szans na dźwięk HI-FI. Proponuję "nastroić" tabelę częstotliwości i podstawić nuty jakiejś konkretnej muzy nawet bez tworzenia obwiedni i procedur ich wykorzystania. A najlepiej gdybyś wykorzystał NEO. Jest to o tyle łatwiejsze, że nie musisz pisać od nowa programu a usłyszysz efekt. Przekonasz się wtedy czy warto wogóle coś rzeźbić (ja uważam, że TAk). Wiesz przecież, że muzyka to nie kupa pojedyńczych nieskorelowanych dźwięków!
Słyszałeś jak gra SS... porównaj taką demówkę SS z jednym z utworów Kuby Husaka pisanych na tymże. Po usłyszeniu demówki można dostać zapaści!

Co do implementacji mod-fx'ów to wystarczą, jak wspominał kolega Świety, najbardziej podstawowe, tj. ust. tempa, gillsando, tremolo, zmiana głośności i masz chiptune.
Dochodzi jeszcze problem wykorzystania bądź nie - obwiedni. Ale to zależy w zasadzie od sposobu reprezentacji zapisu nutowego... A "trackerowy" jest chyba bardziej do ludzi!


Pecuś: Co do sposobów dźiwnych filtracji to można także modulować falę inną falą (uzyskuje się wtedy efekt fazowania tej ostatniej). Oczywiście fala którą modulujesz odtwarzana musi być z niewielką różnicą częstotliwości (mniejszą czy większą nie ma znaczenia). Uzyskasz w ten sposób głębokie, modulowane SIDowe brzmienie i co najważniejsze posiadającą "ruchome" przesunięcie fazowe.
Oczywiście gdy będziemy chcieli korzystać z czterech niezależnych kanałów to w procedurze playera musi nastąpić niewielka modyfikacja.
Wybaczcie za uproszczenie procki...

            clc
opu         lda #0
            adc #delay
            sta opu+1
            lda snt+1
            adc #0
            sta snt+1
opu_a       lda #0
            adc #delay_a
            sta opu_a+1
            lda snt_a+1
            adc #0
            sta snt_a+1
snt         ldy adr_snt
snt_a       ldx adr_snt_a
            lda tab_glo,x
            adc tab_glo,y
            lsr @
            sta audc1

...i chyba nie muszę tłumaczyć dlaczego występuje tylko jedno clc...

tym czasem pozdrawiam,
zielony/waxsoft/bc

PS. A myślałem, że to ja jestem nocnym markiem...

27

To wszystko tak ladnie wyglada w teorii.

Proponuje wam (tebe - piekna procka, ale...) uruchomienie tej procedury i posluchanie jednego dzwieku na jednym kanale (niech pozostale pracuja na pusto, by nie tlumaczyc tego efektu roznicami w szybkosci procedury).
Potem dodajcie kolejny kanal - niech gra cos innego (a co to za dziwne znieksztalcenia sie pojawiaja?).
Potem trzeci (hm... jeszcze gorzej zaczyna byc - dzwiek ktorego sluchalismy na poczatku brzmi inaczej jakby i to zupelnie).
A Potem czwarty (przeciez tego nie da sie sluchac!!).

Ta procedura nie ma prawa dobrze brzmiec (a SS brzmi!!) z prostej przyczyny nieliniowosci przetwornikow Pokeya (nieliniowosc to moze zle slowo - ale chodzi o to ze wartosci wpisane do sterowania poszczegolnymi generatorami sie nie sumuja i to co jest na wyjsciu nijak sie ma do wartosci wpisanych do rejestrow, chyba ze operujemy pojedynczym, no moze dwoma generatorami).
Metody na to znam dwie (a moze w SS jest inna...):
Pierwsza zastosowana w Sound Trackerze Playerze - przygotowanie tablic dla TRZEch generatorow tak by dawaly liniowa wartosc na wyjsciu Pokeya i zsumowania naszych 4 wartosci "recznie".
Druga niestosowana chyba nigdzie (testowalem ja tez przy pisaniu STP, ale daje cichszy (choc nieznieksztalcony) dzwiek) to ustawienie na wszystkich generatorach dzwieku o najwyzszej mozliwej czestotliwosci i sterowanie jego glosnoscia, zamiast wlaczania bitu bezposredniego sterowania wyjsciem.

No i teraz panowie jak robi to SS, ze tak ladnie brzmi, bo teoretycznie to mozemy sobie procki pisac, a w praniu wyglada to inaczej....

P.S. I kto tu jest nocnym Markiem ?? :)

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

28

Tebe: mój Email - swiety93@wp.pl - nie wiem dlaczego nie ma go udostępnionego , próbowałem zmienić swoje preferencje tak aby było Święty a nie swiety ale nie mogę zmienić.
Podeślij mi również tablice głośności bo moje jest tragiczna ,a raczej pojawia się problem o którym pisał PECUS - spróbuję w moim playerze ją zmienić i podeślę Ci go.


Ktoś może próbował bawić się odtwarzaniem sampli na PWM-ie ?

Tak jak to robią na C64 z 8 bitowymi lub na starym PC.

To jest tylko sugestia , nie sprawdzana w praktyce.

29

O ja nie mogę - znalazłem plugina do modułów z FC i SoundMona z Amigi - teraz pora na format decription i analiza playera - może uda się odtworzyć mój ulubiony moduł , który był w Ray of Hope w end parcie, którego napisal od nowa Foster.

Może to sie uda

Adres plugina pod win-ampa :
http://hjem.get2net.dk/surfsmurf/

Tam są przykłady , w katalogu FAVFc jest mod pod nazwą :
J.Hippel-R.s.i_theme.fc4

Posłuchajcie tych utworów , może tędy droga so SS2 ???
Większość ma syntezowane fale i efekty

30

Pokey to tylko dla testow, docelowo pozostalby Covox, a tam nie ma takich znieksztalcen jak w Pokey-u

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

31

Iiii... Covox - a co to jest ??

Cala sztuka polega na tym, zeby chodzilo to na Pokeyu. Jak dla mnie player, ktory wymaga dodatkowych urzadzen to jakis wymysl. Rownie dobrze moge sobie przez port joya podlaczyc cale C64 (zeby bylo ciekawiej niz podpinac SIDa) i wysylac tylko sekwencje rozkazow.

Poza tym, chodzi wlasnie aby obejsc ograniczenia Pokeya za pomoca softu, a nie sprzetu - wlasnie tak jak robi to SS. Zrobienie tego na Covoxie wielka sztuka nie jest... wymaga tylko troche pracy przy optymalizacji kodu (trzeba co do cyklu wyliczyc czas wygonywania sie glownej petli playera) - reszta jest czysto mechanicznym pisaniem procedur.

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

Cześć!

Panowie, chyba czegoś nierozumiem (może jestem za stary).

Uwaga! Symulacja engine DELAYA!

Pecus napisał:
"...A Potem czwarty (przeciez tego nie da sie sluchac!!). [...] Ta procedura nie ma prawa dobrze brzmiec (a SS brzmi!!) z prostej przyczyny nieliniowosci przetwornikow Pokeya [...] Metody na to znam dwie (a moze w SS jest inna...): No i teraz panowie jak robi to SS, ze tak ladnie brzmi, bo teoretycznie to mozemy sobie procki pisac, a w praniu wyglada to inaczej.... "

zielony/waxsoft/bc odpowiada:
No...

16 lat temu nikomu nie przeszkadzały zniekształcenia które występowały (może) w SS. Tak więc...

Pecuś... Na wszystko jest sposób...  ...lub półśrodki! :twisted:

    clc
    lda fala1
    adc fala2
    lsr @
    sta $d201
    lda fala3
    adc fala4
    lsr @
    sta $d203

... (sorry za uproszczenie) to były półśrodki...

   lda $84
    adc #0
    sta $84
    lda $80
    adc #0
    sta $80
    tay
    ldx $be00,y
    lda $bf00,x
    sta $d201

    lda $85
    adc #0
    sta $85
    lda $81
    adc #0
    sta $81 
    tay
    ldx $be00,y
    lda $bf00,x
    sta $d203

    lda $86
    adc #0
    sta $86
    lda $82 
    adc #0
    sta $82
    tay
    ldx $be00,y
    lda $bf00,x
    sta $d205

    lda $87
    adc #0
    sta $87
    lda $83 
    adc #0
    sta $83
    tay
    ldx $be00,y
    lda $bf00,x
    sta $d207
 

a to jest sposób, czyli oryginalna procedura playera SS!

pozdrawiam,
zielony/waxsoft/bc

PS. Pecuś, chyba słuch się nam psuje na starość! :mrgreen:

33

No tak... chyba sluch nie ten juz... :)

W kazdym razie kiedy pisalem STP (a robilem to od podstaw, nie znajac sposobow, srodkow i innych takich procedur - no jedna z Sound Trackera na Atari ST mialem przeanalizowana - ale to inna klasa byla), walczylem z nieliniowoscia przetwornikow Pokeya prawie miesiac, zanim zdecydowalem sie stablicowac to wszystko i grac na trzech generatorach. Moze poprostu na czystych falach (na tyle na ile moga byc czyste przy czej czestotliwosci odtwarzania ;) ) brzmi to lepiej niz przy calych samplowanych instrumentach i dlatego SS tak ladnie gra..... Albo to problemy ze sluchem.
Jednak mimo wszystko wydaje mi sie ze warto by pokusic sie o napisanie i ostre zoptymalizowanie procedury grajacej tak jak SS- moze da sie cos uproscic, przyspieszyc... kto wie. A moze jakis trik na ktory nie wpadl tworca SS, ja bym na poczatek sprobowal tak przerobic SS by stosowal moja tablice i odtwarzal symulowane 4 generatory liniowo - to moze byc ciekawe doswiadczenie, moze sluch sie nam przy tym poprawi ;).

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

34

Myślę że możnaby było bez jakichś większych problemów dodać



  lda $84
   adc #0
   sta $84
   lda $80
   adc #0
   sta $80
  and #$ff , $7f ,$3f ,$1f ,$0f - można uzyskać różne okesy fali !


   tay
   ldx $be00,y
   lda $bf00,x
   sta $d201

35

nowsza wersja


;-------------------
;- Synth Player v1.2
;- 12.02.2004
;-------------------


   opt h+
   org $b000

tmp     equ $00
loop    equ tmp+1               ; starszy bajt licznika dla length_Loop

tempo           equ 16          ; tempo, ilosc pelnych przebiegow length_Loop
length_Loop     equ 450         ; dlugosc petli playera, ile ma odegrac wartosci z sampla

audc1           equ $d201       ;rejestry Pokeya
audc2           equ $d203
audc3           equ $d205
audc4           equ $d207

;------------------------------------
;- PROCEDURKA PLAYER-a DLA 4 KANALOW
;------------------------------------

player equ *

;- kanal #1
        clc
del0    lda #0
del0m   adc #0
        sta del0+1
        lda adres0+1
        adc #0
        sta adres0+1

del0_   lda #0
del0m_  adc #0
        sta del0_+1
        lda adres0_+1
        adc #0
        sta adres0_+1
       
adres0  lda $ff00       ; adres 1-ego sampla
adres0_ adc $ff00       ; adres fali modyfikacyjnej
        lsr @           ; dla Covoxa moznaby pominac 'LSR @', wiekszy przedzial wartosci przyjmie Covox
        tax
vol0    lda $ff00,x     ; adres tablicy glosnosci dla 1-ego sampla
ch0     sta audc1


;- kanal #2
        clc
del1    lda #0
del1m   adc #0
        sta del1+1
        lda adres1+1
        adc #0
        sta adres1+1

del1_   lda #0
del1m_  adc #0
        sta del1_+1
        lda adres1_+1
        adc #0
        sta adres1_+1

adres1  lda $ff00       ; adres 2-ego sampla
adres1_ adc $ff00
        lsr @
        tax
vol1    lda $ff00,x     ; adres tablicy glosnosci dla 2-ego sampla
ch1     sta audc2


;- kanal #3
        clc
del2    lda #0
del2m   adc #0
        sta del2+1
        lda adres2+1
        adc #0
        sta adres2+1

del2_   lda #0
del2m_  adc #0
        sta del2_+1
        lda adres2_+1
        adc #0
        sta adres2_+1

adres2  lda $ff00       ; adres 3-ego sampla
adres2_ adc $ff00
        lsr @
        tax
vol2    lda $ff00,x     ; adres tablicy glosnosci dla 3-ego sampla
ch2     sta audc3


;- kanal #4
        clc
del3    lda #0
del3m   adc #0
        sta del3+1
        lda adres3+1
        adc #0
        sta adres3+1

del3_   lda #0
del3m_  adc #0
        sta del3_+1
        lda adres3_+1
        adc #0
        sta adres3_+1

adres3  lda $ff00       ; adres 4-ego sampla
adres3_ adc $ff00
        lsr @
        tax
vol3    lda $ff00,x     ; adres tablicy glosnosci dla 4-ego sampla
ch3     sta audc4

        dey
        beq test

        jmp player

*-----------------

test    lda loop
        beq test_
        dec loop        ; zmniejszenie starszego licznika length_Loop
       
        jmp player

test_   ldy <length_Loop
        lda >length_Loop
        sta loop

        dec tmp         ; tempo wyrazone w liczbie powtorzen petli playera
        beq HEAD

        jmp player

;-----------------------------------
;- dekodowanie patternu
;- ustawienie nowych czestotliwosci
;- glosnosci itp.
;-----------------------------------

HEAD

timer   lda #0
        inc timer+1     ; licznik na potrzeby testow, ustawia po kolei 32 glosnosci i 32 czestotliwosci
        and #$1f
        tax

        tay

* track 0
        lda Adr_Volume,y
        sta vol0+2

        lda frq,x
        sta del0m+1
        clc
shift0  adc #3          ; czestotliwosc fali modyfikacyjnej, zwiekszona o wartosc SHIFT wzgledem glownej czestotliwosci
        sta del0m_+1
        lda #0          ; zerowanie licznika
        sta del0+1
        sta del0_+1
       
        lda Adr_Instr,x
        sta adres0+2
       
        lda >sampl01    ; fala modyfikujaca
        sta adres0_+2
       
* track 1
        ldy #0          ;graj cisze
        lda Adr_Volume,y
        sta vol1+2

        lda frq,x
        sta del1m+1
        clc
shift1  adc #9
        sta del1m_+1
        lda #0
        sta del1+1
        sta del1_+1

        lda Adr_Instr,x
        sta adres1+2
;        lda #0
;        sta adres1+1

* track 2
        ldy #0
        lda Adr_Volume,y
        sta vol2+2

        lda frq,x
        sta del2m+1
        clc
shift2  adc #9
        sta del2m_+1
        lda #0
        sta del2+1
        sta del2_+1

        lda Adr_Instr,x
        sta adres2+2
;        lda #0
;        sta adres2+1

* track 3
        ldy #0
        lda Adr_Volume,y
        sta vol3+2

        lda frq,x
        sta del3m+1
        clc
shift3  adc #9
        sta del3m_+1
        lda #0
        sta del3+1
        sta del3_+1

        lda Adr_Instr,x
        sta adres3+2
;        lda #0
;        sta adres3+1

* let's go
        lda #tempo
        sta tmp

        ldy <length_Loop
        lda >length_Loop
        sta loop
        jmp player

*----
*- tutaj startuje program po wczytaniu do pamieci
*----
main
        lda 20
        cmp 20
        beq *-2

        sei             ;wylaczenie ROM-u i wszystkich przerwan
        lda #0
        sta $d40e
        sta $d400
        lda #$fe
        sta $d301
       
        lda #0          ;zerujemy POKEY
        sta $d208
        lda #3
        sta $d20f

        ldx #33       
        ldy #0          ;ustawiamy 4-bit w tablicach glosnosci dla Pokeya
cnv0    lda volume,y    ;w przypadku Covoxa, nie musielibysmy tego robic
        ora #%00010000
cnv1    sta volume,y
        iny
        bne cnv0
        inc cnv0+2
        inc cnv1+2
        dex
        bne cnv0
       
        ldy #0          ; wyliczamy tablice czestotliwosci
        lda #24         ; pierwsza czestorliwosc
crea    sta frq,y
        clc
        adc #3          ; stala addycja
        iny
        cpy #32
        bne crea
       
        jmp HEAD        ; startujemy od zera (timer=0)
   
   
*----
*- tablice na 4-ej stronie
*----
        org $0400
       
*----
*- instrumenty, czyli 256-bajtowe sample (32)
*----

Sampl00
:256 dta b(1)                 ; fala prostokatna
; :32 dta b(4)
; :32 dta b(8)
; :32 dta b(4)
; :32 dta b(0)

Sampl01                 ; fala trojkatna
:8 dta b(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)

Sampl02                 ; fala modyfikujaca
:8 dta b(0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,7,7,6,6,5,5,4,4,3,3,2,2,1,1,0,0)

;- adresy instrumentow
Adr_Instr
:32 dta h(Sampl02)

*----
*- tablice z opuznieniami dla kazdej z czestotliwosci (nuty)
*----

;- oryginalna z INERTI (2 bajtowe wartosci L, H)
; dta l(50),l(53),l(57),l(60),l(63)
; dta l(67),l(71),l(76),l(80)
; dta l(85),l(90),l(95),l(101)
; dta l(107),l(113),l(120),l(127)
; dta l(135),l(143),l(151),l(160)
; dta l(170),l(180),l(190),l(202)
; dta l(214),l(227),l(240),l(254)
; dta l(270),l(286),l(302),l(320)
; dta l(339),l(360),l(381),l(404)
; dta l(428),l(453),l(480),l(508)
; dta l(539),l(571),l(605),l(641)
; dta l(679),l(719),l(762)

*- i dla obecnego playera, wziete z kosmosu :), trzeba je dobrac porzadniej
*- 32 wartosci
frq
:32 brk
       
*----
*- tablica ze starszymi adresami glosnosci (33)
*----
Adr_Volume
dta h(volume,volume+$100,volume+$200,volume+$300,volume+$400,volume+$500,volume+$600,volume+$700)
dta h(volume+$800,volume+$900,volume+$a00,volume+$b00,volume+$c00,volume+$d00,volume+$e00,volume+$f00)
dta h(volume+$1000,volume+$1100,volume+$1200,volume+$1300,volume+$1400,volume+$1500,volume+$1600,volume+$1700)
dta h(volume+$1800,volume+$1900,volume+$1a00,volume+$1b00,volume+$1c00,volume+$1d00,volume+$1e00,volume+$1f00)
dta h(volume+$2000)

*----
*- 33 tablice z glosnosciami, kazda po 256 bajtow
*- dla Pokeya, trzeba ustawic 4-bit we wszystkich tablicach
*----
        org $1000

volume  ins 'volume.tab'

*---
        run main

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

36

Tebe, ale Ty piszesz procedure Sound Trackera Playera (z samplami ograniczonymi do 256 bajtow- wiec liczniki zmniejszone o jeden bajt). Moze ja Ci zrodla podesle ;) tam nawet efekty sa (niektore) zaimplementowane i kod maksymalnie zoptymalizowany.
Po co sie meczysz ??

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

Cześć!

...Robi się coraz ciekawiej!

Pecus! Ja w każdym razie jestem za... Dobry program z poprawnie napisaną procedurą playera, do tego dźwięk syntetyczny... Mniam!

Do Tebe wysłałem kilka oryginalnych instrumentów z SS...

pozdrowienia,
zielony/waxsoft/bc

38

No to ja moge dodac ze najbardziej zoptymalizowana procedura byla na w playerze MD8 na drugiej stronie dysku z demem Intel Outside. Naprawde bardziej sie nie dalo, pozostaje jeszcze umieszczenie czesci kodu na zerowce (tyle ze tam setki zmiennych juz siedza....).
Niestety zrodel do tego nie posiadam, mam zrodla do wersji wczesniejszych, ktore zapewne beda pomocne w przepisywaniu tej zoptymalizowanej....
Czyli co?
Zabieramy sie do tego ?? :)

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

Witam!

Oki...
Najpierw do Świętego:
Pomysł przedni ;) , niestety większość fal (synthów) SS jest jednookresowych, więc w ten sposób zniekształcimy tylko falę (a dokładnie będzie słychać tylko te próbki które "przepuści" maska, czyli czasami ciszę). W przypadku wielookresowych (2,4,8 - bo tylko takie będą stroić z pozostałymi) nic się nie zmieni...

Tebe: 24 godz. minęły i nic od Ciebie nie dostałem.. czyli prace trwają! Aż mnie zrzera ciekawość... Siak czy tak wysłałem Ci kolejną łamigłówkę...

Pecuś: A czy to nie jest przypadkiem ten player który odgrywa "spakowane sample" (wiesz, dwie próbki na bajt). O ile dobrze pamiętam to program i źródła były w posiadaniu m.in. Pawła Bulkowskiego (Our5oft).

Czy ktoś z Was ma może dostęp do zapisu trackerowego muzy z gry "Cybernoid I" na C64...  :twisted: Mam diabelski pomysł!!! Szczegóły wkrótce...

pozdrowienia,
zielony/waxsoft/bc

40

zielony: ekkkhee ....przeciez Pecus to tez Our 5oft masa rulez ....

All I hear is the sound of me falling on the ground

41

yea 1/2-tusk reprezent

:)

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.

42

No tak OUR 5OFT mnie "przygarnal" kiedys :)

A wracajac do playera to Pawel raczej nie ma zrodel tego z drugiej strony Intel Outside. Te wersje pisalem nocami w akademiku i po wielu przeprowadzkach zaginelo. Na szczescie samo demo pozostalo.
Z tego co pamietam to w porownaniu z dosc wczesnymi zrodlami ktore posiadam, tamta procedura miala kilka efektow wiecej i byla maksymalnie zoptymalizowana (skok warunkowy i INC dzialaja szybciej od LDA i ADC #0 i nie zmieniaja akumulatora - tylko trzeba wycyklowac procedure w zaleznosci od tego czy jest skok czy nie - w zasadzie powinny byc wtedy dwie wersje - czyli 8 odgalezien, a moze i 16 - jednej procki - jesli byla roznica JEDNEGO cyklu to juz bylo to wyraznie slychac).
Na tamten czas nie dalo sie chyba tego bardziej przyspieszyc, moze teraz znajac pare trikow, cos jeszcze by sie wyciagnelo.
Najwieksze roznice poza tym byly na szczescie w procedurach ladujacych i rozmieszczajacych modul w pamieci, a to nam niepotrzebne.

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

Hey!

   W tym wypadku to chyba nawet 1/3 1/2-tuska!!!!
Inna sprawa, to co ma jedno: "[...] program i źródła były w posiadaniu m.in. Pawła Bulkowskiego (Our5oft)." do drugiego  "zielony: ekkkhee ....przeciez Pecus to tez Our 5oft masa rulez ...."?! :mrgreen:

Ale wspomniałem, bo Daxey kiedyś dostał od Buły (Our5oft)  ;) tenże program wraz z demosem (chyba z "Unity 19xx") I dlatego może ta kiełbasa!...

Odchłań... Choroba, że POLSAT zdjął ten serial z anteny (aj lajket)!

pozdrowienia,
zielony/waxsoft/bc

44

prace trwaja, juz gra z pseudo patternu, probuje wydobyc z niego jakies ciagle dzwieki, jak na razie nie przypadlo mi to do gust

co do optymalizacji, to bedzie, teraz jednak forma playera ma byc jak najbardziej zrozumiala i podatna na modyfikacje

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

45

Zielony:
Sądzę że lepszym pomysłem zamiast mixować 2 próbki na 1 kanał żeby uzyskać dźwięki modulowane jest wprowadzić prosty pomysł o którym pisałem już do tebe:

1. Tablica fali ma być o okersie $7f , czyli 1/2 strony pamięci , i musi być od początku strony !
2.. Fala prostokątna:
:128 dta b($f)
:128 dta b($0)

3.Przykładowa procedura playera:

  lda $84 
   adc #0 
   sta $84 
   lda $80 
   adc #0 
   sta $80
   and #$7f 
   tay 
   ldx $be00,y 
selfmod equ *-2

   lda $bf00,x 
   sta $d201 

4. i w ten prosy sposób wpisując liczbę od 0-$7f do selfmod uzyskujemy 127 krokowy współczynnik wypełnienia fali !!!
$40 - zwykły prostokąt (50/50)
0,$80 - cisza

Sprawdzałem to w praktyce i działa !

Witam!

Święty... pomysł przedni  ;)  i działa, ale jak zwykle jest dwa ale..
Ale pierwsze: będzie trudno (co oznacz, że nie jest to niemożliwe!)
zastosować ten pomysł do wielookresowych nieprostokatnych fal, ponieważ wpisując dane do selfmod zmieni się barwa syntha. No chyba żeby stosować specjalnie "konstruowaną" falę dla fali modyfikowanej. Oczywiście przy Twoim pomyśle mówimy o jednookresowej fali w owych 128 bajtach i konstrukcji fali modyfikującej w ten sposób, aby każdy jej kolejnych dwóch okresów różnił sie od poprzedniego czasem wypełnienia! Wtedy faktycznie jeszcze lepszy efekt niż stosując mój pomysł!

Ale drugie: tracimy po jednym cyklu gdy selfmod przybiera wartość
niezerową!!! A przyjmując iż wartosci zerowej przyjmować nie będziemy  ;)  nie tracimy...

pozdrawiam,
zielony/waxsoft/bc

47

Zielony:

chyba nie do konca , bo 1 cykl tracimy gdy adres + y przekracza granice strony - jak y=127 i offset strony =127 to nic nie tracimy !
Mam nadziejez ze o to chodzilo

Druga sprawa - pomysł prosty w swojej idei - szum:

Kod:

  lda $84
   adc #0
   sta $84
   lda $80
   adc #0
   sta $80
   and #$00 
   tay
   ldx $d20a,y
selfmod equ *-2

   lda $bf00,x
   sta $d201 

- i proste i logiczne !!! (nie mamy jedynie wpływu na jego czestotliwosc)
ale mozna np dla perkusji go uzyc

Wiec "and #0" moze sie przydac w wielu przypadkach - oczywiscie nie neguje twojego pomyslu na generacje fal ale 2 fale na siebie mozna nalozyc uzywajac 2 kanalow podobnie jak to robi np CMC na zwyklym POKEYu.

Ja bym obstawal za zwiekszona czestotliwoscia odtwarzania.
A co do nieokresowych fal to efekt ten mozna uzyc jako przesównika fazowego - fala musialaby miec 2 okresy (1 na stronie +$000,2 na stronie +$200)
Faktem jest ze niestety rozcyklowaloby to cala procedurke.

No chyba ze playera bedziemy odtwarzac na IRQ np co 2 linie rastra 
a head umiescilbym tylko w lukach miedzy przerwaniami

Witam!

Spoko, Twój pomysł jest lepszy! A i procka będzie szybciej chodzić! Tak więc 'and' zostaje... Sprawę jednookresowych fal już rozwiązałem, program już się pisze (3 kanały z Twoją metodą i 1 z moją). Wyślę Tobie i do Tebe...  Teraz to dopiero brzmi jak SID!!!  ;)
... muszę tylko przewalić CYBERNOIDA na trackerze...

49

naprawde jestem zainteresowany JAKĄKOLWIEK WERSJĄ DO POSŁUCHANIA/TESTOWANIA

All I hear is the sound of me falling on the ground

50

Miałem właśnie pisać że kompromisem mogłoby być np. 2 kanały 1 metodą , 2 drugą.

Jak na razie stwierdziłem że najlepszym wyjściem przy obwiedni głośności jest zastosowanie czegoś podobnego jak w future composerze z Amigi - 64 bajtowa obwiednia - kilka komend sterujących i ew 2 obwiednia - modyfikacja częstotliwości , kształtu fali , ew. wsp. wypełnienia. (tego czego nie ma w pt)

Oczywiście idee patternów zostawiłbym takie same jak w protrackerze, co dałoby większe możliwości muzyczne - z tym że 1 track miałby 3 bajty - 1 numer nuty i najstarszy bit nr. instrumentu , 2 bajt nr instrumentu i komenda , 3 argument komendy