lifebox live generative music
Lifebox project have a new feature
: a generative MIDI music. Now, the Lifebox script generates a MIDI output based on real-time simulation data. Those MIDI signals
can be played through a synth or other musical software, allowing to create an immersive soundscape.
This code is only a preview demo release and must be improved.
import rtmidi # midi library
# midi thread functions
# midi chords
def majorChordGenerator():
startValue = random.randint(50,60)
return ([startValue,startValue+4,startValue+7])
def minorChordGenerator():
startValue = random.randint(50,60)
return ([startValue,startValue+3,startValue+7])
def augmentedChordGenerator():
startValue = random.randint(50,60)
return ([startValue,startValue+4,startValue+8])
def reducedChordGenerator():
startValue = random.randint(50,60)
return ([startValue,startValue+3,startValue+6])
# midi output function
def generativeSound(midiStop):
midiout = rtmidi.MidiOut()
available_ports = midiout.get_ports()
#print (available_ports)
#print (midiout.get_port_count())
midiout.open_port(1)
# nasty way to stop all sounds
for iter in range(0,10):
for i in range(50,70):
midiout.send_message([0x80,i,0])
while not midiStop:
chordType = random.randint(0,3)
if specie1_individuals > specie2_individuals:
chord = majorChordGenerator()
else:
chord = minorChordGenerator()
midiout.send_message([0x90,chord[0],30])
midiout.send_message([0x90,chord[1],30])
midiout.send_message([0x90,chord[2],30])
time.sleep(float(random.randint(3000,5000)/1000))
midiout.send_message([0x80,chord[0],0])
midiout.send_message([0x80,chord[1],0])
midiout.send_message([0x80,chord[2],0])
for iter in range(0,10):
for i in range(50,70):
midiout.send_message([0x80,i,0])
del midiout
Check out the Lifebox project repo for more information.