Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

[C] Ejecutar Un Archivo Wav O Midi Con La Librería De "Allegro"

[C] Ejecutar Un Archivo Wav O Midi Con La Librería De "Allegro"
Artículo
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 usuario Enviar mensaje privado  
vuott [ Domingo, 06 Abril 2014, 02:08 ]
 


[C] Ejecutar Un Archivo Wav O Midi Con La Librería De "Allegro"
Comentarios
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



 
Shell - Ver perfil del usuario Enviar mensaje privado  
Shell [ Domingo, 06 Abril 2014, 08:47 ]
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 usuario Enviar mensaje privado  
vuott [ Domingo, 06 Abril 2014, 21:56 ]
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 usuario Enviar mensaje privado  
vuott [ Miercoles, 16 Abril 2014, 15:11 ]
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 usuario Enviar mensaje privado  
vuott [ Viernes, 06 Febrero 2015, 12:20 ]
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 usuario Enviar mensaje privado  
vuott [ Viernes, 06 Febrero 2015, 18:34 ]
Mostrar mensajes anteriores:    
 
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


 



 

cron