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
|