Euclidean Pattern Generator 1.1 – OSC support

Pure Data OSC patch

Pure Data OSC test patch

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

Euclidean Pattern Generator v1.1

Euclidean Pattern Generator v1.1

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.

This entry was posted in Euclidean rhythms, Java, MIDI, OSC. Bookmark the permalink. Both comments and trackbacks are currently closed.


  1. jim
    Posted October 21, 2011 at 00:28 | Permalink

    this is awesome work. the updates are perfect. many thanks.

  2. Gary Vaughan
    Posted November 24, 2011 at 00:18 | Permalink

    looking forward to catching up with this after a few months break away from the studio ;)

  3. Tony
    Posted November 28, 2011 at 21:08 | Permalink

    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!

  4. Posted November 29, 2011 at 00:39 | Permalink

    @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.

  5. Tony
    Posted November 30, 2011 at 08:03 | Permalink

    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.

  6. Posted January 24, 2012 at 18:22 | Permalink

    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.

  7. Posted February 8, 2012 at 16:43 | Permalink

    @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.

  8. Nils Peters
    Posted February 16, 2012 at 20:14 | Permalink

    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!

  9. Nils Peters
    Posted February 20, 2012 at 10:50 | Permalink

    One more thing: An accent feature would be really wonderful!

  10. Posted February 20, 2012 at 10:52 | Permalink

    @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.