Re: [pygame] Noob question: playing sounds

2015-06-09 Thread Philip Le Riche
Hi Miriam -

My problem seems to have been with the wav file I was using. I'd always
assumed a wav file consisted of little more than raw binary samples, in
what case there'd be very little to go wrong, but it seems the structure
is more complicated than that. In particular, the file I was using was
one of the standard Windows sounds taken from c:\Windows\media, which
are in stereo. I imagine Pygame must be able to play stereo wav files,
given the right settings, but not with the defaults.

I eventually came across the GPIO Music Box at
https://www.raspberrypi.org/learning/gpio-music-box/worksheet/ which
contains a very simple demo program using the Sonic Pi sounds which are
pre-installed in|/opt/sonic-pi/etc/samples/|

Running my Pi headless and logging in with PuTTy I got an xcb_comection
error message, which I got rid of by typing
unset DISPLAY
at the shell prompt before launching the Pygame program.

Hope that helps. Regards - Philip

On 05/06/2015 12:20, Miriam English wrote:
 Ah. Then by elimination it does seem that python/pygame on Raspberry
 Pi is the source of the problem somehow. Good luck. Let us know when
 you solve it. I have a Raspberry Pi too and though I haven't got
 around to playing with python and pygame on it yet, I hope to in the
 future. :)

 Cheers,

 - Miriam

 On 05/06/15 20:19, Philip Le Riche wrote:
 Thanks Miriam, but since I can play sounds with omxplayer that wouldn't
 seem to be the problem.

 Kind regards - Philip

 On 05/06/2015 09:52, Miriam English wrote:
 It just occurred to me that I recall reading somewhere that there are
 2 sound outputs in the Raspberry Pi (the audio jack, and the HDMI
 connector) and that some people have had difficulty switching between
 them. You are probably trying to get sound from the audio jack. Did
 you check whether there was sound coming from the HDMI connector? Or
 if you're doing it the other way, did you check the audio jack?

 Just a thought. :)

 Good luck to you,

  - Miriam

 On 05/06/15 18:10, Philip Le Riche wrote:
 I got rid of the xcb_connection_has_error() by unsetting shell
 environment variable DISPLAY, which PuTTy was helpfully setting for me
 (for good reason in other circumstances).

 The line os.environ[SDL_VIDEODRIVER] = dummy still seems to be
 necessary.

 However, I still get no sound. I'll try the RPi forums and see what
 anyone can suggest there.

 Regards - Philip

 On 04/06/2015 20:45, Michael Lutinsky wrote:

 I can verify that running:

 $ python /usr/lib/python2.7/dist-packages/pygame/examples/sound.py

 plays without error on my Kubuntu distro (x86_64 Linux kernel
 3.19.0-18, pulseaudio 6.0). Must be a RPi issue?

 ~ Michael


 On Wed : Jun 3, 2015 10:38:41 AM you wrote:

 Well, this is strange. In

 /usr/lib/python2.7/dist-packages/pygame/examples there is
 sound.py. This

 must have worked for someone once, and it doesn't include anything
 about

 creating a window. When I run it for the first time it makes a
 click but

 doesn't play the sound. It produces the xcb_connection_has_error()

 message but seems to ignore it.



 Adding pygame.display.set_mode((1,1)) to my program (which
 otherwise now

 is very similar to sound.py) doesn't help. This is driving me nuts!



 Regards - Philip



 On 02/06/2015 13:58, diliup gabadamudalige wrote:

 to do most things with pygame you need to initialize a pygame
 window.



 On Tue, Jun 2, 2015 at 3:50 AM, B W stabbingfin...@gmail.com

 mailto:stabbingfin...@gmail.com wrote:



 Hi, you cannot use the dummy video driver if you want sound. At

 least I have not figured out a way to do it. You need at least a

 1x1 window.



 Gumm



 On Mon, Jun 1, 2015 at 2:11 PM, Philip Le Riche

 phi...@blueskylark.org mailto:phi...@blueskylark.org wrote:



 Just trying to get started with pygame and stuck at square 1.

 All I want to do is play sounds on a Raspberry Pi (Raspbian).

 No screen. Nothing visual. So I do:



 import pygame, os, sys

 from pygame.locals import *



 os.environ[SDL_VIDEODRIVER] = dummy



 pygame.mixer.init()

 sound = pygame.mixer.Sound(Exclamation.wav)

 sound.play(loops = 0)

 while pygame.mixer.music.get_busy() == True:

 continue



 Having saved it in file try.py, I do



 python try.py



 and get



 xcb_connection_has_error() returned true



 Yes, I've done an apt-get update and upgrade. I can make

 sounds with Sonic Pi but this produces nothing. Googling the

 error seemed to give no relevant results. Can someone give me

 a hint please?



 Regards - Philip













 http://www.diliupg.com

 http://soft.diliupg.com/




 **



 This e-mail is confidential. It may also be legally privileged.
 If you

 are not the intended recipient or have received it in error, please

 delete it and all copies from your system and notify the sender

 immediately by return e-mail. Any unauthorized reading,
 reproducing,

 printing or further 

Re: [pygame] Noob question: playing sounds

2015-06-09 Thread Miriam English

Hi Philip,

I appreciate the update.

Yes, I was surprised to find that WAV files are a series of chunks of 
data with headers when I first looked into it a while back.


At the time I was mucking about generating raw waveforms mathematically 
using simple programs to basically just build a file out of bytes (like 
a simple text file) and couldn't work out why audio programs didn't read 
them properly. :) I found you can use many (free) audio programs, like 
sox or audacity to convert raw waveforms into properly constructed 
WAV files.


I'm surprised pygame won't play one of the Windows standard sounds. 
Perhaps the file is a slightly non-standard sound format and was added 
to the media folder by another program.


I just now tried a few experiments using sox to convert some sounds and 
it seems pygame doesn't like WAV files that are encoded as:

  signed integer
  floating point
  mu-law
  a-law
  gsm
but will play them if they're encoded as
  unsigned integer
  ima-adpcm
  ms-adpcm
That's a bit of a surprise to me. Maybe that's what happened in your case.

You can convert almost any sound file (sox will automatically recognise 
most formats) by doing something like this:

  sox sample.wav -a fixedSample.wav

That converts sample.wav file into an ms-adpcm file named fixedSample.wav

If you download and install sox it will give you lots of useful 
diagnostics about sounds. It is a commandline program, but that makes it 
more useful than a GUI program because of how you can hitch it to other 
programs. Sox will play pretty-much any kind of sound and convert almost 
anything to almost anything else. If it doesn't recognise the sound 
format you can tell it what you want it to interpret it as.


You can run it from inside python too.

Sox can also be used as a kind of synthesiser. For instance try this for 
a surprisingly realistic synthesised guitar sound:


play -n synth pl G2 pl B2 pl D3 pl G3 pl D4 pl G4 delay 0 .05 .1 .15 .2 
.25 remix - fade 0 4 .1 norm -1


Play is a command that comes with sox... at least it does for Linux. The 
version of sox for MSWindows probably does too. Sox is available for 
almost every operating system in existence.


Have fun,

- Miriam


On 10/06/15 01:47, Philip Le Riche wrote:

Hi Miriam -

My problem seems to have been with the wav file I was using. I'd always
assumed a wav file consisted of little more than raw binary samples, in
what case there'd be very little to go wrong, but it seems the structure
is more complicated than that. In particular, the file I was using was
one of the standard Windows sounds taken from c:\Windows\media, which
are in stereo. I imagine Pygame must be able to play stereo wav files,
given the right settings, but not with the defaults.

I eventually came across the GPIO Music Box at
https://www.raspberrypi.org/learning/gpio-music-box/worksheet/ which
contains a very simple demo program using the Sonic Pi sounds which are
pre-installed in|/opt/sonic-pi/etc/samples/|

Running my Pi headless and logging in with PuTTy I got an xcb_comection
error message, which I got rid of by typing
unset DISPLAY
at the shell prompt before launching the Pygame program.

Hope that helps. Regards - Philip

On 05/06/2015 12:20, Miriam English wrote:

Ah. Then by elimination it does seem that python/pygame on Raspberry
Pi is the source of the problem somehow. Good luck. Let us know when
you solve it. I have a Raspberry Pi too and though I haven't got
around to playing with python and pygame on it yet, I hope to in the
future. :)

Cheers,

- Miriam

On 05/06/15 20:19, Philip Le Riche wrote:

Thanks Miriam, but since I can play sounds with omxplayer that wouldn't
seem to be the problem.

Kind regards - Philip

On 05/06/2015 09:52, Miriam English wrote:

It just occurred to me that I recall reading somewhere that there are
2 sound outputs in the Raspberry Pi (the audio jack, and the HDMI
connector) and that some people have had difficulty switching between
them. You are probably trying to get sound from the audio jack. Did
you check whether there was sound coming from the HDMI connector? Or
if you're doing it the other way, did you check the audio jack?

Just a thought. :)

Good luck to you,

 - Miriam

On 05/06/15 18:10, Philip Le Riche wrote:

I got rid of the xcb_connection_has_error() by unsetting shell
environment variable DISPLAY, which PuTTy was helpfully setting for me
(for good reason in other circumstances).

The line os.environ[SDL_VIDEODRIVER] = dummy still seems to be
necessary.

However, I still get no sound. I'll try the RPi forums and see what
anyone can suggest there.

Regards - Philip

On 04/06/2015 20:45, Michael Lutinsky wrote:


I can verify that running:

$ python /usr/lib/python2.7/dist-packages/pygame/examples/sound.py

plays without error on my Kubuntu distro (x86_64 Linux kernel
3.19.0-18, pulseaudio 6.0). Must be a RPi issue?

~ Michael


On Wed : Jun 3, 2015 10:38:41 AM you wrote:


Well, this is strange. In