Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: Topyr en 3 Octubre 2008, 21:51 PM

Título: [Ayuda] ¿Cómo leer un archivo midi?
Publicado por: Topyr en 3 Octubre 2008, 21:51 PM
Buenas noches. Primero me presento. Soy Topyr, pero no me llamo así ;D. He estado curioseando alguna vez este foro por la parte de programación. Me registré por varios motivos, pero uno de ellos es que necesito "procesar" archivos .MID (midi's). Pero con leerlos me conformo. Quisiera saber si hay una librería disponible en Visual Basic que se encargue de leer las notas y la duración de cada una. Ante todo gracias y, ya he buscado en google y en otros motores de búsqueda pero, no he encontrado nada.
Título: Re: [Ayuda] ¿Cómo leer un archivo midi?
Publicado por: ssccaann43 © en 3 Octubre 2008, 22:01 PM
Aquí (http://www.recursosvisualbasic.com.ar/htm/utilidades-codigo-fuente/reproductor-midi.htm) tienes lo que buscas... Un saludo
Título: Re: [Ayuda] ¿Cómo leer un archivo midi?
Publicado por: Topyr en 3 Octubre 2008, 22:09 PM
Cita de: ssccaann43 en  3 Octubre 2008, 22:01 PM
Aquí (http://www.recursosvisualbasic.com.ar/htm/utilidades-codigo-fuente/reproductor-midi.htm) tienes lo que buscas... Un saludo
Gracias por tu aporte, pero no entiendo muy bien la parte de abrir un .MID
(Aquí dejo el codigo)
Código (vb) [Seleccionar]

Private Sub MnuAbrir_Click()
On Error Resume Next
    CMDialog1.FilterIndex = 1
    CMDialog1.Filter = "Secuencia Midi|*.Mid;*.rmi;*.Midi"
    CMDialog1.Flags = OFN_READONLY Or OFN_FILEMUSTEXIST
    CMDialog1.CancelError = True
    CMDialog1.FileName = ""
    On Error Resume Next
    CMDialog1.Action = 1
    If Err <> 0 Then
       Exit Sub
    End If
Dim i As Long, RS As String, cb As Long, A$, X As Long, Y As Long
    RS = Space$(128)
    Text1.Text = CMDialog1.FileName
    A$ = Text1.Text
      i = mciSendString("Stop Mid1", RS, 128, cb)
     i = mciSendString("Close Mid1", RS, 128, cb)
    i = mciSendString("open " & A$ & " Type Sequencer Alias Mid1 ", RS, 128, cb)
Form1.Caption = "Reproductor de Midi - " + CMDialog1.FileTitle
App.Title = "Reproductor de Midi - " + CMDialog1.FileTitle
    Timer1.Enabled = True
    ProgressBar2.Cls
    i = mciSendString("play Mid1", RS, 128, cb)
End Sub

¿Qué tendría que tocar para plasmarlo en un texbox aparte?

Saludos.
Título: Re: [Ayuda] ¿Cómo leer un archivo midi?
Publicado por: s E t H en 3 Octubre 2008, 22:38 PM
un midi es sonido.. como queres ponerlo en un textbox?
Título: Re: [Ayuda] ¿Cómo leer un archivo midi?
Publicado por: ssccaann43 © en 3 Octubre 2008, 22:42 PM
ahora si me quede  :o sorprendido... Sabes que es un archivo MDI? No entiendo como quieres ponerlo en un text?
Título: Re: [Ayuda] ¿Cómo leer un archivo midi?
Publicado por: BlackZeroX en 4 Octubre 2008, 02:46 AM
si lo quieres plasmar en un texbox

Código (vb) [Seleccionar]

dim ff
ff = freefile
open "Ruta del archivo" for binary as #f
    get #ff,,Datos
close #ff
textbox.text=datos

para reproducir los archivos de audio midi usa el codigo de arriba ok (el de este post no el de Topyr o el Link de sccaann143)
Título: Re: [Ayuda] ¿Cómo leer un archivo midi?
Publicado por: Topyr1 en 12 Octubre 2008, 16:01 PM
Con "Plasmar" Me refiero a poner el número de hercio de la nota, la duración, el instrumento, el volumen, el tempo de todo el tema.

¿Ahora me entienden?

PD: He probado lo de ░▒▓BlackZeroҖ▓▒░ pero me da unos carácteres de cualquier forma (pensareis que soy vago al preguntarlo, pero he intentado ponerlo pero no he podido).
Título: Re: [Ayuda] ¿Cómo leer un archivo midi?
Publicado por: seba123neo en 12 Octubre 2008, 22:56 PM
Hola, el codigo de ░▒▓BlackZeroҖ▓▒░  te lo abre en modo binario...no es lo que buscas...lo que vos queres es como lo que puso ssccaann43...pero si no sabes que es lo que dice el codigo entocnes es muy dificil ayudarte...

saludos.
Título: Re: [Ayuda] ¿Cómo leer un archivo midi?
Publicado por: Topyr1 en 19 Octubre 2008, 19:33 PM
Entonces, ¿No hay solución a mi problema  :(?
Entonces dejo el post abierto por si alguien se le ocurre alguna idea, mientras intentaré buscar otras formas de hacer mi proyecto.
Título: Re: [Ayuda] ¿Cómo leer un archivo midi?
Publicado por: APOKLIPTICO en 19 Octubre 2008, 20:26 PM
Supongo que tendrías que analizar como es la forma de un archivo midi.
Ak tenes algo para empezar:
http://es.wikipedia.org/wiki/MIDI#Bytes_MIDI (http://es.wikipedia.org/wiki/MIDI#Bytes_MIDI)
Es posible, animo!
Título: Re: [Ayuda] ¿Cómo leer un archivo midi?
Publicado por: ssccaann43 © en 19 Octubre 2008, 20:28 PM
En el ejemplo que te pase, esta lo que necesitas. No entiendo porque no puedes usarlo.

Recomendación,

Bajate un manual de visual basic.
Título: Re: [Ayuda] ¿Cómo leer un archivo midi?
Publicado por: Topyr1 en 19 Octubre 2008, 21:04 PM
Cita de: APOKLIPTICO en 19 Octubre 2008, 20:26 PM
Supongo que tendrías que analizar como es la forma de un archivo midi.
Ak tenes algo para empezar:
http://es.wikipedia.org/wiki/MIDI#Bytes_MIDI (http://es.wikipedia.org/wiki/MIDI#Bytes_MIDI)
Es posible, animo!

Gracias por tu aporte, creo que me servirá  :laugh:

Cita de: ssccaann43 en 19 Octubre 2008, 20:28 PM
En el ejemplo que te pase, esta lo que necesitas. No entiendo porque no puedes usarlo.

Recomendación,

Bajate un manual de visual basic.
Mira, yo te estoy pidiendo (por ejemplo) que me des la partitura de una canción y tu me estás pasando un programa para escucharlo, puede que me sirva, pero no es lo que busco. Y gracias por tu consejo.
Título: Re: [Ayuda] ¿Cómo leer un archivo midi?
Publicado por: APOKLIPTICO en 19 Octubre 2008, 21:06 PM
Cita de: ssccaann43 en 19 Octubre 2008, 20:28 PM
En el ejemplo que te pase, esta lo que necesitas. No entiendo porque no puedes usarlo.

Recomendación,

Bajate un manual de visual basic.

Lo que está pidiendo, es conocer el pitch de los sonidos, osea, quiere saber como están compuesto cada uno de los midis, no necesita reproducirlos...
Título: Re: [Ayuda] ¿Cómo leer un archivo midi?
Publicado por: Topyr1 en 20 Octubre 2008, 19:23 PM
Cita de: APOKLIPTICO en 19 Octubre 2008, 21:06 PM
Cita de: ssccaann43 en 19 Octubre 2008, 20:28 PM
En el ejemplo que te pase, esta lo que necesitas. No entiendo porque no puedes usarlo.

Recomendación,

Bajate un manual de visual basic.

Lo que está pidiendo, es conocer el pitch de los sonidos, osea, quiere saber como están compuesto cada uno de los midis, no necesita reproducirlos...
Gracias por tu aporte, pero ahora me encunetro otro problema.

Según la wikipedia un Byte que lee el midi son 10 bits (0's y 1's), pues bien, cuando voy a poner a binario separándolo con "[]" me salen 8 bits, no 10 como decía la wikipedia.

Aquí está el código.
Código (vb) [Seleccionar]

Private Sub Form_Load()
Dim leer As String
Open "leer.mid" For Input As #1
Input #1, leer
Close #1
ConvertBin leer
Text1 = leer
End Sub
Public Sub ConvertBin(TheString As String)
    Dim C As Integer
    Dim DD As Integer
    Dim EE As Integer
    Dim BinArray(7) As String
    Dim TempString As String
    Dim NewTheString As String
   
   
   
    For C = 1 To Len(TheString)
        DD = Asc(Mid(TheString, C, 1))
       
        BinArray(7) = DD Mod 2
        DD = DD \ 2
        BinArray(6) = DD Mod 2
        DD = DD \ 2
        BinArray(5) = DD Mod 2
        DD = DD \ 2
        BinArray(4) = DD Mod 2
        DD = DD \ 2
        BinArray(3) = DD Mod 2
        DD = DD \ 2
        BinArray(2) = DD Mod 2
        DD = DD \ 2
        BinArray(1) = DD Mod 2
        DD = DD \ 2
        BinArray(0) = DD Mod 2
       
        For EE = 0 To UBound(BinArray)
            TempString = TempString + BinArray(EE)
        Next EE
        TempString = TempString + "[]" 'Esto se lo puse para separar los bytes
        NewTheString = NewTheString + TempString
       
        TempString = ""
       
    Next C

    TheString = NewTheString
    NewTheString = ""
End Sub
Título: Re: [Ayuda] ¿Cómo leer un archivo midi?
Publicado por: APOKLIPTICO en 20 Octubre 2008, 19:36 PM
y... Obvio, un byte son 8 bits...
lo que tenes q hacer, es concatenarlos de a 10 bits y listo...