Summer is at it’s end and it’s time to do some programming again. The Euclidean rhythms application I made earlier this year still has a lot of potential for new functionality, so here is the new version 1.1.
The main new feature in this version is support for Open Sound Control (OSC). After the last version a great offer came from programmer Michael Heuer to collaborate and add OSC support to the application. So this part of the program is very much his work. You can view more of his projects on GitHub.
The application
As usual here are some download links for the app and the source files. Note that the application is now released under the GPL v3 license. If you’re a developer you might find it easiest to visit the GitHub repository.
- Download Java JAR file.
- Download Mac OS X APP file.
- Download Java source files (Eclipse project), JAR and APP, all in one ZIP file.
- GitHub repository for the Euclidean Pattern Generator.
The OSC implementation
All OSC messages are sent to ‘localhost’ on a port number you can specify yourself. In the top part of the application I added a text input labelled ‘OSC Port’. Here you can enter the port number of the receiving OSC server you want to send the OSC messages to.
Because there is a choice now between MIDI and OSC I added checkboxes ‘Send OSC’ and ‘Send MIDI’. Only when these are checked OSC and / or MIDI messages will actually be sent.
The receiving OSC application is able to identify which pattern sent the message if an address for the pattern is entered. In the pattern’s MIDI / OSC Settings panel there is a new text input field labelled ‘OSC Address’. This field is automatically filled with a default address ‘/eu/patternX’ where ‘X’ is a number that is auto-increased with each new created pattern. Of course you can use your own preferred address naming scheme as well.
Here is a video that demonstrates sending OSC messages from the application to a Pure Data patch.
Other new features
Next to the Open Sound Control support there are a number of other new features, some of which were requested by users in comments on the previous version.
- Step duration (quantization) from 4 beats (one 4/4 measure) to 1/8 beat (1/32 note).
- Tempo maximum increased to 300 BPM.
- Pattern length up to 64 steps. The pattern grows in size to accommodate the number of step circles.
- Patterns can be named. New text input Pattern name in the pattern’s Other Settings panel. Whatever is typed here appears under the pattern graphic. When there are a lot of patterns in a project it’s easy to lose track of which pattern does what, so now you can name them ‘kick’, ‘snare’ etc.
- ‘All Notes Off’ button to kill hanging notes. This sends an ‘All Notes Off’ MIDI Channel Mode Message to each channel. All Notes Off is actually MIDI CC #123 with value 0 (see the MIDI specification).
- New patterns start with velocity 10 (handy in live situations where you don’t want a new pattern to come in at full volume).
- Preferences: Several settings are automatically stored and recalled the next time you open the application.
- Window size and position.
- MIDI enabled and MIDI Out port.
- OSC enabled and OSC port number.
- Last used directory to open or save a project.
And lastly, not really a new feature, but ‘behind the scenes’ the user interface now uses SwiXML, a layout engine that uses XML files to define an interface built with Java Swing components. This makes the interface much more flexible and easier to maintain for future changes.
Next version
In the next version I’ll add MIDI input and I hope it will be possible to get the app to synchronize to external MIDI clock. That would be cool.
And I’d like to add triplets to the quantization options. For even more unusual polyrhythms.
I just happened upon this page, this generator is AWESOME! I see a huge possibility for something like this to be used in a rock / pop setting, with the ability to assign different patterns to the outputs of drum samplers such as EZDrummer, Addictive Drums, Steven Slate. Fantastic work, I hope it continues to get some occasional attention. Take care and be well!
Just came across this – VERY cool. Bravo Mr. Wouter.
Was curious if you had an updated version with MIDI input and the ability to sync to an external MIDI clock. Really enjoying this so far, but the fun is yet to begin!
Hey,
great Software.. really appreciate it!
But there’s a bug it seems.. the app does not quit.. apple+Q does not work.
I always have to force it to quit.. but anyway.. that’s a nitpick..
best and keep it up
F.
Great device, thanks for all your work.
Any update now re: midi clock?
[…] Euclidean Pattern Generator in Java with OSC support composing , euclidean , M4L , Max for Live , patches , patterns , plugins , polyrhythms , production , rhythms , sequencing , VST […]
This is awesome! Thanks for source!
Hey Wouter,
Haha. Having some great late night fun with this.
Great work. thumbs up.
If i might dare to make one little suggestion:
I´d like to have the default patternb to be created with no notes
in it. Since you´ll have a note on the “one” anyways most of the time,
the next pattern does not need another note on the “one”.
Catch my drift?
Maybe make it an option for new patterns…
Thanks and Cheers,
Brian.
Very cool stuff. I’ve been playing around in this area myself lately. Mostly just coding in Node.js and pumping midi to Garage Band. Hopefully this’ll lead to some sort of UI as well.
In the meantime, I couldn’t find a JavaScript euclidean pattern generator out there so I wrote my own:
https://github.com/jblashill/euclideanPatterns.js
It may be of use to someone..
[…] one that’s really fun to play with is Euclidean Pattern Generator, which is very easy to use. Like the others, it can also be used in conjunction with many other […]
Hi, this app looks great and has really inspired me to try it out. Unfortunately I can’t seem to get it to work for me. The IAC bus is not showing up. Can anybody help me out? Also I am have to force quit the program.
I’m on a iMac running Ableton 8.2.1 on Snow Leopard.
Nice program, thumbs up for idea.
I played around a bit and noticed that you could get fantastic live percussion feeling while manually sequencing actual Euclidean Rhythm settings.
Could you think about adding OSC control for rhythm parameters?
Will sure bring whole thing on another level…
Keep up good work.
thank you for developing such a great application!
Thank you very much for this software, this is the best implementation of the euclidean stuff. I have made an upload button (old version), now i am able to upload pattern setting to the machinedrum via sysex :) really beta-state/testing but it is working! Send me an e-mail if you would like to test/integrate.
@Nils: Yes, accents, great idea. Hadn’t thought of it, but that shouldn’t be too hard. Another thing for the next update.
B.T.W. I have been too busy with work and freelance projects. That’s why there haven’t been any updates. But this isn’t a forgotten project. I hope to continue with it soon.
One more thing: An accent feature would be really wonderful!
This is an excellent program, and i had hours of fun with it! It would be great to see this program evolve into something like a softsequencer or even arpeggiator thing. The timing issues i have are the only thing that stops me from using it more.
Again, thanks for that great program!
@Joel: Thanks! You can already choose the note a pattern sends; with the MIDI settings slider. The pitch slider sets the note number. It’s 60 (or C3) by default, but spans the full 128 MIDI notes.
First of all thank you so much for this tool, it’s very usefull to search drums line.
Even if it’s not clock sync, just move the note after recording.
One question, it would be great to choose which note to send to the sequencer over the midi bus, not only C3, if it’s possible.
Kind regards.
Dear Wouter, regarding the jitter, probably same as anybody else might hear or experience it, I use here XP with Java SE Runtime Environment (build 1.6.0_18-b07). I experienced also in other java midi applications the midi timing is not really good at all, here my other example: MidiSwing. On the other hand if you know ANY java midi application with a solid timing, I would like to test it also, just to know that it can be done also in a different way. Anyway to hear the jitter you need to know other systems with better timing, so you will FEEL the difference immediately.
@Tony: Is the drift or jitter in the clock very noticeable for you? I can’t really hear it when I listen.
Anyway, MIDI in and MIDI clock sync is coming soon.
Midi clock sync for the next feature sounds great. If not, I would also like a “render as midi file” feature, e.g. for a duration of 20 minutes. This file we could then import into the daw, and it would be perfectly in sync there. Currently, or in the version 1.0 I should write, if you play the java software and record it in your daw, there are two problems:
1. the timing of this java software is not stable enough, there is jitter…
2. it is almost impossible to record in sync to the daw’s measures.
So the result is not sooo convincing, still cool, but could be even cooler! Thanks!
looking forward to catching up with this after a few months break away from the studio ;)
this is awesome work. the updates are perfect. many thanks.