Ok just when you guys thought my questions were over, I had another issue
with the code.

All I am doing is playing the same chunk of sound three times using
play_channel. Its fine the first two time but it refuses to play the sound
for the third time. What am I missing here?

use SDL;
use SDL::Mixer;
use SDL::Mixer::Channels;
use SDL::Mixer::Samples;
use SDL::Mixer::Effects;

SDL::init(SDL_INIT_AUDIO);
 SDL::Mixer::open_audio( 44100, AUDIO_U16SYS, 2, 4096 );
 SDL::Mixer::Channels::allocate_channels( 1 );

my $chunk = SDL::Mixer::Samples::load_WAV('C:\1ksil1ch.wav');

SDL::Mixer::Channels::play_channel( -1, $chunk, 0 );

 SDL::delay(10000);

SDL::Mixer::Channels::play_channel( -1, $chunk, 0 );
 SDL::delay(10000);

SDL::Mixer::Channels::play_channel( -1, $chunk, 0 ) or die "Play failed";
 SDL::delay(10000);
 SDL::Mixer::close_audio();

The program always plays the sound twice and then displays "Play failed"

On Thu, Jul 21, 2011 at 12:20 PM, Anjali Menon <anjalimeno...@gmail.com>wrote:

> No problem. Just relieved that its finally working!
>
>
> On Thu, Jul 21, 2011 at 12:16 PM, My <thakore.kar...@gmail.com> wrote:
>
>> Ah anjali my mistake I forgot to mention effects ... my mistake.
>>
>> Kartik Thakore
>>
>> On 2011-07-21, at 10:02 PM, "Tobias Leich" <em...@froggs.de> wrote:
>>
>> > Take a look at this:
>> >
>> > <http://sdl.perl.org/SDL-Mixer-Effects.html#set_panning>
>> > http://sdl.perl.org/SDL-Mixer-Effects.html#set_panning
>> >
>> >
>> >
>> > You have to register a penning effect, on both channels.
>> >
>> >
>> >
>> > This should work.
>> >
>> >
>> >
>> > Cheers,
>> >
>> > FROGGS
>> >
>> >
>> >
>> > Von: Anjali Menon [mailto:anjalimeno...@gmail.com]
>> > Gesendet: Donnerstag, 21. Juli 2011 18:24
>> > An: em...@froggs.de
>> > Cc: sdl-devel@perl.org
>> > Betreff: Re: SDL::Mixer::Channels
>> >
>> >
>> >
>> > Hi,
>> >
>> > Yes I want to play sound first on the left and then on the right
>> channel. My
>> > desktop is hooked to a USB sound card with Left and right Line-in and
>> Line
>> > out options and that is the sound card I am using to play the sounds. I
>> > modified the program to incorporate what you said but it still does not
>> > work.
>> >
>> >
>> > use SDL;
>> > use SDL::Mixer;
>> > use SDL::Mixer::Channels;
>> > use SDL::Mixer::Samples;
>> >
>> >
>> >
>> > SDL::init(SDL_INIT_AUDIO);
>> > SDL::Mixer::open_audio( 44100, AUDIO_U16SYS, 2, 4096 );
>> > SDL::Mixer::Channels::allocate_channels( 2 );
>> > SDL::Mixer::Channels::volume(0,0);
>> > SDL::Mixer::Channels::volume(1,90);
>> > my $chunk = SDL::Mixer::Samples::load_WAV('C:\1ksil1ch.wav');
>> >
>> > SDL::Mixer::Channels::play_channel( 0, $chunk, 0 );
>> >
>> > SDL::delay(10000);
>> > SDL::Mixer::Channels::halt_channel( 0 );
>> >
>> >
>> > SDL::Mixer::Channels::play_channel( 1, $chunk, 0 );
>> > SDL::delay(10000);
>> >
>> > SDL::Mixer::close_audio();
>> >
>> >
>> >
>> > I set the volume for both channels, left and right. I play the sound to
>> the
>> > left channel then i tried to halt the left channel and then played to
>> the
>> > right channel. What I saw was that the wav file played nothing to either
>> > channel in the first case (when I said play to channel 0) and it played
>> the
>> > sound to both channels in the second case (when I said play to channel
>> 1).
>> > All the sounds I am playing are mono.
>> >
>> > I guess I can understand the issue coz the data is going serially to the
>> > sound card and so I thought (before I saw the SDL documentation) that
>> the
>> > only way to control the output on the channels would be to adjust the
>> > channel balance in the master volume. I am not sure what the scheme is
>> that
>> > you guys are using to control this. Anyway, do let me know if there is
>> > anything i can do or if there is something fundamentally wrong about the
>> way
>> > I understand this. thanks,
>> >
>> > Anjali
>> >
>> > On Thu, Jul 21, 2011 at 5:09 AM, <em...@froggs.de> wrote:
>> >
>> > Hi,
>> >
>> > Channels are not bound to left or right. A channel is just a slot that
>> lets
>> > you play sound samples. And if you allocate two channels, you have
>> channel 0
>> > and 1 (not 1 and 2), thats why you dont hear your last sample.
>> >
>> > You want to play sounds first on left and then on right box for example?
>> >
>> > Cheers, FROGGS
>> >
>> > Zitat von Anjali Menon <anjalimeno...@gmail.com>:
>> >
>> > Hi,
>> >
>> > I got done with installing SDL and I wrote a simple program that opens
>> the
>> > audio device allocates both channels to the mixer, sets the volume of
>> one of
>> > the channels to be 0 , loads a wav file and then plays it twice one
>> after
>> > another with a delay in between. I have pasted the code below.
>> >
>> > use SDL;
>> > use SDL::Mixer;
>> > use SDL::Mixer::Channels;
>> > use SDL::Mixer::Samples;
>> >
>> >
>> >
>> > SDL::init(SDL_INIT_AUDIO);
>> > SDL::Mixer::open_audio( 44100, AUDIO_S16, 2, 4096 );
>> > SDL::Mixer::Channels::allocate_channels( 2 );
>> > SDL::Mixer::Channels::volume(1,0);
>> > my $chunk = SDL::Mixer::Samples::load_WAV('C:\1ksil1ch.wav');
>> >
>> > SDL::Mixer::Channels::play_channel( 1, $chunk, 0 );
>> >
>> > SDL::delay(10000);
>> > SDL::Mixer::Channels::halt_channel( 1 );
>> >
>> >
>> > SDL::Mixer::Channels::play_channel( 2, $chunk, 0 );
>> > SDL::delay(10000);
>> >
>> > SDL::Mixer::close_audio();
>> >
>> >
>> > The questions I have are:
>> > 1) When you say channel, do you mean one set of Left and Right Channels.
>> > This is because I saw then in this case, for the first condition of
>> > play_channel (when it was supposed to play to channel 1), it played the
>> wave
>> > file in both the right and left channel and in the second case (when it
>> was
>> > supposed to play to channel 2) there was no sound on either channels. Is
>> > there a way for me to access the left and right channel separately?
>> >
>> > 2)Also, I played another sound file which was just an instance of a
>> person
>> > saying the syllable "ta" and when i played that file using these
>> settings,
>> > the pitch of the sound changed. I noticed that when I increased the
>> sampling
>> > frequency from 44100 to 154100, was when the sound was the correct
>> pitch.
>> > How is this happening? Is it something I am doing?
>> >
>> > I hope you can help,
>> >
>> > Thanks
>> >
>> > On Wed, Jul 20, 2011 at 2:08 PM, Anjali Menon
>> > <anjalimeno...@gmail.com>wrote:
>> >
>> > Thanks Kartik
>> >
>> >
>> > On Wed, Jul 20, 2011 at 12:03 PM, Kartik Thakore <
>> thakore.kar...@gmail.com
>> >> wrote:
>> >
>> > To work with perl, I suggest you learn CPAN. It is how all this will
>> > be installed for you.
>> >
>> > cpan SDL
>> >
>> > Should work.  If you have trouble just bug us at sdl-devel@perl.org .
>> > Also when replying to these threads CC sdl-devel@perl.org
>> >
>> > On Wed, Jul 20, 2011 at 11:35 AM, Anjali Menon <anjalimeno...@gmail.com
>> >
>> > wrote:
>> >> At differing times yes but with an overlap. That was what most others
>> > could
>> >> not do. There is nothing in the docs for SDL::Mixer that say that it
>> > cannot
>> >> be done so I guess I'll just have to try it. Also, is there any way of
>> >> installing this without getting git. Even if there is an older version
>> > I'm
>> >> ok with it if you could point me to it. I'm sorry for so many
>> questions.
>> >> I've never worked with perl before and there is something I need to get
>> > done
>> >> really fast thus the hurry. Thank you,
>> >>
>> >> Anjali
>> >>
>> >> On Wed, Jul 20, 2011 at 6:16 AM, My <thakore.kar...@gmail.com> wrote:
>> >>>
>> >>> This should be possible. Just to be clear you want to play different
>> > wavs
>> >>> on different channels at differing times. Right? Have you read the
>> >>> SDL::Mixer::* docs? Is anything unclear?
>> >>>
>> >>> Kartik Thakore
>> >>>
>> >>> On 2011-07-20, at 3:45 AM, Anjali Menon <anjalimeno...@gmail.com>
>> > wrote:
>> >>>
>> >>>> Hi Kartik,
>> >>>>
>> >>>> I have been going through the SDL::Mixer installation files and I had
>> >>>> several questions about that. I am trying to write a program that
>> > will play
>> >>>> a certain wav file in one channel and somewhere in the middle of that
>> > file
>> >>>> it'll start playing another wav file in the other channel. Firstly,
>> > is is
>> >>>> possible with the SDL::Mixer::Channels extension to run two instances
>> > of a
>> >>>> player independent of eachother. I tried Win32::MediaPlayer and
>> > Win32::Sound
>> >>>> and both of them will stop a file that is currently playing if they
>> > are
>> >>>> given another play command. Can you tell me if SDL_Mixer can do this?
>> > Thanks
>> >>>> a lot for your help,
>> >>>>
>> >>>> Anjali
>> >>
>> >>
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>>
>
>

Reply via email to