Hola queridos compañeros. Estoy trabajando en un proyecto sobre un xilófono digital, este consiste en tener un módulo como si fuera un xilófono pero en vez de teclado tiene una fila de sensores, receptor y emisor, los cuales detectan una interrupción entre ellos y generan un sonido determinado.
Ahora bien, mi gran duda consiste en mirar que tipo de código me sirve para un dspic30F que me permita llamar nota por nota (estas notas son do, re, mi , fa sol) y están guardadas en una SD o memoria, pero necesito que una vez que haga una interrupción determinada en cualquiera de los sensores, me suene la nota respectiva a esa posición del sensor, es decir, que si interrumpo la señal en el primer par de sensores suene por ejemplo la nota DO.
Gracias.
Encontré un código así, pero no estoy seguro de lo que me quiere decir.
Ahora bien, mi gran duda consiste en mirar que tipo de código me sirve para un dspic30F que me permita llamar nota por nota (estas notas son do, re, mi , fa sol) y están guardadas en una SD o memoria, pero necesito que una vez que haga una interrupción determinada en cualquiera de los sensores, me suene la nota respectiva a esa posición del sensor, es decir, que si interrumpo la señal en el primer par de sensores suene por ejemplo la nota DO.
Gracias.
Encontré un código así, pero no estoy seguro de lo que me quiere decir.
Código:
* Name : ReadFmt *
* Purpose : Reads header of WAV file and checks compatibility *
************************************************** ******************************
}
Function ReadFmt() As Boolean // read fmt block of WAV file
Dim Index As Byte
ReadFmt = True
Index = 0
Repeat // skip over RIFF header
SD.ReadLongWord
Inc(Index)
Until Index = 3
If SD.ReadChar <> "f" Then // check in fmt block
ReadFmt = False
EndIf
If SD.ReadChar <> "m" Then
ReadFmt = False
EndIf
If SD.ReadChar <> "t" Then
ReadFmt = False
EndIf
If SD.ReadChar <> " " Then
ReadFmt = False
EndIf
SD.ReadLongWord // skip over fmt size
If SD.ReadWord <> 1 Then // check PCM (un-compressed) file
ReadFmt = False
EndIf
If SD.ReadWord <> 1 Then // check 1 channel (mono) file
ReadFmt = False
EndIf
If SD.ReadLongWord <> 16000 Then // check sample rate (16kHz)
ReadFmt = False
EndIf
Index = 0
Repeat // skip to data size
SD.ReadByte
Inc(Index)
Until Index = 12
DataSize = SD.ReadLongWord
SD.ReadLongWord // skip to data section
ProgressIncrement = DataSize / 16
End Function
{
Última edición por un moderador: