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
/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 dissemination of this e-mail or its contents is
strictly prohibited and may be unlawful. Internet communications
cannot be guaranteed to be timely, secure, error or virus-free. The
sender does not accept liability for any errors or omissions.
**********************************************************************************************
--
If you don't have any failures then you're not trying hard enough.
- Dr. Charles Elachi, director of NASA's Jet Propulsion Laboratory
-----
Website: http://miriam-english.org
Blogs: http://miriam-e.dreamwidth.org
http://miriam-e.livejournal.com