Page 1 of 2

MIDI processing stuff I've been working on.

Posted: Fri Mar 02, 2012 6:47 am
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?)

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

Posted: Fri Mar 02, 2012 7:40 am
by domtron
marvelous !

i'm not sure what i'm looking at,never seen that before (beside from buzz)....

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

Posted: Fri Mar 02, 2012 8:37 am
by Reefer Sutherland
Looks interesting..
Anything you're going to release? Would love to play with it :)

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

Posted: Fri Mar 02, 2012 8:54 am
by Evelon
Really cool stuff! Would love to try it out, if possible.

I can already hear Tinga running up the stairs.

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

Posted: Fri Mar 02, 2012 9:14 am
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

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

Posted: Fri Mar 02, 2012 1:33 pm
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?

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

Posted: Sat Mar 03, 2012 12:28 am
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).

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

Posted: Sat Mar 03, 2012 3:56 am
by Reefer Sutherland
Ok, I'll download and try...

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

Posted: Sat Mar 03, 2012 6:28 am
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.

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

Posted: Tue Mar 13, 2012 5:33 pm
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..

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

Posted: Tue Mar 13, 2012 8:43 pm
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

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

Posted: Tue Mar 13, 2012 11:53 pm
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. :)

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

Posted: Wed Mar 14, 2012 12:21 am
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.

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

Posted: Wed Mar 14, 2012 2:29 pm
by Reefer Sutherland
Can't test it atm. but it started up, all looks well...
*excited* :)

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

Posted: Fri Mar 16, 2012 7:07 pm
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)

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

Posted: Fri Mar 16, 2012 7:19 pm
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).

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

Posted: Mon Mar 19, 2012 4:13 pm
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.

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

Posted: Mon Mar 19, 2012 7:40 pm
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?

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

Posted: Mon Mar 19, 2012 8:40 pm
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 :)

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

Posted: Mon Mar 19, 2012 10:01 pm
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