Ejemplo n.º 1
0
def test_grouping():

    midi = Midi(500)

    n0 = NoteOnEvent(0,  0, 0)
    n1 = NoteOnEvent(1, 10, 0)
    n2 = NoteOnEvent(1, 20, 0)
    n3 = NoteOnEvent(2, 30, 0)
    n4 = NoteOnEvent(2, 30, 0)

    midi.append(n0, 510)
    midi.append(n1, 400)
    midi.append(n2, 10)
    midi.append(n3, 0)
    midi.append(n4, 40)
    midi.append(n0, 510)
    midi.append(n0, 400)
    midi.append(n3, 10)
    midi.append(n2, 0)
    midi.append(n4, 40)

    midi.group()

    print
    for t in midi.timedEventsList:
        print t
        print t.sample(44100, 500, 60)

    # midi.quantize(fraction = 4)

    print

    midi.group()

    print
    for t in midi.timedEventsList:
        print t
        print t.sample(44100, 500, 60)
        
    comp = Composer(order = 2)
 
    comp.learnFromMidi(midi)

    print

    print comp.marcovChains[0]

    print

    print comp.marcovChains[1]
 

    
    """
Ejemplo n.º 2
0
class ScreenEventHandler(BaseEventHandler):
    def __init__(self, event_dispatcher):
        screen_event_types = [(custom_event_types.TilingRefresh, self.handle_tiling_refresh)]
        BaseEventHandler.__init__(self, event_dispatcher, screen_event_types)

        self.composer = Composer()
        self.get_unmanaged_screens()

    def handle_tiling_refresh(self, event):
        main_display = self.event_dispatcher.display
        self.composer.compose_windows(main_display.screen().root)

    def get_unmanaged_screens(self):
        # Get all active screens.
        for screen_id in xrange(self.event_dispatcher.display.screen_count()):
            if self.event_dispatcher.redirect_screen_events(screen_id):
                self.event_dispatcher.screens.append(screen_id)
Ejemplo n.º 3
0
def test_readFile():
    
    comp = Composer(order = 3)   

    midi_file_folder = "../midifiles/classical_piano/c_maj/format0"
    
    paths = [os.path.join(midi_file_folder, f) for f in os.listdir(midi_file_folder)]
    paths = paths[:3]

    for path in paths: 
        midi = midi.readFile(path)
        # midi.quantize(32)

        print "Learning (" + path + ") ..."
        comp.learnFromMidi(midi)

    # print comp.marcovChains[1]

    midi = comp.getMidi(1, 1000)

    for e in midi.timedEventsList:
        print e

    samplerate = 44100
    bpm = 120
    numSamples = 60 * 44100
    out = []
    s = CSynth(samplerate) 

    it = iter(midi.timedEventsList)

    currentSample = 0
    # sample the last events was send to the synth at
    lastEventsSample = 0

    print "Rendering..."
    while currentSample < numSamples:
        try:
            nextEvents = it.next()
            
            # calculate samples between the two events
            nextEventsSample = nextEvents.sample(samplerate, midi.unitsPerBeat, bpm)

            sampleDiff = nextEventsSample - lastEventsSample
            currentSample += sampleDiff

            while sampleDiff > 0:
                if sampleDiff < BUFFER_SIZE:
                    out.extend(s.getSamplesBuffered(sampleDiff))
                    sampleDiff = 0
                else:
                    out.extend(s.getSamplesBuffered(min(sampleDiff, BUFFER_SIZE)))
                    sampleDiff -= BUFFER_SIZE


            for event in nextEvents.events:
                if event.type == Messages.NOTE_ON:
                    s.noteOn(event.note)
                if event.type == Messages.NOTE_OFF:
                    s.noteOff(event.note)

            lastEventsSample = nextEventsSample
        except StopIteration:
            break

    # render rest
    while currentSample < numSamples:
        if numSamples - currentSample > BUFFER_SIZE:
            out.extend(s.getSamplesBuffered(BUFFER_SIZE))
            currentSample += BUFFER_SIZE
        elif numSamples - currentSample > 0:
            out.extend(s.getSamplesBuffered(numSamples - currentSample))
            currentSample = numSamples
        else:
            break



    print "Writing to file..."
    inout.writeMono("/tmp/asdf_python.wav", out, 44100)
Ejemplo n.º 4
0
    def __init__(self, event_dispatcher):
        screen_event_types = [(custom_event_types.TilingRefresh, self.handle_tiling_refresh)]
        BaseEventHandler.__init__(self, event_dispatcher, screen_event_types)

        self.composer = Composer()
        self.get_unmanaged_screens()