On Mon, Jan 7, 2013 at 6:31 PM, Dylan Kaufman <ketchup.ca...@gmail.com> wrote: > > from winsound import Beep > > Beep(196, 1500)#G
winsound.Beep wraps the Windows (win32) system call of the same name. Instead, consider using a cross-platform library such as PortAudio or PortMidi: http://sourceforge.net/apps/trac/portmedia One option is to synthesize PCM audio and play it with PyAudio, which wraps PortAudio. But you'll probably have more fun with MIDI (Musical Instrument Digital Interface). Installing pyPortMidi involves compiling libportmidi and the Cython/Pyrex extension module. If you run into trouble there, hopefully an OS X user on the list can help. Alternatively, pygame includes pyPortMidi as pygame.midi: pygame installers: http://www.pygame.org/download.shtml Demo: import and initialize: >>> from time import sleep >>> from pygame import midi >>> midi.init() list devices: >>> for i in range(midi.get_count()): ... print i, midi.get_device_info(i) ... 0 ('ALSA', 'Midi Through Port-0', 0, 1, 0) 1 ('ALSA', 'Midi Through Port-0', 1, 0, 0) 2 ('ALSA', 'TiMidity port 0', 0, 1, 0) 3 ('ALSA', 'TiMidity port 1', 0, 1, 0) 4 ('ALSA', 'TiMidity port 2', 0, 1, 0) 5 ('ALSA', 'TiMidity port 3', 0, 1, 0) open output for MIDI device 2: >>> device = 2 >>> latency = 0 >>> out = midi.Output(device, latency) set the channel 0 instrument to GM (General MIDI) steel drum: >>> instrument = STEEL_DRUM = 114 >>> channel = 0 >>> out.set_instrument(instrument, channel) play some notes: >>> MAX_VOL = 127 >>> MID_C = 60 >>> for i in range(12): ... out.note_on(MID_C + i, MAX_VOL, channel) ... sleep(0.5) ... out.note_off(MID_C + i, MAX_VOL, channel) You can also write MIDI messages directly (0x90 + n is "note on" for channel n): >>> out.write_short(0x90 + channel, MID_C, MAX_VOL) General Links MIDI and Music Synthesis http://www.midi.org/aboutmidi/tut_midimusicsynth.php Message Protocol http://www.midi.org/techspecs/midimessages.php GM Sound Set http://www.midi.org/techspecs/gm1sound.php Note Numbers: http://www.midimountain.com/midi/midi_note_numbers.html _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor