Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # f is the frequency of the tone in Hertz,
- # fs is the sampling rate, and
- # T is the length of the tone in seconds.
- import scikits.audiolab
- import scipy
- import pygame
- import pygame.midi
- from pygame.locals import *
- pygame.mixer.pre_init(44100,-16,2,2048)
- pygame.init()
- pygame.midi.init()
- f = 440
- fs = 11025 #22050
- T = 0.1
- x = scipy.cos((2*scipy.pi*f/fs)*scipy.arange(fs*T))
- scikits.audiolab.play(x, fs)
- for i in range( pygame.midi.get_count() ):
- r = pygame.midi.get_device_info(i)
- (interf, name, input, output, opened) = r
- in_out = ""
- if input:
- in_out = "(input)"
- if output:
- in_out = "(output)"
- print ("%2i: interface :%s:, name :%s:, opened :%s: %s" % (i, interf, name, opened, in_out))
- mydevicenumber=raw_input('See list above. Please enter the number for your midi input device: ')
- print "you chose " + mydevicenumber + ''
- reserved_channel_0 = pygame.mixer.Channel(0)
- my_font = pygame.font.SysFont("Arial",104)
- pygame.fastevent.init()
- event_get = pygame.fastevent.get
- event_post = pygame.fastevent.post
- input_id = int(mydevicenumber)
- i = pygame.midi.Input( input_id )
- pygame.display.set_caption("midi to sine wave sound generator")
- screen = pygame.display.set_mode((800, 600), RESIZABLE, 32)
- print "starting"
- going = True
- while going:
- events = event_get()
- for e in events:
- if e.type in [QUIT]:
- going = False
- if i.poll():
- midi_events = i.read(10)
- #print "full midi_events " + str(midi_events)
- #print "my midi note is " + str(midi_events[0][0][1])
- if str(midi_events[0][0][2]) != "0":
- mymidinote = str(midi_events[0][0][1])
- mymidinumber = int(mymidinote)
- mymidinumber = mymidinumber + 0.0 #types matter here!
- #freq = 440*(2**((m-69)/12))
- f = 440*(2**((mymidinumber-69)/12))
- x = scipy.cos((2*scipy.pi*f/fs)*scipy.arange(fs*T))
- print "before"
- scikits.audiolab.play(x, fs)
- print "after"
- #print "on event"
- #print "freq = " + str(f)
- if str(midi_events[0][0][2]) == "0":
- mymidinote = "0"
- #print "off event"
- #convert them into pygame events.
- midi_evs = pygame.midi.midis2events(midi_events, i.device_id)
- for m_e in midi_evs:
- event_post( m_e )
- del i
- exit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement