Exemple #1
0
    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()
Exemple #2
0
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
Exemple #3
0
 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
Exemple #4
0
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)
Exemple #5
0
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)
Exemple #6
0
    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()
Exemple #7
0
    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()
Exemple #13
0
# 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 **"
Exemple #14
0
# 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
Exemple #15
0
"""
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)

#----------------------------------------------------------------------------
Exemple #16
0
    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)
Exemple #18
0
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)
Exemple #20
0
    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()
Exemple #21
0
# -- 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