def run(self): pygame.midi.init() self.device_id = midi.get_default_input_id() if self.device_id == NO_DEVICE_FOUND: raise NoPianoDetectedException('Device not detected.') self.midiObject = midi.Input(self.device_id) pygame.init() self._resize_surface((WIDTH, HEIGHT)) clock = pygame.time.Clock() if DEBUG_TRACE: interface, name, is_input, is_output, is_open = midi.get_device_info(self.device_id) print('Device Interface: ', interface) print('Device Name: ', name) print('Device IsInput: ', is_input == 1) print('Device IsOutput: ', is_output == 1) print('Device Open: ', is_open == 1) self._game = GameModes.PressNext((WIDTH, HEIGHT)) while(True): clock.tick(MAX_FRAMES_PER_SECOND) self._event_handler() self.midiObject.close() midi.quit()
def midi_info(): """ midi is an instance of pygame.midi Returns a dictionary containing info about the systems MIDI devices. The dictionary contains: 'count' - number of devices. 'def_in' - default input. 'def_out' - default output. 'devices' - a list of device info. """ info = {} #Store info. info.keys().append('count') info['count'] = midi.get_count() info.keys().append('def_in') info['def_in'] = midi.get_default_input_id() info.keys().append('def_out') info['def_out'] = midi.get_default_output_id() devices = [] for i in range(0, midi.get_count()): devices.append(midi.get_device_info(i)) info.keys().append('devices') info['devices'] = devices return info
def __init__(self, output): midi.init() self._midi_active = False self.input_devices = self.get_input_devices() self.default_device_id = midi.get_default_input_id() self.controller = None self.midi_thread = None self.output = output
def _get_default_device(get_input): if get_input: device_id = midi.get_default_input_id() else: device_id = midi.get_default_output_id() if device_id < 0: raise IOError('no default port found') return _get_device(device_id)
def onRecord(self, e): """""" if self.recordButton.GetLabel() == "&Stop": self.recordButton.SetLabel("&Record") self.recordButton.Disable() self.going = False self.makeSong() else: if self.recordButton.GetLabel() == "&Record": self.recordButton.SetLabel("&Stop") midiIn = Input(midi.get_default_input_id()) self.processKey() self.write("Getting input from:") self.write(midi.get_device_info(midi.get_default_input_id())) event_get = pygame.fastevent.get event_post = pygame.fastevent.post self.going = True startTime = time.time() try: while self.going and (time.time() - startTime) <= 20: events = event_get() for e in events: if e.type in [QUIT]: self.going = False if midiIn.poll(): midiEvents = midiIn.read(10) # self.write( midiEvents) for m in midiEvents: if m[0][1] > 0 and m[0][2] > 0: self.write("Read note:" + str(self.notes[(m[0][1] + 3) % 12])) self.tune.append(m[0][1]) midiEvs = midi.midis2events(midiEvents, midiIn.device_id) for mE in midiEvs: # self.write( "mE = ", mE) event_post(mE) finally: del midiIn midi.quit()
def getMidi(self): midIn = m.Input(m.get_default_input_id()) while not midIn.poll() and self.running: if not m.get_init(): m.init() else: pass if not self.running: return event = midIn.read(1) mob = mObject(event[0][0][0] >> 4, event[0][0][1], event[0][0][2]) midIn.close() return mob
def main(): pygame.init() midi.init() default_input_device = midi.get_default_input_id() default_output_device = midi.get_default_output_id() if default_input_device < 0: print "No MIDI input device found" return melodies = [] keyboard = ChordBuilderKeyBoard(default_input_device, melodies, output_device_id=default_output_device) print "Initialized" keyboard.start()
def mainloop(self, inputdeviceid=None, outputdeviceid=None, ignoreerror=False, highervelocity=False): midi.init() try: inputdeviceid = inputdeviceid if inputdeviceid is not None else midi.get_default_input_id( ) print("MIDI Input:", midi.get_device_info(inputdeviceid)) self._midi_in = midi.Input(inputdeviceid) except midi.MidiException as e: if ignoreerror: self._midi_in = None print("No MIDI In!", e) else: raise e try: outputdeviceid = outputdeviceid if outputdeviceid is not None else midi.get_default_output_id( ) print("MIDI Output:", midi.get_device_info(outputdeviceid)) self._midi_out = midi.Output(outputdeviceid) self._midi_out.set_instrument(0) except (midi.MidiException, Exception) as e: if ignoreerror: print("No MIDI Out!", e) self._midi_out = None else: raise e if self._midi_in: while True: if self._midi_in.poll(): events = self._midi_in.read(10) for event in events: self._parse_midi_event(event, highervelocity=highervelocity) try: self._root.update() except: midi.quit() break else: self._root.mainloop()
def main(): pygame.init() midi.init() default_input_device = midi.get_default_input_id() default_output_device = midi.get_default_output_id() if default_input_device < 0: print "No MIDI input device found" return melodies = [] # Gary Jules - Mad World melody = [ Note.Gsharp, Note.C, Note.G, Note.Gsharp, Note.F, Note.G, Note.Dsharp, Note.D, Note.Gsharp, Note.C, Note.G, Note.Gsharp, Note.F, Note.G, Note.Gsharp, Note.Asharp ] melodies.append(PrintMelody(melody, name="Mad World")) # Happy birthday melody = [Note.D, Note.D, Note.E, Note.D, Note.G, Note.F] melodies.append(TerminalMelody(melody, name="Happy Birthday")) # Chord example melody = [ {Note.C, Note.E, Note.G}, # C Major Chord Note.D, {Note.F, Note.Aflat, Note.C}, # F Minor Chord Note.D ] melodies.append(PrintMelody(melody, name="Chord Example")) keyboard = KeyBoard(default_input_device, melodies, output_device_id=default_output_device) print "Initialized" keyboard.start()
def main(): pygame.init() midi.init() default_input_device = midi.get_default_input_id() default_output_device = midi.get_default_output_id() if default_input_device < 0: print "No MIDI input device found" return melodies = [] # Gary Jules - Mad World melody = [Note.Gsharp, Note.C, Note.G, Note.Gsharp, Note.F, Note.G, Note.Dsharp, Note.D, Note.Gsharp, Note.C, Note.G, Note.Gsharp, Note.F, Note.G, Note.Gsharp, Note.Asharp] melodies.append( PrintMelody(melody, name="Mad World") ) # Happy birthday melody = [Note.D, Note.D, Note.E, Note.D, Note.G, Note.F] melodies.append( TerminalMelody(melody, name="Happy Birthday") ) # Chord example melody = [ {Note.C, Note.E, Note.G}, # C Major Chord Note.D, {Note.F, Note.Aflat, Note.C}, # F Minor Chord Note.D ] melodies.append( PrintMelody(melody, name="Chord Example") ) keyboard = KeyBoard(default_input_device, melodies, output_device_id=default_output_device) print "Initialized" keyboard.start()
import pyaudio import numpy as np from math import pi, sin from pygame import midi from itertools import count midi.init() mi=midi.Input(device_id=midi.get_default_input_id()) st=pyaudio.PyAudio().open(44100,1,pyaudio.paInt16,output=True,frames_per_buffer=256) try: nd={} while True: if nd:st.write(np.int16([sum([int(next(osc)*32767) for _,osc in nd.items()]) for _ in range(256)]).tobytes()) if mi.poll(): for(s,n,v,_),_ in mi.read(16): if s==0x80 and n in nd:del nd[n] elif s==0x90 and n not in nd:nd[n]=(sin(c)*v*0.1/127 for c in count(0,(2*pi*midi.midi_to_frequency(n))/44100)) except KeyboardInterrupt as err: mi.close() st.close()
# EE4163 at the NYU Tandon School of Engineering. Please give credit if you wish # # to reproduce this code. # # # # Be sure to read README.md for more information on these scripts. # # # ################################################################################### # Import the PyGame package, with the MIDI functionality specifically from pygame import midi # To use MIDI functionality, we need to first initialize MIDI midi.init() # This prints the default device ids that we are outputting to / taking input from print "Output ID", midi.get_default_output_id() print "Input ID", midi.get_default_input_id() # List the MIDI devices that can be used for i in range(0, midi.get_count()): print i, midi.get_device_info(i) # Here, you must check what the device # for your MIDI controller is # You will not be guaranteed that the MIDI controller you want to use is the default # Start the input stream input = midi.Input(midi.get_default_input_id()) # Here's an example of setting the input device to something other than the default # input = midi.Input(3) print "** Ready to play **"
# This script uses pygame.midi, for more info go to: # http://www.pygame.org/docs/ref/midi.html import pygame.midi as midi import pygame # Initiate pygame pygame.init() pygame.fastevent.init() midi.init() # Print default MIDI device print("Default input device is: ") print(midi.get_default_input_id()) # Print device info for all MIDI devices for i in range(midi.get_count()): print midi.get_device_info(i) # Prompt user for input device ipDev = input("Choose input device:") x = midi.Input(ipDev, 0) x.read(1) # Prompt user for output device
""" N_SCENE = 9 channel_name_tab = {} for i in range(N_SCENE) : channel_name_tab[16+i] = 'knob_'+str(i) for i in range(N_SCENE) : channel_name_tab[i] = 'slider_'+str(i) for i in range(N_SCENE) : channel_name_tab[32+i] = 's_button_'+str(i) for i in range(N_SCENE) : channel_name_tab[48+i] = 'm_button_'+str(i) for i in range(N_SCENE) : channel_name_tab[64+i] = 'r_button_'+str(i) print channel_name_tab """ #---------------------------------------------------------------------------- # midi init midi.init() print "Devices ID : "+ str(midi.get_default_input_id()) print "Devices Info : "+ str(midi.get_device_info(midi.get_default_input_id())) if (midi.get_default_input_id() == -1): print("exit") exit(-1) INDEX_STATUS = 0 INDEX_CHANNEL = 1 INDEX_VALUE = 2 buffer_size = 200 controller = midi.Input(midi.get_default_input_id(),buffer_size) # In case there are more than MIDI controller #controller = midi.Input(3 ,buffer_size) #----------------------------------------------------------------------------
def __init__(self): super().__init__(eternal=True) self.keys = [char for char in 'zxcvbnmasdfghjklqwertyuio1234567890'] # printvar(scalechanger.pattern) self.octave_offset = 0 self.note_offset = 0 self.note_names = ('C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B', 'C') self.virtual_keyboard = Button( parent=camera.ui, model='quad', origin=(-.5,-.5), position=window.bottom_left, scale=(1*camera.aspect_ratio, .02), color=color.black, pressed_scale=1, pressed_color=color.black, highlight_color=color.black ) self.virtual_keyboard.highlight = Entity(parent=self.virtual_keyboard, model='quad', origin=(-.25,-.5), scale_x=1/79, z=-1, color=color.azure) def virtual_keyboard_update(): self.virtual_keyboard.highlight.enabled = self.virtual_keyboard.hovered if self.virtual_keyboard.hovered: self.virtual_keyboard.highlight.x = int(mouse.point[0] * 79) / 79 self.virtual_keyboard.update = virtual_keyboard_update self.notes_text = Text( text=''.join(self.note_names) * 5, font='VeraMono.ttf', position=window.bottom_left + Vec2(0,.005), origin=(-.5,-.5), scale=.5*.75, z=-1, add_to_scene_entities=True ) def on_click(): note_to_play = int(mouse.point[0] * 79) text = self.notes_text.text.split()[note_to_play] note_to_play = (int(text[-1:]) * len(scale_changer.pattern)) + self.note_names.index(text[:-1]) self.play_note(note_to_play) self.virtual_keyboard.on_click = on_click self.update_note_names() self.parent = camera.ui self.scale *= .025 self.position = (-.5 * camera.aspect_ratio, -.5) self.midi_input = None if use_midi: midi.init() if midi.get_default_input_id() != -1: self.midi_input = midi.Input(midi.get_default_input_id()) scale_changer.pattern = (1,)*12 self.fallback_ns = NoteSection(enabled=False, name='fallback_ns') scene.entities.remove(self.fallback_ns)
################################################################################### # # # This script is written by Wells Lucas Santo, for the final project component of # # EE4163 at the NYU Tandon School of Engineering. Please give credit if you wish # # to reproduce this code. # # # # Be sure to read README.md for more information on these scripts. # # # ################################################################################### from pygame import midi midi.init() input = midi.Input(midi.get_default_input_id()) # Here, I am specifying two values that correspond to specific MIDI events # that my particular MIDI keyboard uses. You may have different values for # your own MIDI controller. KEYDOWN = 144 KEYUP = 128 print '** Ready to play **' # We want to keep this running for the entire program while True: # Detect MIDI input if input.poll(): # Save concurrent MIDI events as a list eventslist = input.read(1000)
windowSurfaceObj = gameapi.display.set_mode((640, 480)) gameapi.display.set_caption('set_caption') redColor = gameapi.Color(255,0,0) greenColor = gameapi.Color(0,255,0) blueColor = gameapi.Color(0,0,255) mousex, mousey = 0,0 fontObj = gameapi.font.Font('freesansbold.ttf', 32) mouseposMsg = "" keypressMsg = "asdfasdfasdf" piano.init() piano_id = piano.get_default_input_id() print (piano_id) print (piano.get_count()) print(piano.get_device_info(3)) midiInput = piano.Input(3) gameapi.fastevent.init() while True: windowSurfaceObj.fill(greenColor) randomColor = gameapi.Color(random.randint(0,255),random.randint(0,255),random.randint(0,255)) gameapi.draw.polygon(windowSurfaceObj, redColor, ((0,0), (10, 10), (10,0))) gameapi.draw.rect(windowSurfaceObj, redColor, (20, 40, 10, 10))
for i in range(NOSTREAMS)] # Circular buffer of arrays y = [np.zeros(blockSize) for i in range(NOSTREAMS)] x = [np.zeros(blockSize) for i in range(NOSTREAMS)] # Circular buffer of ints pitch = [0 for i in range(NOSTREAMS)] accesskey = 0 ####################################### # Initialize input detection for MIDI # ####################################### midi.init() INPUTNO = midi.get_default_input_id() input = midi.Input(INPUTNO) print '*******************' print '** Ready to play **' print '*******************' while True: # For ALL streams, set current input to 0, since nothing is being played # at the current moment (until a key is pressed) for n in range(NOSTREAMS): x[n][0] = 0.0 if input.poll(): eventslist = input.read(1000)
def repaint(self, event): dc = wx.PaintDC(self) dc.DrawBitmap(self.bg_img, 0, -39) if __name__ == "__main__": pid = win32api.GetCurrentProcessId() handle = win32api.OpenProcess(win32con.PROCESS_ALL_ACCESS, True, pid) win32process.SetPriorityClass(handle, win32process.REALTIME_PRIORITY_CLASS) midi.init() all_devices = [midi.get_device_info(i) for i in range(midi.get_count())] input_devices = [(i, d[1]) for (i, d) in enumerate(all_devices) if d[2] == 1] input_names = [name for (i, name) in input_devices] default_device = midi.get_default_input_id() try: default_selection = [i for (i, name) in input_devices ].index(default_device) except ValueError: default_selection = None midi_thread = midiqote(input_devices) midi_thread.start() midi_thread.set_device(default_device) if len(input_names) == 0: app = wx.App() wx.MessageBox("Fatal Bard Error:\nNo MIDI input devices found.", "Midiqo'te", wx.OK | wx.ICON_ERROR) app.MainLoop()
# -- HELPER FUNCTIONS -- def get_sin_oscillator(freq=55, amp=1, sample_rate=SAMPLE_RATE): increment = (2 * math.pi * freq) / sample_rate return (math.sin(v) * amp * NOTE_AMP \ for v in itertools.count(start=0, step=increment)) def get_samples(notes_dict, num_samples=BUFFER_SIZE): return [sum([int(next(osc) * 32767) \ for _, osc in notes_dict.items()]) \ for _ in range(num_samples)] # -- INITIALIZION -- midi.init() default_id = midi.get_default_input_id() midi_input = midi.Input(device_id=default_id) stream = pyaudio.PyAudio().open(rate=SAMPLE_RATE, channels=1, format=pyaudio.paInt16, output=True, frames_per_buffer=BUFFER_SIZE) # -- RUN THE SYNTH -- try: print("Starting...") notes_dict = {} while True: if notes_dict: # Play the notes