Hi, this feature will be officially released, yes. But I can't tell if
this will be already within december.

Cheers.

Am 01.12.2011 22:29, schrieb Alexander Becker:
>
> Wohoo! That's really great! Here is my current (OMG: it's SDL + Tk)
> proof-of-concept-script.
>
> It plays a file via start and stop buttons. In case anyone has
> suggestions, please don't hesitate to drop me an email.
>
>  
>
> [code]
>
> #!perl
>
>  
>
> use strict;
>
> use warnings;
>
> use utf8;
>
> use Tk;
>
> use DBI;
>
> use SQL::Abstract::Limit;
>
> use SDL;
>
> use SDL::Audio;
>
> use SDL::Mixer;
>
> use SDL::Mixer::Samples;
>
> use SDL::Mixer::Channels;
>
> use SDL::Mixer::Music;
>
> use SDL::RWOps;
>
> SDL::init(SDL_INIT_AUDIO);
>
> SDL::Mixer::init( MIX_INIT_MP3 | MUS_MP3 );
>
>  
>
> my $mw = tkinit();
>
>  
>
> unless( SDL::Mixer::open_audio( 44100, AUDIO_S16SYS, 2, 4096 ) == 0 ) {
>
>                 Carp::croak "Cannot open audio: ".SDL::get_error();
>
> }
>
>  
>
> $mw->Button(
>
>                 -text => 'play',
>
>                 -command => sub{
>
>                                my $buffer = get_audio_buffer();
>
>                                my $rwops = SDL::RWOps->new_const_mem(
> $buffer );
>
>                                my $background_music =
> SDL::Mixer::Music::load_MUS_RW( $rwops );
>
>                               
>
>                                unless( $background_music ) {
>
>                                                Carp::croak "Cannot
> load music file [buffer from DB]: " . SDL::get_error();
>
>                                }
>
>                
>
>                                SDL::Mixer::Music::play_music(
> $background_music, 20 );
>
>                 },
>
> )->pack();
>
>  
>
> $mw->Button(
>
>                 -text => 'stop',
>
>                 -command => sub{
>
>                                SDL::Mixer::Music::halt_music();
>
>                 },
>
> )->pack();
>
>  
>
> $mw->MainLoop();
>
>  
>
>  
>
>  
>
> sub get_audio_buffer {
>
>     my $sql = SQL::Abstract::Limit->new( limit_dialect => 'LimitXY' );;
>
>    
>
>     my $table = 'words';
>
>     my @fields = (qw/audio/);
>
>     my %where = (
>
>         id => 2,
>
>     );
>
>     my @order = ();
>
>     my $limit = 1;
>
>     my $offset = 0;
>
>     my ( $stmt, @bind ) = $sql->select( $table, \@fields, \%where,
> \@order, $limit, $offset );
>
>     my $database = 'test';
>
>     my $db_host = '127.0.0.1';
>
>     my $db_port = '3306';
>
>     my $dsn = "DBI:mysql:database=$database;host=$db_host;port=$db_port";
>
>     my $username = 'test';
>
>     my $password = 'test';
>
>     my $dbh = DBI->connect($dsn, $username, $password) or die('Cannot
> connect to DB: ' . DBI->errstr());
>
>     my $sth = $dbh->prepare( $stmt );
>
>     $sth->execute( @bind );
>
>    
>
>     my ($buffer) = $sth->fetchrow_array();
>
>    
>
>     return $buffer;
>
> } # /get_audio_buffer
>
> [/code]
>
>  
>
> Here is the output of "perl Build.PL". There is an error for :
> execinfo.h, however, build, build test and build install runs fine.
>
>  
>
> [snip]
>
> C:\zwischen\cpan\PerlGameDev-SDL-44c341f>perl Build.PL
>
> *************************** !!!WARNING!!! ********************************
>
> This Release breaks back compatibility support with versions 2.4x and
> below
>
> **************************************************************************
>
> Using 'My::Builder::Windows' class ...
>
> Detecting available libraries ...
>
> [Alien::SDL] Testing header(s): SDL.h
>
> [Alien::SDL] Testing header(s): SDL_mixer.h
>
> [Alien::SDL] Testing header(s): SDL_imageFilter.h
>
> [Alien::SDL] Testing header(s): SDL_image.h
>
> [Alien::SDL] Testing header(s): SDL_ttf.h
>
> [Alien::SDL] Testing header(s): SDL_framerate.h
>
> [Alien::SDL] Testing header(s): SDL_gfxBlitFunc.h
>
> [Alien::SDL] Testing header(s): SDL_gfxPrimitives.h
>
> [Alien::SDL] Testing header(s): SDL_rotozoom.h
>
> [Alien::SDL] Testing header(s): SDL_Pango.h
>
> Writing config_data ...
>
> Saving some info to 'notes' ...
>
> [Alien::SDL] Testing header(s): execinfo.h, signal.h NOK: (error:
> execinfo.h: No
>
> such file or directory)
>
> Can't find dist packages without a MANIFEST file
>
> Run 'Build manifest' to generate one
>
>  
>
> WARNING: Possible missing or corrupt 'MANIFEST' file.
>
> Nothing to enter for 'provides' field in metafile.
>
> Created MYMETA.yml and MYMETA.json
>
> Creating new 'Build' script for 'SDL' version '2.535_01'
>
>  
>
> C:\zwischen\cpan\PerlGameDev-SDL-44c341f>
>
> [/snip]
>
>  
>
> Will this be in an official release of SDL? Because this would be a
> really nice feature, that could be advertised, e.g. via blogs entries
> etc.. I could write a german one.
>
>  
>
> Best regards & thanks a lot,
>
> Alex
>
>  
>
> *Von:*Tobias Leich [mailto:em...@froggs.de]
> *Gesendet:* Donnerstag, 1. Dezember 2011 18:37
> *An:* Alexander Becker
> *Betreff:* Re: How to play an mp3 file from a database
>
>  
>
> Hi Alex,
>
> You can checkout the c-sdl-rwops branch at github or download the
> zipfile if you are not experienced with git by using this link:
>
> https://github.com/PerlGameDev/SDL/zipball/c-sdl-rwops
>
> Usage:
>
>  my $music = SDL::Mixer::Music::load_MUS_RW( $rwops );
>
> |load_MUS_RW| does the same like |load_MUS| except that it accepts an
> SDL::RWOps <http://search.cpan.org/perldoc?SDL%3A%3ARWOps>-object
> rather than a filename.
>
> Example for loading music from a variable:
>
>  use SDL;
>  use SDL::Mixer;
>  use SDL::Mixer::Music;
>  use SDL::RWOps;
>  
>  [...]
>  
>  my $rwops = SDL::RWOps->new_const_mem( $scalar_holding_music );
>  my $music = SDL::Mixer::Music::load_MUS( $rwops );
>
> Cheers
>
> Am 30.11.2011 23:09, schrieb Alexander Becker:
>
> Hi!
>  
> The example code in your link gives me version 1.2.11 on Win 7 x64 with
> strawberry perl 5.12.2 built for MSWin32-x64-multi-thread.
>  
> HTH, 
> Alex
>  
> [code]
>  use SDL::Mixer;
>  use SDL::Version;
>  
>  my $version = SDL::Mixer::linked_version();
>  
>  printf("%d.%d.%d\n", $version->major, $version->minor, $version->patch); #
> prints "1.2.11" for me
> [/code]
>  
> -----Ursprüngliche Nachricht-----
> Von: Tobias Leich [mailto:em...@froggs.de] 
> Gesendet: Mittwoch, 30. November 2011 13:18
> An: Alexander Becker
> Cc: 'breno'; sdl-devel@perl.org <mailto:sdl-devel@perl.org>
> Betreff: Re: How to play an mp3 file from a database
>  
> Hi, can you please check what version of libSDL_mixer do you have installed?
>  
> http://sdl.perl.org/SDL-Mixer.html#linked_version
>  
> In case you have 1.2.7 or better we can add support for RWOps objects.
> So you dont need temp files.
>  
> Cheers, FROGGS
>  
>  
> Am 29.11.2011 20:37, schrieb Alexander Becker:
>
>     Hi breno,
>
>      
>
>     thank you for the quick response. It helped.
>
>     I had a look into mixer_samples.t and line 106 states, that 
>
>     quick_load_WAV is not (yet? Who do I have to bribe with what to get it?)
>
> implemented.
>
>      
>
>     Here is a working piece of code using temporary files. Of course, you 
>
>     need a database containing audio files.
>
>      
>
>     Best regards,
>
>     Alex
>
>      
>
>     [code]
>
>     #!perl
>
>      
>
>     use strict;
>
>     use warnings;
>
>     use utf8;
>
>     use DBI;
>
>     use SQL::Abstract::Limit;
>
>     use File::Temp;
>
>     use SDL;
>
>     use SDL::Audio;
>
>     use SDL::Mixer;
>
>     use SDL::Mixer::Samples;
>
>     use SDL::Mixer::Channels;
>
>     use SDL::Mixer::Music;
>
>     SDL::init(SDL_INIT_AUDIO);
>
>     SDL::Mixer::init( MIX_INIT_MP3 | MUS_MP3 );
>
>      
>
>     unless( SDL::Mixer::open_audio( 44100, AUDIO_S16SYS, 2, 4096 ) == 0 ) {
>
>       Carp::croak "Cannot open audio: ".SDL::get_error(); }
>
>      
>
>     my $buffer = get_audio_buffer();
>
>      
>
>     # -- write audio buffer to temp file
>
>     my $fh = File::Temp->new( UNLINK => 1, SUFFIX => '.mp3' ); 
>
>     $fh->unlink_on_destroy( 1 ); print $fh $buffer; my $fname = 
>
>     $fh->filename;
>
>      
>
>     # close the handle or the temfile will have some sort of lock on it 
>
>     and cannot be read $fh->close();
>
>      
>
>     my $background_music = SDL::Mixer::Music::load_MUS( $fname );
>
>      
>
>     unless( $background_music ) {
>
>       Carp::croak "Cannot load music file [buffer from DB]: " .
>
>     SDL::get_error();
>
>     }
>
>      
>
>     SDL::Mixer::Music::play_music( $background_music,0 );
>
>      
>
>     sleep(6);
>
>      
>
>     SDL::Mixer::Music::halt_music();
>
>     SDL::Mixer::close_audio;
>
>     exit(0);
>
>      
>
>      
>
>      
>
>     sub get_audio_buffer {
>
>         my $sql = SQL::Abstract::Limit->new( limit_dialect => 'LimitXY' 
>
>     );;
>
>         
>
>         my $table = 'audio_files';
>
>         my @fields = (qw/audio/);
>
>         my %where = (
>
>             id => 2,
>
>         );
>
>         my @order = ();
>
>         my $limit = 1;
>
>         my $offset = 0;
>
>         my ( $stmt, @bind ) = $sql->select( $table, \@fields, \%where, 
>
>     \@order, $limit, $offset );
>
>         my $database = 'database_name';
>
>         my $db_host = 'your_host';
>
>         my $db_port = '3306';
>
>         my $dsn = "DBI:mysql:database=$database;host=$db_host;port=$db_port";
>
>         my $username = 'username';
>
>         my $password = 'password';
>
>         my $dbh = DBI->connect($dsn, $username, $password) or die('Cannot 
>
>     connect to DB: ' . DBI->errstr());
>
>         my $sth = $dbh->prepare( $stmt );
>
>         $sth->execute( @bind );
>
>         
>
>         my ($buffer) = $sth->fetchrow_array();
>
>         
>
>         return $buffer;
>
>     } # /get_audio_buffer
>
>     [/code]
>
>      
>
>     -----Ursprüngliche Nachricht-----
>
>     Von: breno [mailto:oainikus...@gmail.com]
>
>     Gesendet: Dienstag, 29. November 2011 06:34
>
>     An: Alexander Becker
>
>     Cc: sdl-devel@perl.org <mailto:sdl-devel@perl.org>
>
>     Betreff: Re: How to play an mp3 file from a database
>
>      
>
>     On Mon, Nov 28, 2011 at 8:13 PM, Alexander Becker < > wrote:
>
>         Dear all!
>
>          
>
>     Hi there!
>
>      
>
>         I just tried the example code of the SDL Manual where you play some
>
> music.
>
>         By the SDL manual, I refer to the one that is hidden at the bottom of 
>
>         the sdl.perl.org page, so that you really have to search for it in 
>
>         order to find it - and even then you have to get along with an ugly 
>
>         github
>
>     interface.
>
>     There's a new project website under way, but we're missing people to 
>
>     work in it. Please join #sdl in irc.perl.org if you want to help us 
>
>     get it right :)
>
>      
>
>         So, in general: Is there a way to play mp3 files?
>
>     Yup.
>
>      
>
>     If your libsdl was compiled with mp3 support, all you have to do
>
>     (iirc) is set the MIX_INIT_MP3 (for effects) and MUS_MP3 (for audio) 
>
>     flags when you call SDL::Mixer::init():
>
>      
>
>       SDL::Mixer::init( MIX_INIT_MP3 | MUS_MP3 );
>
>      
>
>     then use load_MUS() and play_music() from SDL::Mixer::Music to play
>
>     mp3 files as background music, or load_WAV() from SDL::Mixer::Samples 
>
>     to play mp3 effects (yes, the function is named load_WAV() but plays 
>
>     different formats too if they're available).
>
>      
>
>     The documentation in SDL::Mixer, SDL::Mixer::Music and 
>
>     SDL::Mixer::Samples should be helpful, as some of the test files 
>
>     (t/mixer_music.t comes to mind).
>
>      
>
>         And in particular: is there a way to play mp3 files that are in a
>
>     variable?
>
>         Or do I have to work with temporary files?
>
>          
>
>     Not sure. I *think* SDL::Mixer::quick_load_WAV( $buffer ) might do the 
>
>     right thing. You'll have to test it though.
>
>      
>
>     Cheers,
>
>      
>
>     breno
>
>     -----
>
>     eMail ist virenfrei.
>
>     Von AVG überprüft - www.avg.de <http://www.avg.de>
>
>     Version: 10.0.1411 / Virendatenbank: 2092/4046 - Ausgabedatum: 
>
>     29.11.2011
>
>      
>
>  
> -----
> eMail ist virenfrei.
> Von AVG überprüft - www.avg.de <http://www.avg.de>
> Version: 10.0.1411 / Virendatenbank: 2102/4048 - Ausgabedatum: 30.11.2011 
>  
>
>  
>
> ------------------------------------------------------------------------
>
> eMail ist virenfrei.
> Von AVG überprüft - www.avg.de <http://www.avg.de>
> Version: 10.0.1411 / Virendatenbank: 2102/4048 - Ausgabedatum: 30.11.2011
>

Reply via email to