You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.1 KiB
48 lines
1.1 KiB
3 years ago
|
import os
|
||
|
import sys
|
||
|
import struct
|
||
|
import time
|
||
|
import unittest
|
||
|
|
||
|
sys.path = ["./py"] + sys.path
|
||
|
|
||
|
import cbox
|
||
|
|
||
|
global Document
|
||
|
global Transport
|
||
|
Document = cbox.Document
|
||
|
Transport = cbox.Transport
|
||
|
|
||
|
song = Document.get_song()
|
||
|
|
||
|
# Delete all the tracks and patterns
|
||
|
song.clear()
|
||
|
|
||
|
# Create a binary blob that contains the MIDI events
|
||
|
pblob = bytes()
|
||
|
for noteindex in range(20):
|
||
|
# note on
|
||
|
pblob += cbox.Pattern.serialize_event(noteindex * 12, 0x90, 36+noteindex*3, 127)
|
||
|
# note off
|
||
|
pblob += cbox.Pattern.serialize_event(noteindex * 12 + 11, 0x90, 36+noteindex*3, 0)
|
||
|
|
||
|
# This will be the length of the pattern (in pulses). It should be large enough
|
||
|
# to fit all the events
|
||
|
pattern_len = 10 * 24 * 2
|
||
|
|
||
|
# Create a new pattern object using events from the blob
|
||
|
pattern = song.pattern_from_blob(pblob, pattern_len)
|
||
|
|
||
|
retrig = 10
|
||
|
i = 0
|
||
|
while i < 50:
|
||
|
i += 1
|
||
|
retrig -= 1
|
||
|
if retrig <= 0:
|
||
|
print ("Triggering adhoc pattern with ID 1")
|
||
|
Document.get_scene().play_pattern(pattern, 240, 0)
|
||
|
retrig = 5
|
||
|
# Query JACK ports, new USB devices etc.
|
||
|
cbox.call_on_idle()
|
||
|
time.sleep(0.1)
|