in reply to win32 sound problem

try the simple code below to see what i mean
I did try the code, but I don't understand what you expect to happen. Can you give a more concrete example? What should I expect to happen if I first enter 5, then enter 3, for example?

Here are some suggestions:

Replies are listed 'Best First'.
Re^2: win32 sound problem
by spencoid (Acolyte) on Feb 27, 2011 at 20:20 UTC
    the code is supposed to make play and save a wav file each time you enter a repeat value. on win32, if your sound is turned up you should hear the number of clicks that repeats is set to. temp.wav is also created in the working folder. this all works. the only problem is that something is not resetting. if you enter 2 repeats it does 2 repeats. then enter 5 and it does 5 but if you then enter 1, it does 5 again. here is the script with the variables localized. also tried it with warnings and get back warnings that i do not understand about the data packing.
    use strict; #use warnings; use Win32::Sound; my $input = 1; while ($input){ print "\nenter number of repetitions of pulse \"enter\" to quit.\ +n"; $input=<STDIN>; chomp $input; make_wav($input); } sub make_wav{ my $repeats = shift; my $data = ""; my $counter = 0; my $increment = 440/44100; my $WAV = new Win32::Sound::WaveOut(44100, 8, 2); $data = ""; $counter = 0; for ( my $i = 1 ; $i < $repeats + 1 ; $i++ ) { print "\ndoing repeat number $i"; for my $j (1..4410) { my $v = sin($counter/2*3.14) * 128 + 128; $data .= pack("cc", $v, $v); $counter += $increment; } for my $k (1..440) { #silence between pulses my $v = 128; $data .= pack("cc", $v, $v); } } $WAV->Unload(); # drop it $WAV->Load($data); # get it $WAV->Write(); # hear it 1 until $WAV->Status(); # wait for completion $WAV->Save("temp.wav",$data); # write to disk $WAV->Close();
      Did you try calling CloseDevice()?

      Maybe it's a bug in Win32::Sound. Try looking at the module's source code to see why it seems to retain state from a previous call. If it is a bug, maybe you'll be able to submit a patch and report it on CPAN.

      A Super Search finds a similar issue: Win32::Sound buffer problems

        i tried close() and every other function i could find and never could get it to work. it does seem like a bug in win32 sound. i looked at the source code but could not figure out where the problem is, if it is there. it would help if someone who understands windows better than i do could look at the source code and maybe identify the problem.