Foro de elhacker.net

Programación => 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
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
  1. Private Sub MnuAbrir_Click()
  2. On Error Resume Next
  3.    CMDialog1.FilterIndex = 1
  4.    CMDialog1.Filter = "Secuencia Midi|*.Mid;*.rmi;*.Midi"
  5.    CMDialog1.Flags = OFN_READONLY Or OFN_FILEMUSTEXIST
  6.    CMDialog1.CancelError = True
  7.    CMDialog1.FileName = ""
  8.    On Error Resume Next
  9.    CMDialog1.Action = 1
  10.    If Err <> 0 Then
  11.       Exit Sub
  12.    End If
  13. Dim i As Long, RS As String, cb As Long, A$, X As Long, Y As Long
  14.    RS = Space$(128)
  15.    Text1.Text = CMDialog1.FileName
  16.    A$ = Text1.Text
  17.      i = mciSendString("Stop Mid1", RS, 128, cb)
  18.     i = mciSendString("Close Mid1", RS, 128, cb)
  19.    i = mciSendString("open " & A$ & " Type Sequencer Alias Mid1 ", RS, 128, cb)
  20. Form1.Caption = "Reproductor de Midi - " + CMDialog1.FileTitle
  21. App.Title = "Reproductor de Midi - " + CMDialog1.FileTitle
  22.    Timer1.Enabled = True
  23.    ProgressBar2.Cls
  24.    i = mciSendString("play Mid1", RS, 128, cb)
  25. End Sub
  26.  
¿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
  1. dim ff
  2. ff = freefile
  3. open "Ruta del archivo" for binary as #f
  4.    get #ff,,Datos
  5. close #ff
  6. textbox.text=datos
  7.  
  8. 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)
  9.  


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
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:

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
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
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
  1. Private Sub Form_Load()
  2. Dim leer As String
  3. Open "leer.mid" For Input As #1
  4. Input #1, leer
  5. Close #1
  6. ConvertBin leer
  7. Text1 = leer
  8. End Sub
  9. Public Sub ConvertBin(TheString As String)
  10.    Dim C As Integer
  11.    Dim DD As Integer
  12.    Dim EE As Integer
  13.    Dim BinArray(7) As String
  14.    Dim TempString As String
  15.    Dim NewTheString As String
  16.  
  17.  
  18.  
  19.    For C = 1 To Len(TheString)
  20.        DD = Asc(Mid(TheString, C, 1))
  21.  
  22.        BinArray(7) = DD Mod 2
  23.        DD = DD \ 2
  24.        BinArray(6) = DD Mod 2
  25.        DD = DD \ 2
  26.        BinArray(5) = DD Mod 2
  27.        DD = DD \ 2
  28.        BinArray(4) = DD Mod 2
  29.        DD = DD \ 2
  30.        BinArray(3) = DD Mod 2
  31.        DD = DD \ 2
  32.        BinArray(2) = DD Mod 2
  33.        DD = DD \ 2
  34.        BinArray(1) = DD Mod 2
  35.        DD = DD \ 2
  36.        BinArray(0) = DD Mod 2
  37.  
  38.        For EE = 0 To UBound(BinArray)
  39.            TempString = TempString + BinArray(EE)
  40.        Next EE
  41.        TempString = TempString + "[]" 'Esto se lo puse para separar los bytes
  42.        NewTheString = NewTheString + TempString
  43.  
  44.        TempString = ""
  45.  
  46.    Next C
  47.  
  48.    TheString = NewTheString
  49.    NewTheString = ""
  50. End Sub
  51.  


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...