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.