Leer archivo WAV en C.

Junio 29 20092 comentarios

Guardado en : Programación

#include <stdio.h>
#include <stdlib.h>
char bufer[500];
typedef struct swav
{
  char Riff[4];
  long longRiff;
  char Wave[4];			// 
  long longWave;
  char Fmt[4];
  long lonFmt;			// LONGITUD DE LOS DATOS 
  //QUE VIENEN A CONTINUACION  
  int catego;			//   2  
  int canales;			//  2  
  unsigned int frecuencia;	//2  
  int alinea;
  unsigned int especifico;
  char bloque[4];
  long cuerpo;
  // LONGITUD DEL CUERPO
} TipoWav;
void
main (void)
{
  FILE *arch;
  TipoWav dato;
  long nleer;
  printf ("%d % d ", sizeof (int), sizeof (long));
  arch = fopen ("iowa.wav", "rb");
  if (arch == NULL)
    {
      printf ("NO PUDE ABRIR \n");
      exit (0);
    }
  fseek (arch, 0L, SEEK_SET);
  fread (&dato, sizeof (TipoWav), 1, arch);
  nleer = dato.longitud - sizeof (TipoWav);
  printf ("VOY A LEER % ld ", nleer);
  fclose (arch);
}
Comparte esta información:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • BarraPunto
  • LinkedIn
  • Technorati
  • TwitThis

2 Respuestas a “Leer archivo WAV en C.”

  1. Alu dice:

    Hola, quisiera saber que longitud es la que va en la linea
    nleer = dato.longitud – sizeof (TipoWav);
    y si pudieras explicar con mas detalle los datos que conforman la estructura swav, lo que pasa es que tengo que hacer reconocimiento de voz, solo que primero debo sacar los lpc para lo cual necesito un vector que contiene los datos de un archivo wav para aplicarle varios algoritmos, te agradeceria me explicaras un poco mas(supongo que es la forma en la que esta estructurado un archivo wav)

  2. Daniel dice:

    Se fue un dedazo en el código :P , actualizo el código para DevCpp, los datos que forman la estructura WAV están bastante bien explicados en muchos sitios (por ejemplo este en la Universidad de Stanford (http://ccrma.stanford.edu/courses/422/projects/WaveFormat/) ), la estructura básica está en la cabecera (los primeros dos bloques están dedicados a marcar la cantidad de bloques, el siguiente a indicar el formato y posteriormente está la información propia del archivo (canales, muestreo, etc.).
    En este ejemplo leemos la cantidad de información de sonido hay en el archivo, y despúes puedes irlos leyendo para realizar tus análisis.

    Nota:

    1. El .WAV es un formato a bloques lo que lo hace más complicado de entender a simple vista).
    2. Te recomiendo que si puedes, utilices un API (DirectSound, OpenAL, SDL) y te ahorres el trabajo a bajo nivel, para el manejo de archivos, en caso contrario, no dudes en preguntar algunas cosas, un poco más específicas, despúes de haber googleado un poco.

    Esperamos verte por aqui nuevamente.

    Espero te sirva y si tienes dudas

Deja un comentario