Home    Forum    Search    FAQ    Register    Log in


Post new topic  Reply to topic 
Page 1 of 1
 
 
[C] Ejecutar Un Archivo Wav O Midi Con La Librería De "Allegro"
Author Message
Reply with quote   Download Post  
Post [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`
 



 
Last edited by vuott on Saturday, 24 January 2015, 23:28; edited 6 times in total 
vuott - View user's profileSend private message 
Back to topPage bottom
Reply with quote   Download Post  
Post 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 - View user's profileSend private messageVisit poster's website 
Back to topPage bottom
Reply with quote   Download Post  
Post 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 - View user's profileSend private message 
Back to topPage bottom
Reply with quote   Download Post  
Post 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' !
 



 
Last edited by vuott on Wednesday, 23 April 2014, 16:19; edited 6 times in total 
vuott - View user's profileSend private message 
Back to topPage bottom
Reply with quote   Download Post  
Post 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
 



 
Last edited by vuott on Friday, 06 February 2015, 13:21; edited 1 time in total 
vuott - View user's profileSend private message 
Back to topPage bottom
Reply with quote   Download Post  
Post 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 - View user's profileSend private message 
Back to topPage bottom
Display posts from previous:    
 
HideSimilar Topics
Topic Author Forum Replies Last Post
No new posts [C] Ejecutar Archivos Audio, Midi Y Video ... vuott C/C++ 3 Tuesday, 11 August 2015, 12:21 View latest post
shordi
No new posts [C] Ejecutar Un Archivo Wav Con Las Librer... vuott C/C++ 1 Tuesday, 20 October 2015, 06:27 View latest post
shordi
No new posts Al Ejecutar Shell ("sudo Date -s '&qu... Oscar Peralta Controles/Librerías/Componentes 2 Friday, 05 January 2018, 19:14 View latest post
tercoIDE
No new posts Ejecutar Archivos Audio MP3 Con La Clase &... vuott Aplicaciones/Fragmentos de Código 5 Monday, 02 December 2019, 13:28 View latest post
tincho
 

Post new topic  Reply to topic  Page 1 of 1
 

Users browsing this topic: 0 Registered, 0 Hidden and 1 Guest
Registered Users: None


 
Permissions List
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events



  

 

cron