En este espacio quisiera apuntar el código que funcionó primero del sistema Canto Nuevo. Vi que era bueno en gran manera. Especialmente para sanarme de algunos golpes que da la vida y los procesos de muerte:
Todo esto lo he guardado desde mi juventud pero ahora quisiera añadir que es mejor usarlo máximo una semana. Antes de empezar a cantar como se debe: De corazón.
Proyecto1 CANTO NUEVO V 0.0.1
_______________________________________
Type=Exe
Reference=*G{00020430-0000-0000-C000-000000000046}#2.0#0#..WINDOWSsystem32stdole2.tlb#OLE Automation
Reference=*G{00025E04-0000-0000-C000-000000000046}#3.5#0#..Archivos de programaArchivos comunesMicrosoft SharedDAODAO2535.TLB#Microsoft DAO 2.5/3.51 Compatibility Library
Form=Form1.frm
Form=Form3.frm
Form=Form4.frm
Form=Form5.frm
Object={F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0; comdlg32.ocx
Form=Form6.frm
IconForm="Form1"
Startup="Form3"
HelpFile=""
ExeName32="ASISTENTE PARA APRENDER A LEER PARTITURAS.exe"
Command32=""
Name="Proyecto1"
HelpContextID="0"
CompatibleMode="0"
MajorVer=1
MinorVer=0
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0
VersionCompanyName="drive[thru"
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
FDIVCheck=0
UnroundedFP=0
StartMode=0
Unattended=0
Retained=0
ThreadPerObject=0
MaxNumberOfThreads=1
[MS Transaction Server]
AutoRefresh=1
----------------------------------------------------------
VERSION 5.00
Begin VB.Form Form1
AutoRedraw = -1 'True
BackColor = &H00400000&
Caption = "CANTO NUEVO"
ClientHeight = 6810
ClientLeft = 60
ClientTop = 345
ClientWidth = 6540
BeginProperty Font
Name = "MS Sans Serif"
Size = 8.25
Charset = 0
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
FontTransparent = 0 'False
LinkTopic = "Form1"
ScaleHeight = 6810
ScaleWidth = 6540
StartUpPosition = 3 'Windows Default
WindowState = 2 'Maximized
Begin VB.Timer T1
Interval = 250
Left = 600
Top = 3240
End
Begin VB.CommandButton Command5
BackColor = &H00FFFFC0&
Caption = "REPETIR"
Height = 855
Left = 6480
Style = 1 'Graphical
TabIndex = 6
Top = 4200
Width = 2895
End
Begin VB.CommandButton Command1
BackColor = &H00C0FFFF&
Caption = "VARIACIONES"
Height = 975
Left = 6480
Style = 1 'Graphical
TabIndex = 5
Top = 5160
Width = 2895
End
Begin VB.PictureBox PAR
AutoRedraw = -1 'True
BackColor = &H00FFFFFF&
FillStyle = 0 'Solid
Height = 1575
Left = 2160
ScaleHeight = 26.723
ScaleMode = 6 'Millimeter
ScaleWidth = 128.323
TabIndex = 0
Top = 1440
Width = 7335
End
Begin VB.PictureBox NOTA
AutoRedraw = -1 'True
BackColor = &H00FFFFFF&
FillStyle = 0 'Solid
Height = 495
Left = 2160
ScaleHeight = 7.673
ScaleMode = 6 'Millimeter
ScaleWidth = 128.323
TabIndex = 1
Top = 3120
Width = 7335
End
Begin VB.CommandButton Command4
BackColor = &H00FFC0C0&
Caption = "SALIR"
Height = 495
Left = 3480
Style = 1 'Graphical
TabIndex = 4
Top = 6840
Width = 2295
End
Begin VB.CommandButton Command3
BackColor = &H00C0FFC0&
Caption = "LIMPIAR"
Height = 495
Left = 3480
Style = 1 'Graphical
TabIndex = 3
Top = 6240
Width = 2295
End
Begin VB.CommandButton Command2
BackColor = &H00C0FFC0&
Caption = "GENERAR"
BeginProperty Font
Name = "MS Sans Serif"
Size = 12
Charset = 0
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 1455
Left = 2280
Style = 1 'Graphical
TabIndex = 2
Top = 4440
Width = 3975
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Const SND_ASYNC = &H1 ' reproducción asíncrona
Const SND_NODEFAULT = &H2 ' silencio no predeterminado, si no se encuentra sonido
Private ret As Integer
Dim X1, X2, Y1, Y2, u, I, J, A, K, ERR, DN(12) As Integer
Dim SN(8, 3) As String
Dim TI As Variant
Dim AA As Double
Dim N(12), UB(12), NI(12), Z(3), D(12) As Integer
Dim NOTAS(7) As String
Dim F As Date
Private Sub Command1_Click() 'TOCA VARIACIONES MUSICALES
Randomize
For J = 1 To 12
D(J) = Int(Rnd() * 3 + 1)
Next J
TI = 0
Call T1_Timer
End Sub
Private Sub Command2_Click() 'GENERAR MUSICA
For I = 1 To 12
N(I) = 0
D(I) = 0
Next I
Randomize
For I = 1 To 12
N(I) = Int(Rnd() * 7)
Next I
For J = 1 To 12
D(J) = Int(Rnd() * 3 + 1)
Next J
TI = 0
PAR.Visible = True
PAR.Cls
NOTA.Cls
PAR.FillColor = &H0&
Command2.Enabled = False
Command3.Enabled = True
Command4.Enabled = True
X1 = 0
'REINICIALIZA LOS ARRAY
For I = 1 To 12
NI(I) = 0
UB(I) = 0
Next I
'DIBUJA EL PENTAGRAMA
X1 = 0
Y1 = 10
X2 = 130
Y2 = 10
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
'PINTA EL SIMBOLO DE LA CLAVE DE SOL
X1 = 3
AA = 3.1416
PAR.FontBold = True
PAR.DrawWidth = 2
PAR.Circle (X1, 17), 1, RGB(0, 0, 0), 1.5 * AA, 0.5 * AA
PAR.Circle (X1, 16), 2, RGB(0, 0, 0), 0.5 * AA, 1.5 * AA
PAR.Circle (X1, 12), 2, RGB(0, 0, 0), 1.5 * AA, 0.5 * AA, 2
PAR.Line (X1, 10)-(X1, 20)
PAR.Line (X1, 20)-(X1 - 1, 20)
PAR.PSet (X1 + 3, 15), RGB(0, 0, 0)
PAR.PSet (X1 + 3, 17), RGB(0, 0, 0)
PAR.FontBold = False
PAR.DrawWidth = 1
X1 = 0
'NOTAS
Randomize
For I = 1 To 12
u = Int(Rnd() * 8 + 13)
PAR.FillStyle = 0
PAR.FillColor = &H0&
Select Case u
Case 20
'do
PAR.CurrentX = X1 + 10
PAR.CurrentY = 22
N(I) = 1
UB(I) = PAR.CurrentX
X1 = X1 + 10
Y1 = 20
PAR.Circle (X1, Y1), 1, RGB(0, 0, 0)
PAR.Line (X1 + 1, Y1)-(X1 + 1, Y1 - 
PAR.Line (X1 - 2, Y1)-(X1 + 2, Y1)
Case 19
're
PAR.CurrentX = X1 + 10
PAR.CurrentY = 22
N(I) = 2
UB(I) = PAR.CurrentX
X1 = X1 + 10
Y1 = 19
PAR.Circle (X1, Y1), 1, RGB(0, 0, 0)
PAR.Line (X1 + 1, Y1)-(X1 + 1, Y1 - 
Case 18
'MI
PAR.CurrentX = X1 + 10
PAR.CurrentY = 22
N(I) = 3
UB(I) = PAR.CurrentX
X1 = X1 + 10
Y1 = 18
PAR.Circle (X1, Y1), 1, RGB(0, 0, 0)
PAR.Line (X1 + 1, Y1)-(X1 + 1, Y1 - 
Case 17
'fa
PAR.CurrentX = X1 + 10
PAR.CurrentY = 22
N(I) = 4
UB(I) = PAR.CurrentX
X1 = X1 + 10
Y1 = 17
PAR.Circle (X1, Y1), 1, RGB(0, 0, 0)
PAR.Line (X1 + 1, Y1)-(X1 + 1, Y1 - 
Case 16
'sol
PAR.CurrentX = X1 + 10
PAR.CurrentY = 22
N(I) = 5
UB(I) = PAR.CurrentX
X1 = X1 + 10
Y1 = 16
PAR.Circle (X1, Y1), 1, RGB(0, 0, 0)
PAR.Line (X1 + 1, Y1)-(X1 + 1, Y1 - 
Case 15
'la
PAR.CurrentX = X1 + 10
PAR.CurrentY = 22
N(I) = 6
UB(I) = PAR.CurrentX
X1 = X1 + 10
Y1 = 15
PAR.Circle (X1, Y1), 1, RGB(0, 0, 0)
PAR.Line (X1 + 1, Y1)-(X1 + 1, Y1 - 
Case 14
'si
PAR.CurrentX = X1 + 10
PAR.CurrentY = 22
N(I) = 7
UB(I) = PAR.CurrentX
X1 = X1 + 10
Y1 = 14
PAR.Circle (X1, Y1), 1, RGB(0, 0, 0)
PAR.Line (X1 - 1, Y1)-(X1 - 1, Y1 + 
Case 13
'do
PAR.CurrentX = X1 + 10
PAR.CurrentY = 22
N(I) = 8
UB(I) = PAR.CurrentX
X1 = X1 + 10
Y1 = 13
PAR.Circle (X1, Y1), 1, RGB(0, 0, 0)
PAR.Line (X1 - 1, Y1)-(X1 - 1, Y1 + 
Case Else
MsgBox "PROBLEMAS EN EL SISTEMA", vbCritical
Exit Sub
End Select
Next I
End Sub
Private Sub Command3_Click() 'limpiar
K = 0
A = 0
'BORRA LO ALMACENADO EN LOS ARRAYS UBICADOR Y NOTAS
For I = 1 To 12
N(I) = 0
NI(I) = 0
UB(I) = 0
Next I
PAR.FillColor = &H0&
PAR.ForeColor = RGB(0, 0, 0)
Command2.Enabled = True
Command3.Enabled = False
Command4.Enabled = True
PAR.Cls
X1 = 0
Y1 = 10
X2 = 130
Y2 = 10
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
'SEGUNDA LINEA
X1 = 0
Y1 = 10 + 20
X2 = 130
Y2 = 10 + 20
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
'TERCERA PENTA
X1 = 0
Y1 = 10 + 40
X2 = 130
Y2 = 10 + 40
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
'CUARTO PENTA
X1 = 0
Y1 = 10 + 60
X2 = 130
Y2 = 10 + 60
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
'QUINTO PENTA
X1 = 0
Y1 = 10 + 80
X2 = 130
Y2 = 10 + 80
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
NOTA.Cls
End Sub
Private Sub Command4_Click()
Form3.Show
Form1.Hide
End Sub
Private Sub Command5_Click()
TI = 0
Call T1_Timer
End Sub
Private Sub Form_Load()
TI = 0
Z(1) = 1000
Z(2) = 500
Z(3) = 250
SN(1, 1) = "C:CANTO NUEVONOTASDO 1.wav"
SN(1, 2) = "C:CANTO NUEVONOTASDO 1-2.wav"
SN(1, 3) = "C:CANTO NUEVONOTASDO 1-4.wav"
SN(2, 1) = "C:CANTO NUEVONOTASRE 1.wav"
SN(2, 2) = "C:CANTO NUEVONOTASRE 1-2.wav"
SN(2, 3) = "C:CANTO NUEVONOTASRE 1-4.wav"
SN(3, 1) = "C:CANTO NUEVONOTASMI 1.wav"
SN(3, 2) = "C:CANTO NUEVONOTASMI 1-2.wav"
SN(3, 3) = "C:CANTO NUEVONOTASMI 1-4.wav"
SN(4, 1) = "C:CANTO NUEVONOTASFA 1.wav"
SN(4, 2) = "C:CANTO NUEVONOTASFA 1-2.wav"
SN(4, 3) = "C:CANTO NUEVONOTASFA 1-4.wav"
SN(5, 1) = "C:CANTO NUEVONOTASSOL 1.wav"
SN(5, 2) = "C:CANTO NUEVONOTASSOL 1-2.wav"
SN(5, 3) = "C:CANTO NUEVONOTASSOL 1-4.wav"
SN(6, 1) = "C:CANTO NUEVONOTASLA 1.wav"
SN(6, 2) = "C:CANTO NUEVONOTASLA 1-2.wav"
SN(6, 3) = "C:CANTO NUEVONOTASLA 1-4.wav"
SN(7, 1) = "C:CANTO NUEVONOTASSI 1.wav"
SN(7, 2) = "C:CANTO NUEVONOTASSI 1-2.wav"
SN(7, 3) = "C:CANTO NUEVONOTASSI 1-4.wav"
SN(8, 1) = "C:CANTO NUEVONOTASDOa 1.wav"
SN(8, 2) = "C:CANTO NUEVONOTASDOa 1-2.wav"
SN(8, 3) = "C:CANTO NUEVONOTASDOa 1-4.wav"
'CARGA EL PENTAGRAMA
Command2.Enabled = True
Command3.Enabled = False
Command4.Enabled = True
NOTAS(1) = "DO"
NOTAS(2) = "RE"
NOTAS(3) = "MI"
NOTAS(4) = "FA"
NOTAS(5) = "SOL"
NOTAS(6) = "LA"
NOTAS(7) = "SI"
X1 = 0
Y1 = 10
X2 = 130
Y2 = 10
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
'SEGUNDA LINEA
X1 = 0
Y1 = 10 + 20
X2 = 130
Y2 = 10 + 20
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
'TERCERA PENTA
X1 = 0
Y1 = 10 + 40
X2 = 130
Y2 = 10 + 40
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
'CUARTO PENTA
X1 = 0
Y1 = 10 + 60
X2 = 130
Y2 = 10 + 60
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
'QUINTO PENTA
X1 = 0
Y1 = 10 + 80
X2 = 130
Y2 = 10 + 80
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
Y1 = Y1 + 2
Y2 = Y2 + 2
PAR.Line (X1, Y1)-(X2, Y2)
'INICIALIZA LOS ARRAYS DE NOTAS E INTENTOS Y UBICACIONES
For I = 1 To 12
N(I) = 0
NI(I) = 0
UB(I) = 0
Next I
'BLANQUEA PICTUREBOX
NOTA.Cls
A = 0
K = 0
End Sub
Private Sub T1_Timer()
Dim S As Integer
TI = TI + T1.Interval
If TI = 500 Then
ret = sndPlaySound(SN(N(1), D(1)), SND_ASYNC Or SND_NODEFAULT)
End If
S = 500 + Z(D(1))
If TI = S Then
ret = sndPlaySound(SN(N(2), D(2)), SND_ASYNC Or SND_NODEFAULT)
End If
S = S + Z(D(2))
If TI = S Then
ret = sndPlaySound(SN(N(3), D(3)), SND_ASYNC Or SND_NODEFAULT)
End If
S = S + Z(D(3))
If TI = S Then
ret = sndPlaySound(SN(N(4), D(4)), SND_ASYNC Or SND_NODEFAULT)
End If
S = S + Z(D(4))
If TI = S Then
ret = sndPlaySound(SN(N(5), D(5)), SND_ASYNC Or SND_NODEFAULT)
End If
S = S + Z(D(5))
If TI = S Then
ret = sndPlaySound(SN(N(6), D(6)), SND_ASYNC Or SND_NODEFAULT)
End If
S = S + Z(D(6))
If TI = S Then
ret = sndPlaySound(SN(N(7), D(7)), SND_ASYNC Or SND_NODEFAULT)
End If
S = S + Z(D(7))
If TI = S Then
ret = sndPlaySound(SN(N(8), D(8)), SND_ASYNC Or SND_NODEFAULT)
End If
S = S + Z(D(8))
If TI = S Then
ret = sndPlaySound(SN(N(9), D(9)), SND_ASYNC Or SND_NODEFAULT)
End If
S = S + Z(D(9))
If TI = S Then
ret = sndPlaySound(SN(N(10), D(10)), SND_ASYNC Or SND_NODEFAULT)
End If
S = S + Z(D(10))
If TI = S Then
ret = sndPlaySound(SN(N(11), D(11)), SND_ASYNC Or SND_NODEFAULT)
End If
S = S + Z(D(11))
If TI = S Then
ret = sndPlaySound(SN(N(12), D(12)), SND_ASYNC Or SND_NODEFAULT)
End If
S = S + Z(D(12))
If TI >= S Then
End If
End Sub