Newsgroup: it.comp.lang.visual-basic
Titolo: doc midi x Vb

Ciao a tutti!
chiedo cortesemente se qualcuno può fornirmi un sito dove reperire materiale
informativo sul protocollo midi da gestire con Vb.
un grazie in anticipo a tutti.
BRJ
fabe...@libero.it

 un grazie in anticipo a tutti.
www.wotsit.org

 wrote in message 983o8s$6f84$1...@ID-51318.news.dfncis.de...


 grazie infinite!
che velocita' ! :)
be', li' ci dovrebbero essere piu' doc sui formati, se ricordo. da li'
dovresti poter procedere...
altre cose specifiche non ne ho in mente. se vuoi provare, i siti che
parlavano di multimedia li ho segnati fra i miei links con ": mmed":
www.comune.modena.it/cittadini/apal/
ciao, a.


Non hai cercato bene ;-)
questo l'ho tratto dal quel sito:
The following table lists meta-events which have no midi channel number.
They
are of the format:
FF xx nn dd
01       00000001     nn tt ..      Text event- any text you want. nn=length
in bytes of text tt=text characters
05       00000101     nn tt ..      Lyric nn tt=same as text event
Uno dei due qui sopra dovrebbe essere quello che ti serve
Ciao VB

 che velocita' ! :)
è che già me l'ho avevano segnalato....ho trovato anche le info descritte da
walter,ma non ho capito come interfacciarle in vb
potrei ricevere il tuo aiuto? o quello di chiunque voglia partecipare.
Grazie infinite
BRJ

 BRJ
temo che non ci saprei proprio saltar fuori, non e' il mio genere.
valter piuttosto mi sembra tosto,
vb in persona :)


Potevo tirarmi indietro? No 8-)
Forse ci sono però non ho un file midi con testo per verificarlo se qualcuno
me lo manda o mi dà un link lo provo e lo posto, se no più tardi  dò una
soluzione da provare.
Ciao VB

Premessa: il seguente metodo è un po' grezzo, ma funziona, sicuramente si
può fare di meglio
Prima un po' di teoria (se non ti interessa salta direttamente alla fine):
Questo erano parte delle specifiche che avevo postato:
The following table lists meta-events which have no midi channel number.
They are of the format:
FF xx nn dd
01       00000001     nn tt ..      Text event- any text you want. nn=length
in bytes of text tt=text characters
05       00000101     nn tt ..      Lyric nn tt=same as text event
Da qui si deduce (almeno io l'ho dedotto), che i meta-eventi (credo siano i
dati non legati a un canale midi) sono riconosciuti dal valore FF in
esadecimale (255 in decimale), seguiti da un numero che indica il comando,
seguito da un numero che indica la lunghezza dei dati da leggere, seguito da
dei numeri che indicano i dati (i numeri sono Byte). Il comando 05
esadecimale (5 in decimale) contraddistingue un testo Lyrics (praticamente
il testo della canzone)
Concludendo: dentro il file MIDI dobbbiamo cercare un byte di valore 255
seguito da un byte di valore 5, il byte successivo ci dice quanto è lungo il
testo da leggere, e il byte ancora successivo è il primo carattere del
testo.
Pratica:
Inserisci in un form una casella di testo settando le proprietà
Multiline=True e ScrollBar=Vertical, poi inserisci un CommanButton, e infine
copi il seguente codice nel modulo del form:
Option Explicit  'E' meglio metterlo sempre
Private Sub Command1_Click()
    Dim bytDato As Byte
    Dim lngNumCarTesto As Long
    Open C:\1.mid" For Binary Access Read As #1
    Screen.MousePointer = vbHourglass 'Così capisco che sta lavorando
    Do While Not EOF(1)  'Eseguo il ciclo finché non raggiungo la fine del
file
        Get #1, , bytDato 'Leggo 1 byte
        If bytDato = 255 Then
            Get #1, , bytDato
            If bytDato = 5 Then
                Get #1, , bytDato 'Se sono arrivato fin qua ho trovato
255+5=Lyrics
                For lngNumCarTesto = 1 To bytDato 'Eseguo il ciclo per
quanti caratteri devo leggere
                    Get #1, , bytDato
                    If bytDato = 13 Then 'Se il byte vale 13 inserisco un a
Capo
                        Text1 = Text1 & vbCrLf
                    Else
                        Text1 = Text1 & Chr$(bytDato)
                    End If
                    'La riga seguente rallenta ma
                    'mi piace vedere quello che succede sullo schermo
                    DoEvents
                Next lngNumCarTesto
            End If
        End If
    Loop
    Screen.MousePointer = vbDefault
    Close #1
End Sub
Sperando di esserti stato utile (a me lo è stato in quanto pensavo fosse un
formato più complicato)
Ciao VB  ;-)

 Prima un po' di teoria (se non ti interessa salta direttamente alla fine):
no,no! prima la teoria perchè seguendo la tua logica ho imparato ha far
fungere altre funzioni
complimenti! :)

tutto provato e funzionante...aveva ragione pal quando diceva che èri tosto!
l'unico prob. è che in alcuni testi mi legge le parole tra <passo il tempo>
<bevendo caffè nero> etc...
come si può evitare la presenza dei siboli >< ?
puoi anche non rispondere mi hai già fatto molto felice!
un ringraziamento a tutti coloro che mi hanno aiutato nella ricerca del
materiale riguardo il protocollo midi e a coloro che hanno prestato
attenzione al mio problema (e di molta altra gente)
se potrò essere utile lo farò con chiunque abbia bisogno.
saluti BRJ
fabe...@libero.it

 puoi anche non rispondere mi hai già fatto molto felice!
Nel file midi che mi hai spedito non c'era questo problema, se però succede,
puoi provare a non scrivere i  byte di valore 60 che corrisponde al
carattere < e 62 che corrisponde al carattere >. Cioé
Sostituisci
If bytDato = 13 Then
    Text1 = Text1 & vbCrLf
Else
    Text1 = Text1 & Chr$(bytDato)
End If
Con
Select Case bytDato
Case 13
    Text1 = Text1 & vbCrLf
Case 60, 62
    'Non faccio niente
Case Else
    Text1 = Text1 & Chr$(bytDato)
End Select
In questa maniera se ci sono altri caratteri che non vuoi visualizzare,
diventa facile modificare la routine, aggiungendo i codici dei caratteri sul
secondo Case.
Per la cosa che mi chiedi in Mail postalo direttamente qui, così hai più
possibilità di avere risposte, inoltre prova a guardare sul sito comune, ci
dovrebbe essere un'esempio di ricrca su tutte le directory, se non ne esci
fuori prova a chiedere e ti sarà detto ;-)
Ciao VB
PS. Ricordati Tre regole fondamentali per trovare soluzioni a un problema
con VB
1) Usa F1 (qualche volta anche F2)
2) Cerca sul sito comune (Da dopo il Meeting dovrebbe essere più facile fare
ricerche)
3) Se non hai ancora la risposta chiedi sul News)
In questa maniera oltre a trovare la soluzione impari qualche cosa in più
;-) Ciao VB

Ho ricevuto il file "incriminato", probabilmente se ci avessi pensato un po'
su ci saresti arrivato:
Il quel file il carattere < serve per indicare di andare a capo quindi basta
cambiare la riga:
 If bytDato = 13 Then
    Text1 = Text1 & vbCrLf
con
If bytDato = 13 Or bytDato = 60 Then
    Text1 = Text1 & vbCrLf
Ciao VB

Chiedo scusa per l'intrusione...
ma anche io sono curioso di sapere come leggere del testo da un file midi in
VB
potrei avere dei chiarimenti per favore?
Grazie a tutti
apul...@tiscalinet.it

 ha scritto nel messaggio
news:98m17m$if9$1...@lacerta.tiscalinet.it...

Guarda la risposta del 07/03 ore 23.21 li è spiegato come fare.
Ciao VB

 ha scritto nel messaggio
news:98m9h7$f1a$1...@serv1.albacom.net...



Se oltre a fare le domande leggessi anche le risposte ti saresti accorto che
lo avevo ripostato a una tua domanda del giorno 16 e quella non puoi dire
che non lo hai ancora scaricato giusto?
;-)
Ciao VB