Sunday, June 24, 2018

Introducing Hemisphere

People often ask about O_C whether it can run two apps at once. The logistics of how this would work--sharing the screen, negotiating the I/O, etc.--are mind-boggling, but it doesn't stop people from asking.

Hemisphere is a dual-channel Applet framework for Ornament and Crime. But it is not a way to use multiple native Ornament and Crime apps in one unit. Instead, Hemisphere applets are smaller modular building blocks. It will have features that are handy if you don't have them anywhere else, or need more. In a way, it's taking the Ornament and Crime hardware and running in a totally different direction, toward minimalist design. The vision is sort of somewhere between Ornament and Crime and Disting, a system that can do many things, but threads the ease-of-use needle with the benefit of O_C's footprint and screen.

The GitHub repo for Hemisphere is in a different place than the previous tutorials. If you're interested in checking out Hemisphere, see the video (at the bottom of the post), and then clone https://github.com/Chysn/O_C-Hemisphere.

Hemisphere development has consumed most of my free time this week, and will continue to do so for a while, as I build new applets. As I go, I'm finding that the framework needs something. Sometimes I totally rethink a design decision. But at some point, I'll have reached a point of near-quiescence. At this point, I'll start documenting the framework and describing the process of building Hemisphere applets.

Since Hemisphere has much to juggle, it's a more opinionated framework than the O_C application framework. But I tried to keep it very, very similar. I've added boilerplate code, too, which makes it terribly easy to get started.

More later, of course. For now, I plan to add a couple more applets, then I'm going to spend some time patching with them and looking for improvements.


Executive Summary (Or, tl;dw)

Hemisphere splits O_C in half. Each applet gets half the screen, two digital inputs, two CV inputs, two outputs, one encoder, and one encoder button. Applets are selected by pressing one of the Up/Down buttons and turning an encoder to flip through available Applets, and then pushing an Up/Down button again to lock the selection.

Because there will be a lot of applets, each one has a concise help screen, activated by holding down the left encoder button for a couple seconds. Go to the other hemisphere's help screen by long-pressing again. Exit help screens by long-pressing a third time. While in the help mode, the applets continue to function as normal.

Hemisphere offers a forwarding mode, which forwards CV1 and CV2 (the left hemisphere's CV inputs) to the right hemisphere. This avoids insane use of multiples or stacked cables for chaining Hemisphere's input. Activate forwarding by long-pressing the Down button.

32 comments:

  1. - Any reason this can't be used on a uO_c?
    - Is this an install that a novice can handle? E.g. those of us who don't have Github logins/projects
    - Will you continue to use sensible names for the applets, rather than the uber-hip defaults that mean nothing, e.g. "Harrington"? That's more of a request than a question, really....

    ReplyDelete
    Replies
    1. Hello, Unknown, and thanks for reading!

      (1) It should work fine on a uO_C. In fact, uO_C's layout makes the "left" and "right" hemisphere designations even more literal, due to the layout of the output jacks and the Up and Down buttons.

      (2) I guess there are varying degrees of "novice." Once Hemisphere has been brewed a little longer, I'll make a pre-compiled hex file available, and then you'd just need to follow instructions at http://ornament-and-cri.me/firmware/#method_a.

      (3) For applet names, I'll be as descriptive as I can be in the available ten characters.

      Delete
    2. May I sugest an app: a dual cv recorder, that would be awesome. And I dont know if its possible but a midi to cv app also, which would receive midi as trigger in and output pitch and gate. Many thanks for the hemisphere. Cheers.

      Delete
    3. CV recorder is a great idea. One of the quirks of O_C is that its input and output aren't really designed for 1:1 CV reproduction, meaning that what you play back can't be exactly what you record. But still, such a thing would be useful in many cases.

      I may explore MIDI at some point, via the Teensy's USB port. I'm extending my O_C's USB port to the rear of my case, so it's definitely something I'm interested in.

      Delete
  2. This is great! Already got it installed on my uO_c. I really like the direction you're going here. If I were to make a utility myself, it would probably be a AND/NAND/OR/NOR type applet

    ReplyDelete
    Replies
    1. I finished the ASDR and quantizer yesterday. There is logic coming soon; I'm just working on the grammar for developing a visual diagram. One logic applet will be traditional AND/XOR and the other will be a threshold logic neuron.

      Delete
    2. ADSR, Dual Quantizer and Dual Logic are in the repo now. The logic is cool because the logic type of each channel can be put under CV control, an idea which I totally stole from Plog.

      Delete
    3. Dual plog. Holy crap. This is awesome!

      Delete
  3. Thanks. I'm good if there's a hex file I can push to the module...it's the "recompile it in Github" part I'd have trouble with.

    Thanks for doing this. It really will make the module significantly more flexible.

    ReplyDelete
    Replies
    1. I've been resisting releasing a hex file because everything is still changing pretty fast. But watch this spot; I plan to post a URL on July 4th.

      Delete
    2. http://www.beigemaze.com/hemisphere.html

      Delete
  4. thanks so much for taking his project on!

    Getting some freezes in the ADSR mode. Using the ADSR on the left encoder. Seems to happen while tweaking the env settings. Once right before it froze the screen glitched out then froze.

    Audrino 1.8.1
    Teensy 1.35
    I do have my oc loading from a previous save state. I will reboot to default and report back

    ReplyDelete
    Replies
    1. In a recent version, I found a bug in which the EG segments tried to write below the screen boundary, which is a reliable way to crash O_C. It should be corrected now, but if it's still happening with today's version, see if you can come up with a procedure to reproduce it. I appreciate your help!

      Delete
    2. Update: I was able to reproduce the EG crash. I'll have a fix pushed out tomorrow. Thanks for pointing it out!

      Delete
  5. Right on! I’m glad to help! Thanks for pushing me to dip my toes in the github/ Arduino/Clone/compiler realm! Thanks for all the hard work. I have two O_c’s so this project Much excites.

    ReplyDelete
    Replies
    1. Whenever you get a chance to update the code, I'd be interested to get your opinion on the updated ADSR envelope editor. I'm experimenting with a sort of greyscale technique, so the selected EG segment should appear brighter than the other segments. On my O_C, this looks cleaner than the previous editor. But I'm concerned that its appearance might be dependent on the hardware. Thanks again!

      Delete
    2. alright. Messed around for about 45mins with the ADSR patched up and zero crashes! NICE! any plans on adding cv control over the ADSR? control over attack and release would be ace.

      As far as the editor; I have Hemisphere only installed on one of My o_c's at the moment. I feel as tho the screen on the unit with hemisphere installed isn't top notch. Its has green leds and maybe feels cheaper from the color alone. but any who its def easier to see which param I'm editing but getting the slightest of jitter/flicker on the env lines. not a big deal just what I'm seeing on my end.
      thanks for the super quick fix on the crash. keep it up man!

      Delete
    3. Yeah, the idea is that the unselected segments will sort of flicker lightly, and the selected segment should be nice and solid. The key is that you can tell which segment you're editing.

      You know, there's no reason not to add CV control to the attack and release segments. I have Beta 1 finalized, but I'll keep a feature request list. No point in letting the CV inputs go to waste!

      Delete
  6. The oscilloscope algorithm would be perfect for Hemisphere. I know it would be applicable rather to lfo cv not the audio, but anyway, it would be great to be able to switch the the scope when you need to realize what is going on, and then get back to other algorithm. Best!

    ReplyDelete
    Replies
    1. I like that idea. There will definitely be an oscilloscope applet in the full set. Probably not in the beta, because there's basically no space left :(

      Delete
  7. Wow nice work!

    The 'full set' you mentioned how many more original o_C apps will be removed do you figure?

    ReplyDelete
    Replies
    1. That's to be determined. I might even cut it down to leaving only Quantermain.

      Delete
    2. Interesting...so it sounds like you will be adding quite a few more applets then?

      What about people like myself who would like to keep the setup as it is with most of o_C plus your current group of applets.

      I guess based on what you posted earlier there is no more room left so if i want what you've done now i better grab beta1 before all the big changes take place?

      Delete
    3. I plan to maintain two versions. One will be slowly-changing, and will have the setup basically as it is now in Beta. The other will be Hemisphere Suite, which will have many applets and without most of the normal O_C apps. So you don't need to jump into anything, because the current setup isn't going away.

      Delete
  8. Great idea would be adding algorithm like scaled lfo, that I described once to Disting maker and it was implemented and further enhanced https://www.youtube.com/watch?v=NcWLVdAZ50M The main idea is the lfo oscillates between values of two input CVs. If CVs are for example coming from two sequencers and represent note pitch, then scaled lfo will be kind of arpeggio. Additional output could be quantized to selected notes / scale. Best!

    ReplyDelete
    Replies
    1. Do these two CV values represent a minimum and maximum?

      Delete
  9. Got this installed on both my o_Cs, love it. Very nicely done. Thanks for this!

    ReplyDelete
  10. Another addition to scaled lfo described above could be scaling external CV signal instead of internal lfo function. I think it would be very very useful for modulation purposes, when two CV sets the interesting range (for sweetspots) and another CV is kept within this range.

    ReplyDelete
  11. I'm updating the Hemisphere firmware once in few days (when updates is released).
    in the last few updates there is problem with the LFO inside Hemisphere (there is horizontal lines on the screen, only on the side of the LFO) and when I'm trying to open Quadraturia app the module is freezing.
    https://youtu.be/Wyv-tgZanPM

    ReplyDelete
    Replies
    1. Thanks for the info! The display issues are fixed with Beta 5 (hex file available July 17).

      I'm looking into the Quadraturia issue. I cannot reproduce it on my O_C, so I may have to depend on the input of other users. Hemisphere is a completely siloed app. It doesn't change code or use resources from any other app, so I don't yet have a good explanation for why that would happen. On YouTube, you said you tried it on five O_C modules. Are these all µO_Cs like the one in the video?

      Delete

Pitch Calculation and Output

"If pitches were horses, we'd all be eatin' steak." --Jayne Cobb And where have I been for almost two months? I was busy...