Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: Äänet Quick Basicissa?

Tp [25.09.2003 07:27:04]

#

Saako mitenkään Quick Basicissa waw tiedostoa soimaan?

juhaz [25.09.2003 07:49:18]

#

saa, mutta ei suoraan yhdellä komennolla, mutta nekään eivät ole mitään parhaita ja yleensä saa soimaan vain jotain pieniä piipahduksia....

Antti Laaksonen [25.09.2003 11:20:31]

#

Tämä koodinpätkä sisältyy BootSector4:n Basguru-kokoelmaan (sitä ei taida tällä hetkellä saada juuri muualta kuin MBnetistä). Ei toimi suoraan NT:llä, 2000:lla eikä XP:llä. Vanhemmilla Windowseilla ja DOSissa pitäisi toimia äänikortin kanssa. Itse kokeilin muistaakseni Windows 95:llä ja hyvin toimi.

'              Wavin soittoa, tätä kaikki ovat aina halunneet=)


CLS
DIM SHARED BasePort%, DMA, IRQ               'SB:n Osoite, DMA, IRQ
GOSUB GetBlaster
CONST FILE$ = "C:\WINDOWS\MEDIA\THEMIC~1.WAV"     ' WAVin nimi
CONST TAUKO = 1      ' hidastusarvo -> jos wav soi liian nopeasti, lisää

COLOR 7
PRINT "Soitetaan ";
COLOR 15
PRINT UCASE$(FILE$);
COLOR 7
PRINT "..."

DO                  '<----- huomaa! WAV soi DOn ja LOOPin välissä, voit itse
GOSUB PlayWav       'rakentaa pelin silmukan väliin WAVin soidessa taustalla
IF INP(&H60) = 1 THEN END
LOOP
CLOSE
OUT dspcmd%, &H10

END


GetBlaster:
IF LEN(ENVIRON$("BLASTER")) = 0 THEN PRINT "BLASTER ympäristömuuttujaa ei ole asetettu": END
FOR Length% = 1 TO LEN(ENVIRON$("BLASTER"))
SELECT CASE MID$(ENVIRON$("BLASTER"), Length%, 1)
CASE "A"
BasePort% = VAL("&H" + MID$(ENVIRON$("BLASTER"), Length% + 1, 3))
CASE "I"
IRQ% = VAL(MID$(ENVIRON$("BLASTER"), Length% + 1, 1))
CASE "D"
DMA% = VAL(MID$(ENVIRON$("BLASTER"), Length% + 1, 1))
CASE ELSE
END SELECT
NEXT
RETURN

SBReset:
dspreset% = BasePort% + 6
OUT dspreset%, 1
FOR t% = 1 TO 10
a% = INP(dspreset%)
NEXT t%
OUT dspreset%, 0
dspread% = BasePort% + 10
FOR t% = 1 TO 10
a% = INP(dspread%)
NEXT t%
RETURN

PlayWav:

IF fgjee = 0 THEN
GOSUB SBReset
byte% = &HD1
GOSUB WriteDSP
OPEN FILE$ FOR BINARY AS #1
fgjee = 1
IF UCASE$(RIGHT$(FILE$, 3)) = "WAV" THEN
FOR i = 0 TO 44
GET #1, , muuttuja
NEXT
muuttuja = 0
END IF
END IF

IF EOF(1) THEN SEEK #1, 45
GET #1, , byte%
GOSUB WriteDSP
byte% = &H10
GOSUB WriteDSP
FOR tauko2 = 1 TO TAUKO
q% = INP(dspcmd%)
NEXT tauko2
RETURN

WriteDSP:
'Soittaa WAVia OUTilla
'
'
'
OUT BasePort% + 12, byte%
RETURN

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta