This code is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. """ from meta import initCbox, start, connectPhysicalKeyboards def processMidiIn(eventLoop): eventList = cbox.JackIO.get_new_events(cboxMidiPortUid) if eventList: for (address, uninterestingStuff, event) in eventList: #we are only interested in the event, which is a list again. print (address, "event:", event, "playback:", cbox.Transport.status().playing) eventLoop.call_later(0.1, processMidiIn, eventLoop) scene, cbox, eventLoop = initCbox("test01", internalEventProcessor=False, commonMidiInput=False) cboxMidiPortUid = cbox.JackIO.create_midi_input("customInput") cbox.JackIO.set_appsink_for_midi_input(cboxMidiPortUid, True) #This sounds like a program wide sink, but it is needed for every port. cbox.JackIO.route_midi_input(cboxMidiPortUid, scene.uuid) eventLoop.call_later(0.1, processMidiIn, eventLoop) #100ms connectPhysicalKeyboards(port="customInput") start()
#! /usr/bin/env python3 # -*- coding: utf-8 -*- """ Copyright, Nils Hilbricht, Germany ( https://www.hilbricht.net ) This code is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. """ from meta import ly2cbox, cboxSetTrack, initCbox, start scene, cbox, eventLoop = initCbox("test01") #Generate Music music = "c'4 d' e' f'2 g' c''" cboxBlob, durationInTicks = ly2cbox(music) pattern = cbox.Document.get_song().pattern_from_blob(cboxBlob, durationInTicks) cboxSetTrack("someInstrument", durationInTicks, pattern) start()
scene, cbox, eventLoop = initCbox("test02") #Generate Music music = "c'4 d' e' f'" cboxBlob, durationInTicks = ly2cbox(music) #cboxSetTrack("someInstrument", durationInTicks, pattern) oneMeasureInTicks = D4 * 4 patternList = [ cbox.Document.get_song().pattern_from_blob(cboxBlob, durationInTicks), cbox.Document.get_song().pattern_from_blob(cboxBlob, durationInTicks), cbox.Document.get_song().pattern_from_blob(cboxBlob, durationInTicks), cbox.Document.get_song().pattern_from_blob(cboxBlob, durationInTicks), cbox.Document.get_song().pattern_from_blob(cboxBlob, durationInTicks), cbox.Document.get_song().pattern_from_blob(cboxBlob, durationInTicks), cbox.Document.get_song().pattern_from_blob(cboxBlob, durationInTicks), cbox.Document.get_song().pattern_from_blob(cboxBlob, durationInTicks), ] cboxSetTrack("metronome", oneMeasureInTicks, patternList) def userfunction(): D4 = 210 * 2**8 MEASURE = 4 * D4 cbox.Transport.stop() cbox.Document.get_song().update_playback() cbox.Transport.seek_ppqn(4 * MEASURE + 2 * D4 ) #4th measure in the middle cbox.Transport.play() start(userfunction=userfunction)
#Generate Music music = "c'4 d' e' f'" cboxBlob, durationInTicks = ly2cbox(music) #cboxSetTrack("someInstrument", durationInTicks, pattern) oneMeasureInTicks = D4 * 4 patternList = [ cbox.Document.get_song().pattern_from_blob(cboxBlob, durationInTicks), cbox.Document.get_song().pattern_from_blob(cboxBlob, durationInTicks), cbox.Document.get_song().pattern_from_blob(cboxBlob, durationInTicks), cbox.Document.get_song().pattern_from_blob(cboxBlob, durationInTicks), cbox.Document.get_song().pattern_from_blob(cboxBlob, durationInTicks), cbox.Document.get_song().pattern_from_blob(cboxBlob, durationInTicks), cbox.Document.get_song().pattern_from_blob(cboxBlob, durationInTicks), cbox.Document.get_song().pattern_from_blob(cboxBlob, durationInTicks), ] cboxSetTrack("metronome", oneMeasureInTicks, patternList) def userfunction(): D4 = 210 * 2**8 MEASURE = 4 * D4 cbox.Transport.stop() cbox.Document.get_song().update_playback() cbox.Transport.seek_ppqn(4 * MEASURE + 2 * D4) #4th measure in the middle cbox.Transport.play() start(userfunction=userfunction)