Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
[C] Ejecutar Un Archivo Wav O Midi Con La Librería De "Allegro"
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje [C] Ejecutar Un Archivo Wav O Midi Con La Librería De "Allegro" 
 
La librería de Allegro (version 4) ofrece recursos para la programación de juegos. Al ser una librería de medios, es posible utilizar algunas de sus funciones para ejecutar archivos audio de formato WAV.
Se necesita instalar tambien la librería " liballegro4.4-plugin-alsa " !

    #include <allegro.h>  
    #include <stdio.h>  
      
    int main() {  
      
      SAMPLE *audio;  
      int pos, vox;  
      
    // Inicializa la librería de Allegro  "liballeg.so.4.4.2"  :
      if (install_allegro(SYSTEM_AUTODETECT, NULL, NULL)!= 0) {  
         allegro_exit();  
         printf("Error: no se puede inicializar la librería ''allegro' !");  
         exit(-1);  
      }  
      
    // Instala el modulo de sonido:  
      if (install_sound(DIGI_AUTODETECT, MIDI_NONE, NULL)!= 0) {  
         allegro_exit();  
         printf("Error: imposible la instalación del módulo de sonido !");  
         exit(-1);  
      }  
      
    // Sube el archivo wav:  
      audio = load_wav("/direccion/del/file.wav");  
      if (!audio) {  
         allegro_exit();  
         printf("Error: imposible subir el archivo !");  
         exit(-1);  
      }  
      
    //   Extrae informaciónes generales del archivo wav:
    printf("Resolución de muestreo: %dbit\n", audio->bits);  
    printf("Canales de salida: %d\n", audio->stereo*-1+1);  
    printf("Frecuencia de muestreo: Hz %d\n", audio->freq);  
      
    // Ejecuta el file wav:  
      vox = play_sample(audio, 255, 128, 1000, 0);  
      
      do {  
         pos = voice_get_position(vox);  
         printf("Ejecución de la muestra de audio n. %d\r", pos);  
      } while (pos!=-1);  
      
      
    // Terminar:  
      destroy_sample(audio);  
      remove_sound();  
      
      return 0;  
      
    }

Este código debe ser compilado con la siguiente línea de comando:
gcc -o /direccion/del/programa /direccion/del/programa.c `allegro-config --libs`
 



 
última edición por vuott el Sabado, 24 Enero 2015, 23:28; editado 6 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ejecutar Un Archivo Wav Con La Librería De "Allegro" 
 
Hola vuott:

¿ Aun no hay nada en gambas para poder usar directamente Allegro ?.
Espero que pronto se animen en gambas para la creación de un componente.
Cosas mas difíciles han logrado hacer.

La librería la conocía, darle uso, no.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ejecutar Un Archivo Wav Con La Librería De "Allegro" 
 
Shell escribió:  
¿ Aun no hay nada en gambas para poder usar directamente Allegro ?.

Hola Shell,
puedes haber notado que reporté un código C en lugar del código gambas - ...como suelo hacer - con funciones externas de la librería de "Allegro". Esto  es porqué usando en gambas las funciones externas de esta librería no es reproducido algún sonido.
Por eso, ya que el programa C funciona, quise transformar el puro código C en una librería externa que debe ser llamada en gambas. Pero, muuuy extrañamente, aun usando este programa C convertido en una librería externa llamada de gambas, no funciona!
No comprendo de verdad el porque.  

Mediante gambas sólo es posible hacer funcionar el puro programa C compilado con la función Shell ... pero esto es un pequeño consuelo!  
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: [C] Ejecutar Un Archivo Wav O Midi Con La Librería De "Allegro" 
 
Ejecutar un archivo Midi.
Para la ejecución del archivo MIDI el procedimiento es más complejo, porque es necesario preparar un archivo-banco de sonidos (soundfont bank), denominado patches.dat, que permita la reproducción de sonido de los datos Midi.
Este archivo es utilizado por un driver autónomo wavetable propio de Allegro, llamado DigiMid.
Es posibile crear el archivo patches.dat a partir de un archivo-banco de sonidos .sf2 ejecutando el comando pat2dat en il Terminal, como sigue:
pat2dat -o patches.dat /direccion/del/soundfont_bank.sf2 -8
Este archivo patches.dat  debe insertarse preferentemente en  Home !
Obtenido, sin embargo, el archivo soundfont, para ejecutar un archivo Midi se compilarán y ejecutará el siguiente código de C:
#include <allegro>  
#include <stdio>  
  
int main() {  
  
  MIDI *mid;  
  int dur;  
  
// Inicializa la libreria 'allegro':  
  if (install_allegro(SYSTEM_AUTODETECT, NULL, NULL)!= 0) {  
     allegro_exit();  
     printf("Error: no se puede inicializar la librería 'allegro' !");  
     exit(-1);  
  }  
  
// Instala el temporizador interno de la libreria 'allegro':  
  install_timer();  
  
// Instala el modulo de sonidos:  
  if (install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL)!= 0) {  
     allegro_exit();  
     printf("Error: imposible la instalación del módulo de sonido Midi !");  
     exit(-1);  
  }  
  
// Sube el archivo Midi:  
  mid = load_midi("/direccion/del/file.mid");  
  if (!mid) {  
     allegro_exit();  
     printf("Error: impossible cargar el file !");  
     exit(-1);  
  }  
  
//  Extrae la duración del archivo Midi:
  dur = get_midi_length(mid);  
  printf("Duración del file Midi: %d segundos\n", dur);  
  
// Ejecuta el file Midi:  
  if (play_midi(mid, 0)!= 0) {  
     allegro_exit();  
     printf("Error: impossible ejecutar el file Midi !");  
     exit(-1);  
  }  
  
  do  
     printf("Segundos transcurridos: %ld\r", midi_time);  
  while (midi_time != dur);  
  
  
// Terminando...:  
  destroy_midi(mid);  
      
  return 0;  
  
}

Este código debe ser compilado con la siguiente línea de comando:
gcc -o /direccion/del/programa /direccion/del/programa.c `allegro-config --libs`

...para ejecutar los archivos Midi tenemos que utilizar la libreria 'allegro4' !
 



 
última edición por vuott el Miercoles, 23 Abril 2014, 16:19; editado 6 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: [C] Ejecutar Un Archivo Wav O Midi Con La Librería De "Allegro" 
 
Para ejecutar un fichero audio con la librería de "Allegro 5", es posible utilizar este simple codigo:

#include <stdio>  
#include <allegro5/allegro.h>  
#include <allegro5/allegro_audio.h>  
#include <allegro5/allegro_acodec.h>  
  
  
int main(int argc, char *argv[]){  
  
  ALLEGRO_SAMPLE *sample = NULL;  
  unsigned int pos, frequenza;  
  
  
  if(!al_init()){  
     fprintf(stderr, "Impossible inicializar la libreria Allegro 5 !\n");  
     return -1;  
  }  
  
  if(!al_install_audio()){  
     fprintf(stderr, "Impossible inicializar el audio!\n");  
     return -1;  
  }  
  
  if(!al_init_acodec_addon()){  
     fprintf(stderr, "Impossible inicializar audio codecs !\n");  
     return -1;  
  }  
  
  if (!al_reserve_samples(1)){  
     fprintf(stderr, "Impossible reservar las muestras audio!\n");  
     return -1;  
  }  
  
  sample = al_load_sample(argv[1]);  
  
  if (!sample){  
     printf( "Archivo audio no cargado !\n" );  
     return -1;  
  }  
  
  frequenza = al_get_sample_frequency(sample);  
  printf("Frecuencia: Hz %d\n", frequenza);  
  
  pos = al_get_sample_length(sample);  
  
  printf("Duración: %.2f segundos\n", (float)pos / frequenza);  
  
  /* Ejecuta el fichero audio. */  
  al_play_sample(sample, 1.0, 0.0, 1.0, ALLEGRO_PLAYMODE_ONCE, NULL);  
  
  /* Permite ejecutar para toda la duración del archivo. */  
  al_rest(pos / frequenza);  
  
  al_destroy_sample(sample);  
  
  return 0;  
  
}

Este código debe ser compilado con la siguiente línea de comando:
gcc -o /direccion/del/programa /direccion/del/programa.c -L/usr/local/lib -lallegro -lallegro_main -lallegro_audio -lallegro_acodec
 



 
última edición por vuott el Viernes, 06 Febrero 2015, 13:21; editado 1 vez 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ejecutar Un Archivo Wav Con La Librería De "Allegro" 
 
Shell escribió:  

¿ Aun no hay nada en gambas para poder usar directamente Allegro ?.


Es posible utilizando la versión 5 de la librería de Allegro:

http://foro.gambas-es.org/viewtopic.php?f=5&p=24966
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes [C] Ejecutar Archivos Audio, Midi Y Video ... vuott C/C++ 3 Martes, 11 Agosto 2015, 12:21 Ver último mensaje
shordi
No hay nuevos mensajes [C] Ejecutar Un Archivo Wav Con Las Librer... vuott C/C++ 1 Martes, 20 Octobre 2015, 06:27 Ver último mensaje
shordi
No hay nuevos mensajes Al Ejecutar Shell ("sudo Date -s '&qu... Oscar Peralta Controles/Librerías/Componentes 2 Viernes, 05 Enero 2018, 19:14 Ver último mensaje
tercoIDE
No hay nuevos mensajes Ejecutar Archivos Audio MP3 Con La Clase &... vuott Aplicaciones/Fragmentos de Código 5 Lunes, 02 Diciembre 2019, 13:28 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron