Qbasicnews.com

Full Version: Octave Finder V1
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
ok, i just finished work on my octave finder v1. heres a quick screen shot.

[Image: octave.txt]

but i need some help for V2. anybody who can play a stringed insturment and has access to msn or AIM, your help would be appreciated. right know, the program only works for Guitars and Bass Guitars. any help would be much appreciated. thanx in advancedBig Grin
Look at this thing I coded years ago... Tongue

Code:
DECLARE SUB centra (y, t$)
actual = 1
ac = 1
DIM t(12)
DIM a$(12)
a$(1) = "C"
a$(2) = "C#"
a$(3) = "D"
a$(4) = "D#"
a$(5) = "E"
a$(6) = "F"
a$(7) = "F#"
a$(8) = "G"
a$(9) = "G#"
a$(10) = "A"
a$(11) = "A#"
a$(12) = "B"
DIM modo$(8)
modo$(1) = "Major"
modo$(2) = "Dorian"
modo$(3) = "Phrygian"
modo$(4) = "Lydian"
modo$(5) = "Major Pentat¢nic"
modo$(6) = "Minor Pentat¢nic"
modo$(7) = "Mixolydian"
modo$(8) = "Blues"
DIM m$(8)
RESTORE
FOR i = 1 TO 8
FOR j = 1 TO 12
READ m
m$(i) = m$(i) + LTRIM$(RTRIM$(STR$(m)))
NEXT j
NEXT i

DIM cuerdas(6, 16)
FOR i = 1 TO 6: FOR j = 1 TO 16
READ cuerdas(i, j)
NEXT j, i

REM  C C#D D#E F F#G G#A A#B
DATA 1,0,1,0,1,1,0,1,0,1,0,1
DATA 1,0,1,1,0,1,0,1,0,1,1,0
DATA 1,1,0,1,0,1,0,1,1,0,1,0
DATA 1,0,1,0,1,0,1,1,0,1,0,1
DATA 1,0,1,0,1,0,0,1,0,1,0,0
DATA 1,0,0,1,0,1,0,1,0,0,1,0
DATA 1,0,1,0,1,1,0,1,0,1,1,0
DATA 1,0,1,0,1,1,1,0,0,1,0,0


DATA 5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8
DATA 12,1,2,3,4,5,6,7,8,9,10,11,12,1,2,3
DATA 8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11
DATA 3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6
DATA 10,11,12,1,2,3,4,5,6,7,8,9,10,1,2,3
DATA 5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8

SCREEN 0
COLOR 7, 5
CLS : LOCATE 1, 1
COLOR 14, 1
PRINT "  Escalas Musicales V. 2.1,  (C) 1998 por JLC, LS multimedia  "

VIEW PRINT 18 TO 25
COLOR 0, 7
CLS 2
VIEW PRINT
LOCATE 18, 1: PRINT STRING$(80, "Í")
VIEW PRINT 25 TO 25
COLOR , 1
CLS 2
VIEW PRINT
COLOR 12, 7
centra 18, "Intrucciones de Uso"
COLOR 9
VIEW PRINT 19 TO 25
PRINT " Use Q & A to change the root note and W & S to change the mode."
PRINT " ESC to exit"
VIEW PRINT
GOSUB pintar

'main loop, o como ze diga

DO
k$ = INKEY$
SELECT CASE k$
        CASE "q", "Q"
                actual = actual + 1
                IF actual = 13 THEN actual = 1
                GOSUB pintar
        CASE "a", "A"
                actual = actual - 1
                IF actual = 0 THEN actual = 12
                GOSUB pintar
        CASE "w", "W"
                ac = ac + 1
                IF ac = 9 THEN ac = 1
                GOSUB pintar
        CASE "s", "S"
                ac = ac - 1
                IF ac = 0 THEN ac = 8
                GOSUB pintar
        CASE CHR$(27): CLS : SYSTEM
END SELECT
LOOP


END
pintar:
' Calcula las notas:
' girar: C no gira nada, C# gira 1...
IF actual > 1 THEN n$ = RIGHT$(m$(ac), (actual - 1)) + LEFT$(m$(ac), LEN(m$(ac)) - (actual - 1)) ELSE n$ = m$(ac)
COLOR 14, 0
LOCATE , 1

' Pintar en el teclado:

LOCATE 2, 1
COLOR 14, 4
PRINT SPACE$(80)
LOCATE 2, 1: PRINT " Escala actual de " + a$(actual) + " " + modo$(ac)
FOR i = 3 TO 10: LOCATE i, 1: COLOR 8, 7: PRINT STRING$(80, "°"): NEXT i
FOR i = 3 TO 9
FOR j = 1 TO 7
LOCATE i, j * 4 + 2
COLOR 15: PRINT STRING$(3, "Û")
NEXT j, i
FOR i = 3 TO 6
FOR j = 1 TO 6
IF j <> 3 THEN
LOCATE i, j * 4 + 4
COLOR 0: PRINT STRING$(3, "Û")
END IF
NEXT j, i
FOR i = 4 TO 9
LOCATE i, 41: PRINT SPACE$(36)
NEXT i
COLOR 0, 2
LOCATE 4, 41: PRINT SPACE$(36)
LOCATE 4, 42: PRINT "NOTAS DE LA ESCALA:"

' Marcar las teclas

notass$ = ""
FOR i = 1 TO 12
IF MID$(n$, i, 1) = "1" THEN
notass$ = notass$ + a$(i) + " "
IF i = 1 OR i = 3 OR i = 5 OR i = 6 OR i = 8 OR i = 10 OR i = 12 THEN
  LOCATE 8, (i \ 2) * 4 + 7
  COLOR 0, 7: PRINT "X"
ELSE
  IF i < 5 THEN
  LOCATE 5, (i \ 2) * 4 + 5
  COLOR 7, 0: PRINT "X"
  ELSE
  LOCATE 5, (i \ 2) * 4 + 9
  COLOR 7, 0: PRINT "X"
  END IF
END IF
END IF
LOCATE 6, 43: COLOR 0, 7: PRINT notass$
NEXT i

' Rellenar la guitarra

PALETTE 5, 56
COLOR 7, 5
w1$ = "ÚÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄ¿"
w2$ = "ÃÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄ´"
w3$ = "ÀÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÙ"
LOCATE 17, 1
COLOR 14
PRINT "              "; : COLOR , 1: PRINT "3"; : COLOR , 5: PRINT "       "; : COLOR , 1: PRINT "5"; : COLOR , 5: PRINT "       "; : COLOR , 1: PRINT "7"; : COLOR , 5: PRINT "       "; : COLOR , 1: PRINT "9"; : COLOR , 5: PRINT "           "; : COLOR , 1: PRINT "12"; : COLOR , 5: PRINT "         "; : COLOR , 1: PRINT "15": COLOR , 5
COLOR 7
FOR i = 11 TO 16
LOCATE i, 1: PRINT SPACE$(80)
IF i = 11 THEN LOCATE i, 2: PRINT "1. " + w1$
IF i > 11 AND i < 16 THEN LOCATE i, 2: PRINT LTRIM$(RTRIM$(STR$(i - 10))) + ". " + w2$
IF i = 16 THEN LOCATE i, 2: PRINT "6. " + w3$
NEXT i

FOR i = 1 TO 6
FOR j = 1 TO 16
IF MID$(n$, cuerdas(i, j), 1) = "1" THEN
        LOCATE 10 + i, 4 * j - 1
        IF cuerdas(i, j) <> actual THEN COLOR 15, 5 ELSE COLOR 12, 5
        PRINT "þ"
END IF
NEXT j, i

RETURN

SUB centra (y, t$)
LOCATE y, 41 - LEN(t$) \ 2
PRINT t$
END SUB

Look at my codin' style 6 years ago Tongue
i don't really know your coding style now :wink:
btw, cool program. too bad i'm making mine in Visual Basic, not Quick Basic Big Grin
I was just providing it so you could take some info about the diferent modes'n' scales.

Good luck!