This Blog
This blog was originally intended to be a journal about how to develop O_C apps. But I think I'm pretty much at the end of the line there. First of all, it doesn't seem like that's something that other people are really that interested in. I knew it would be a small audience, with the hobby of developing applications for a specific eurorack module buried under several nested layers of "niche." But second, I've pretty much covered the topic. Anybody that wants to write an app for O_C can get a pretty good start with the information here, and I don't have that much more to say about it.
On the other hand, the topic of the software that I'm producing is up one or two levels of "niche," and there's a relatively strong level of interest in it.
So, this blog will shift a bit toward my own O_C projects, of which there are many. I'll discuss code where it's appropriate or (mildly) interesting. And I might wind up doing more development tutorials if there are any requests, or I find a topic I've neglected.
Hemisphere
The first version of Hemisphere is in what I hope is its final beta release. If no more bugs are found, it'll be released with a version number on July 16, 2018. After this, I plan to merge any new O_C operating system updates into the Hemisphere release.
This release keeps Ornament and Crime apps, with the exception of Meta-Q. So it's basically O_C + Hemisphere and 13 applets. This configuration takes up all of the O_C's program storage, so the plan is to go into a stable release that won't change much over time.
Hemisphere Suite
This is my current project. For the multi-O_C crowd, this removes the O_C apps to make room for many applets and new full apps. This will be rapidly-changing system and will contain everything that I do. There will be some weird stuff in there, but hopefully pretty interesting.
At the moment, it includes a slew processor, a gated VCA, a port of an accent sequencer I wrote for Peaks called Palimpsest, a playable implementation of John Conway's Game of Life, and a dual Euclidean drummer called Annular Fusion. I'm also planning to update the Hemisphere framework with a master clock forwarding mode, so that both hemispheres can share a single clock source.
Documentation
This is important, and I can't neglect it. I have to document the applets' functions and keep the documentation somewhere. Right now, information is kind of fragmented between this blog, GitHub, MuffWiggler, and my website. I need to consolidate. So that's a thing, too.
Neural Network
The neural network full O_C app is also in active development, although right now it largely involves research. So more to come on this as it comes together.
Messing With My Case
I got this awesome Switchcraft flush-mount USB jack. When I get some time, I'm going tear my system down and install the jack and a button, so that I can program my O_C without it hanging out of the case. I'll post photos, at least!
Keep up the great work I love Hemisphere!!
ReplyDeleteThanks for trying it!
DeleteA blog post explaining how to write your own hemisphere app could be great addition! I have some ideas that I’d like to use in an upcoming project that would fit right in. Just read through the tutorials and I might give it a go tomorrow. Might be able to swing it with what I read so far! Great work, thanks!
ReplyDeleteI do plan to do that, but it's already documented pretty well. If you look at the HEM_Boilerplate.ino.txt file, there are instructions at the top, and then each of the required methods is documented, too. From there, it's mostly a matter of observing how I/O and graphics are performed in a few of the existing applets.
DeleteI just finished writing a master clock app for hemisphere. Allows to set BPM and one divider. Both CV controlled with a parameter to control the mod range. Just one flaw in it: if OC::CORE::ticks overflows, there will be a hickup.
DeleteIt's certainly manageable from reading your code! I'd be happy to share too.
And on the side: while testing I used this to control your sequencer apps. When the reset and clk arrive at the same time, your sequencer resets to step 2. I guess you have to switch the processing of these triggers around in your code?
Oh, thanks, good catch! I'll double-check the handling of those triggers.
Delete