MIDI processing stuff I've been working on.

snowglobe
Posts: 356
Joined: Wed Nov 23, 2011 12:36 pm

MIDI processing stuff I've been working on.

Post by snowglobe »

YouTube video here.

Kind of like a combination of various Peer machines, including some KoDream Improv type functionality (although that might not be apparent at first glance).

(Anybody else around here into Python + PyQT?)
domtron
Posts: 94
Joined: Tue Nov 22, 2011 5:18 pm

Re: MIDI processing stuff I've been working on.

Post by domtron »

marvelous !

i'm not sure what i'm looking at,never seen that before (beside from buzz)....
User avatar
Reefer Sutherland
Posts: 96
Joined: Thu Nov 24, 2011 3:17 pm
Contact:

Re: MIDI processing stuff I've been working on.

Post by Reefer Sutherland »

Looks interesting..
Anything you're going to release? Would love to play with it :)
User avatar
Evelon
Posts: 147
Joined: Tue Nov 22, 2011 11:00 pm

Re: MIDI processing stuff I've been working on.

Post by Evelon »

Really cool stuff! Would love to try it out, if possible.

I can already hear Tinga running up the stairs.
User avatar
mantratronic
Posts: 296
Joined: Mon Nov 21, 2011 7:23 pm

Re: MIDI processing stuff I've been working on.

Post by mantratronic »

That setup is looking better and better, very nice filtering/generation, and that last audio recording sounds like an entire band. :ugeek: :D
User avatar
tinga
Posts: 526
Joined: Tue Nov 22, 2011 5:25 pm

Re: MIDI processing stuff I've been working on.

Post by tinga »

Simplification of musical gesture is probably one of the most interesting subject for computer music, and Snowglobe's stuff is very effective.
In Buzz, relativion, accumulator, arpeggiator, peerscale and peerchord are the machines to do that, and for the human connection, omg!
Human body is an electromagnetic transmitter, and also music is dance...
@snowglobe I've on my computer the first version of your program, but i can't find it, a link?
snowglobe
Posts: 356
Joined: Wed Nov 23, 2011 12:36 pm

Re: MIDI processing stuff I've been working on.

Post by snowglobe »

Thanks domtron and all for the comments.

@mantratronic: one-man-band capability was definitely a goal, and I was happy to see you mention the filtering options. I have put a lot of effort into those!

@ tinga: Are you looking for the old PyBuzz script? If so, I think this link should take you to the last version (which I haven't touched for about 7 months): https://sites.google.com/site/jumbleost ... ects=0&d=1

@ Evelon + Reefer: I'm glad you're interested to try this out, and I'd be 100% happy to share it, but before I bother to set up a download here are some things to know:
  • It's a python program, not an executable binary
    Requires Python 2.7 and these packages: PyQt4, Pygame
    It's alpha (at best), and will probably always be pretty math-nerdy / user unfriendly.
If someone successfully gets all of the dependencies installed and wants to try this out, then sure, I'll package it up and post a link (and then I'll be happy to explain how, for example something like [(-2, set([-4, 0, 2]), '?'), (0, 1, 1)] can come out sounding like a jazz ensemble).
User avatar
Reefer Sutherland
Posts: 96
Joined: Thu Nov 24, 2011 3:17 pm
Contact:

Re: MIDI processing stuff I've been working on.

Post by Reefer Sutherland »

Ok, I'll download and try...
snowglobe
Posts: 356
Joined: Wed Nov 23, 2011 12:36 pm

Re: MIDI processing stuff I've been working on.

Post by snowglobe »

Reefer Sutherland wrote:Ok, I'll download and try...
Crap, I should have mentioned that you should do the x86 versions of everything, not x64

Also, on one of my two machines the official Python Foundation 2.7 installation wouldn't work for some reason, so I ended up trying the ActiveState version, which worked fine.

Let me know how it goes.
User avatar
Reefer Sutherland
Posts: 96
Joined: Thu Nov 24, 2011 3:17 pm
Contact:

Re: MIDI processing stuff I've been working on.

Post by Reefer Sutherland »

snowglobe wrote:Let me know how it goes.
>>> _

What now? :)

Edit: Is there any help to be found on how to actually set this up?
PyGame was easy, but qt i don't even know where to start...

The readme isn't at all helpful, it just says type "configure.py", type "make", type "make install".
So.. I'm scratching my head here..
snowglobe
Posts: 356
Joined: Wed Nov 23, 2011 12:36 pm

Re: MIDI processing stuff I've been working on.

Post by snowglobe »

Reefer Sutherland wrote:qt i don't even know where to start...

The readme isn't at all helpful, it just says type "configure.py", type "make", type "make install".
There actually are binary installers for PyQt that will install the Qt stuff. That's the ticket, imo.
http://www.riverbankcomputing.co.uk/sof ... t/download
User avatar
Reefer Sutherland
Posts: 96
Joined: Thu Nov 24, 2011 3:17 pm
Contact:

Re: MIDI processing stuff I've been working on.

Post by Reefer Sutherland »

Ah..

Well, I think I have it all installed now. Python 2.7, Qt and PyGame.
Not sure how I check if things are working, but the installers did their job without complaints. :)
snowglobe
Posts: 356
Joined: Wed Nov 23, 2011 12:36 pm

Re: MIDI processing stuff I've been working on.

Post by snowglobe »

Reefer Sutherland wrote:Ah..

Well, I think I have it all installed now. Python 2.7, Qt and PyGame.
Not sure how I check if things are working, but the installers did their job without complaints. :)
Cool. Well, why don't you see if you can get this puppy to run, then.

midi matrix zip

unpack anywhere you like and double-click main.pyw (the first time you run it there will probably be a delay of a few seconds before you see the program window pop up).

Shoot me a PM if you run into trouble or have questions.
User avatar
Reefer Sutherland
Posts: 96
Joined: Thu Nov 24, 2011 3:17 pm
Contact:

Re: MIDI processing stuff I've been working on.

Post by Reefer Sutherland »

Can't test it atm. but it started up, all looks well...
*excited* :)
snowglobe
Posts: 356
Joined: Wed Nov 23, 2011 12:36 pm

Re: MIDI processing stuff I've been working on.

Post by snowglobe »

This is mainly for Reefer, but I thought others might be interested too.

Understanding the Sequencer / Improvisor

----------------------------
Add a Scale Rectifier widget if you want to work with something besides chromatic (link them via dropdown menu)
----------------------------
If using QWERTY input, triggers will not be received until mouse is moved outside of the specification list box
----------------------------
Each line in the list box is a "sequence specification"
Each spec / line has to be enclosed by brackets. []

Inside the brackets you can have as many sequences as you like, enclosed in parentheses and separated by commas [ (), (), ... () ]

Inside each sequence you have two additional sets of parentheses separated by a comma
[ ((),()), ((),()), ... ((),()) ]

This is because each sequence has two parts: a note spec and timing spec:
[ ((note-spec),(timing-spec)), ((note-spec),(timing-spec)), ... ((note-spec),(timing-spec))]
----------------------------
Timing-spec is (delay, duration, hold)

delay = how long to wait until playing sequence
duration = how many beats does the entire note-spec sequence last
hold = how many beats until next sequence in spec starts (or until entire spec retriggers from beginning, if on last item in spec)

Everything is in terms of whole or part of a "beat" length of time that is approximately half a second (i.e. 120 BPM). So,

(0, 1, 1) = sequence begins immediately, sequence lasts a beat, next sequence (or retrigger) after one beat.

(.25, 2, 3.75) = sequence starts after .25 beat delay, sequence lasts 2 beats, next sequence (or retrigger) starts after 3.75 beats

Note that you can have an overlap situation where a sequence will still be playing when the next one starts (or when the whole spec is retriggered from the beginning).

(0, 2.32, 1.6) = sequence begins immediately, sequence lasts 2.32 beats, next sequence (or retrigger) starts after 1.6 beats

You can randomize any or all of the parts of the timing spec by enclosing a list of possible values in brackets.

([0, .5], [.5, 1, 2, 3], [.5, 4.2, 100]) = delay is 0 or .5 beat, sequence lasts .5, 1, 2, or 3 beats, time to next sequence (or retrigger of entire spec from beginning) is .5, 4.2, or 100 beats
----------------------------
Specification of which notes will play in a sequence can be absolute, or in-scale-steps relative to trigger note

Consider the parts of this note-spec example: ( 0, 'c4', None, [-2, '?'], set([0, 'c3', 5]) )

0 = play the trigger note
'c4' = play a 4th octave c
None = play nothing (i.e. gap)
[-2, '?'] = play either the note in the scale that is two steps down from trigger note, or play some random note in the scale (+/- 12 steps away from trigger note)
set([0, 'c3', 5]) = play a chord

----------------------------
Double-click a line to edit the spec
Right click to add or delete specs
New specs always start out as [((-2, 2), (0, 1, 1))]
----------------------------
Sequencing stops depending upon when trigger key is released. The important element to consider here is the last number in the timing specs for each sequence (i.e., the 'hold')

Consider this specification
[(seq1, (delay, duration, 4)), (seq2, (delay, duration, 3.5)), (seq3, (delay, duration, 10000))]

seq1 will always play its entire 4-beat sequence once a trigger is received
seq2 will only play its 3.5 - beat sequence if trigger note is still down after 4 beats (hold duration of seq1)
seq3 will only play its 10000 - beat (!) sequence if trigger is still down after 7.5 beats (hold duration for seq1 and seq2 combined)
Last edited by snowglobe on Sat Mar 17, 2012 5:23 pm, edited 3 times in total.
snowglobe
Posts: 356
Joined: Wed Nov 23, 2011 12:36 pm

Re: MIDI processing stuff I've been working on.

Post by snowglobe »

Forgot to add that you can also do probability within randomization brackets.

note spec example
([None, None, 0, None]) = .75 chance of no note being played, .25 chance of trigger note being played

timing spec example
([0, 0, 0, 0, 0, 0, 1], [4, 4, 4, 4, 4, 4, 1], 4) = pretty likely that there will be no delay and sequence will last 4 beats, and definitely next sequence (or spec retrig, if this is the last sequence in the spec) will start after 4 beats (assuming trigger is still held down at that time, of course).
User avatar
magmavander
Posts: 688
Joined: Tue Nov 22, 2011 5:22 pm
Location: France
Contact:

Re: MIDI processing stuff I've been working on.

Post by magmavander »

Your download link to midi matrix zip doent work... :(
It takes me to the download page but nothing happens even if I click on the direct link on it.
snowglobe
Posts: 356
Joined: Wed Nov 23, 2011 12:36 pm

Re: MIDI processing stuff I've been working on.

Post by snowglobe »

magmavander wrote:Your download link to midi matrix zip doent work... :(
It takes me to the download page but nothing happens even if I click on the direct link on it.
Since the link apparently worked for reefer I think we have one of those internet mysteries on our hands. Maybe try:

https://sites.google.com/site/jumbleost ... do-rel.zip (deleting everything after the question mark)?

and if not that, then the base URL https://sites.google.com/site/jumbleostuff/bc/ and see if you can make any progress from there? (or maybe that's what you're saying you already tried ...)

p.s. I take it you already installed the necessary ingredients?
User avatar
mantratronic
Posts: 296
Joined: Mon Nov 21, 2011 7:23 pm

Re: MIDI processing stuff I've been working on.

Post by mantratronic »

i got it working...

:ugeek: this is awesome, very flexible, and i can see myself using this with ix split for added generatable madness :)
User avatar
Joachip
Posts: 352
Joined: Mon Nov 21, 2011 7:21 pm
Contact:

Re: MIDI processing stuff I've been working on.

Post by Joachip »

This thing rocks! Someone should write an install guide, because it takes a lot of inside knowledge to get up and running.

http://www.robotplanet.dk/f/buzzf/socia ... matrix.mp3 (the melody)
http://www.robotplanet.dk/f/buzzf/piano_thingie.mp3
Post Reply