ATARI INACZEJ : SAMPLERW TA 3/92 ukazał się program do digitalizacji dźwięku w oparciu o magnetofon z TURBO 2000. Ci, którzy nie mają TURBO mogą małym kosztem wykonać własny digitalizer.
Konieczne będzie zdobycie dwóch kabelków od joysticka (jeden z przewodem zasilającym, od takiego z autofire) i krajowego układu UL 1980. Na początku należy znaleźć odpowiednie przewody w kabelku od joystick-a. 1. Pomocny będzie program 10 ?STICK(0):G.102. Najpierw określamy przewód - masę. Zwieramy wszystkie przewody (oprócz +5V) i oddzielamy jeden. Powtarzamy tę czynność, dopóki nie pojawi się wartość 15, co oznacza, że ten ostatni - to masa. 3. Korzystamy z krzyża wartości Zwierając teraz resztę przewodów z masą, odczytujemy wartości i lutujemy z odpowiednią nóżką układu scalonego (np. 7=lewol=nóżka 9, 13=dółl=nóżka 10) Ze względu na brak wzmacniacza wstępnego sygnał bierzemy z głośnika magnetofonu lub gniazda słuchawkowego. Ma to swoje zalety (niski koszt, możliwość użycia korektora graficznego, jeśli takowy posiadamy w zestawie) i wadę (galwaniczne połączenie sprzętu audio z komputerem.) UWAGA: Digitalizer podłączamy równolegle do głośnika (słuchawki). Jeżeli obciążeniem wzmacniacza będzie jedynie sampler, należy zamiast głośnika podłączyć rezystor z zakresu 100-2000 omów. Lecz interfejs to nie wszystko, potrzebny jest także program go obsługujący. 10 DIM A$(26) 15 A=1536:MIN=52:POKE 106,MIN:POCZ=MIN *256:KON=0:GRAPHICS 0 16 REM WATROSC MIN ZALEZY OD ZAINSTALO WANEGO SYSTEMU (DLA DOS 2.5+CP MIN=52) 20 TRAP 100:READ A$:I=1:TRAP 20 30 B=ASC(A$(I))-48:B=B-(B>9)*7 40 C=ASC(A$(I+1))-48:C=C-(C>9)*7 50 I=I+2:POKE A,B*16+C:A=A+1:GOTO 30 100 POKE 764,255:? " START-DIGITALIZA CJA":? " SELECT-ODTWARZANIE":? " OPT ION-POWTARZANIE" 110 B=PEEK(53279):A=(B=6)+(B=5 OR B=3) *94 120 IF A=0 THEN 110 130 TRAP 130:? "SZYBKOSC":INPUT SZYB 140 I=USR(1536+A-1,POCZ,KON,SZYB) 150 IF B=3 AND PEEK(53769)<>28 THEN 14 0 160 GOTO 100 1000 REM ------DIGI.OBJ------------ 1010 DATA 68A000BEBF06B9C8069D0004CA 1020 DATA D0FAC8C009D0EF8D0004A20568 1030 DATA 95CBCA10FA20B006204906AD09 1040 DATA D2C91CF05FC921D0F220490629 1050 DATA 0F91CF2049060A0A0A0A11CF91 1060 DATA CF209706D0E9F042AE00D3BD00 1070 DATA 0409108D01D28D1AD0A6CBCAD0 1080 DATA FD6068A2056895CBCA10FA20B0 1090 DATA 06A000B1CF204F06B1CFB1CF4A 1100 DATA 4A4A4A204F06B1CFA5CFAE09D2 1110 DATA E01CF005209706D0DEA9FD8D01 1120 DATA D3A9FF8D0ED45860E6CFD002E6 1130 DATA D0A5D0C9D0D004A9D885D0C5CE 1140 DATA D004A5CFC5CD6078A9008D0ED4 1150 DATA 8D00D4A9FE8D01D360FFFEFDFB 1160 DATA F7EFDFBF7F0001020304050607 1170 DATA 08Start - próbkowanie Mamy możliwość doregulowania głośności, barwy tonów i po korekcie klawisz SPACJA - rozpoczęcie digitalizacji ESC - rezygnacja i wyjście Select - odtworzenie sampla ciekawe efekty przy zmianie parametru szybkość. Dane zapisywane są także w RAM pod BASICem i OS ROM. Jeśli podczas przetwarzania występują duże trzaski, świadczy to o błędnym podłączeniu przewodów z układem lub zamiany wtyków joysticka w portach. Jeżeli czytelnicy chcieliby napisać własne procedurki, to powinni pamiętać, że konieczne jest dokładne odmierzanie czasu. Uzyskujemy to poprzez: • wyłączenie przerwań i ekranu • przy włączonym ekranie synchronizujemy się z komórką $d40b($d40a) • używamy przerwań liczników POKEY (możliwe jest nawet uzyskanie dwóch sampli (np. program DIGI DRUM). * Listing zrodlowy DIGI.OBJ * (przyklad wykorzystania * zawarto w DIGI.BAS) LIST EQU %11 PAM EQU %10000 EKR EQU %100 DOS EQU %100000 OPT LIST+DOS ZMIEN EQU $400 OPOZ EQU $CB KON EQU OPOZ+2 POCZ EQU OPOZ+4 *---ADRESY W OS KBCODE EQU $D209 NMIEN EQU $D40E PORTB EQU $D301 DMACT EQU $D400 org $600 DIGI PLA LDY #0 Korzystamy z portu SKOK1 LDX KOD,Y PIA i potrzebne sa LDA KOD+9,Y odpowiednie prze- SKOK2 STA ZMIEN,X liczenia na wartosc DEX glosnosci. BNE SKOK2 Tworzymy tabele INY kodow i odwolujemy CPY #9 się do niej BNE SKOK1 w procedurze WAR. STA ZMIEN * Wlasciwa procedura digitalizacji * Wywolanie I=USR(1536,POCZ,KON,SZYB) * pocz - poczatek pamieci na kod * kon - koniec -//- -//- * szyb - 0..255 (1=najwierniej), * optymalnie 40 (trzeba pogodzic ilosc * zajetej pamieci z jakoscia dzwieku) LDX #5 SKOK PLA PRZEPISZ PARAMETRY STA OPOZ,X DEX BPL SKOK JSR ZABLK SKOK3 JSR WAR LDA KBCODE CMP #28 ESC=PRZERWANIE BEQ ODBLK CMP #$21 SPACJA=POCZATEK BNE SKOK3 PRZETWARZANIA SKOK4 JSR WAR AND #$0F STA (POCZ),Y JSR WAR ASL @ wykorzystujemy ASL @ drugą ASL @ polowke ASL @ komorki. ORA (POCZ),Y STA (POCZ),Y JSR WZROS BNE SKOK4 BEQ ODBLK WAR LDX $D300 LDA ZMIEN,X WAR1 ORA #$10 USTAW BIT 4 AUDIFREQ STA $D201 STA $D01A LDX OPOZ SKOK5 DEX BNE SKOK5 RTS *PROC. ODTWARZANIA *I=USR(1629,POCZ,KON,OPOZ) GRAJ PLA LDX #5 SKOK6 PLA STA OPOZ,X DEX BPL SKOK6 JSR ZABLK PLAY LDY #0 LDA (POCZ),Y JSR WAR1 * DODATKOWE CYKLE,ABY CZASY WYKONYWA- * NIA PLAY I GRAJ BYLY ROWNE. LDA (POCZ),Y * KONIEC LDA (POCZ),Y LSR @ LSR @ LSR @ LSR @ JSR WAR1 * CYKLE LDA (POCZ),Y LDA POCZ * KONIEC LDX KBCODE CPX #$1C ESC=PRZERWIJ BEQ ODBLK JSR WZROS BNE PLAY ODBLK LDA #253 STA PORTB LDA #$FF STA NMIEN CLI RTS WZROS INC POCZ BNE SK1 INC POCZ+1 SK1 LDA POCZ+1 CMP #$D0 BNE SK2 LDA #$D8 omin blok ukladow I/O STA POCZ+1 SK2 CMP KON+1 BNE SK3 LDA POCZ CMP KON SK3 RTS ZABLK SEI zablokuj przerwania LDA #$00 i podlacz RAM pod STA NMIEN BASIC-em i OS ROM. STA DMACT wylacza ekran w celu LDA #254 dokladnego odliczania STA PORTB czasu. RTS kod dta a($feff) dta a($fbfd) dta a($eff7) dta a($bfdf) dta a($7f) dta a($0201) dta a($0403) dta b(5) dta b(6) dta b(7) dta b(8) END Tomasz Bech
|