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