There is but it’s not my implementation, so I want to make sure JS works first.

Oh, hey. JS version works:

And by the looks of it, the b'stop' formatting should be correct, as I imagine it needs to receive command strings in the same way it sends strings.

Edit:

No joy with ORCA-C using the same environment (albeit, through WSL):

Edit2:

Successful testing of communication between Python on Windows and the WSL:

So it does seem that the problem lies in ORCA-C’s implementation. Good to know that I should otherwise be able to get to work on what I had in mind.

New to all of this, can’t seem to connect midi from Orca to Reaper output. I have loopmidi installed on w10, but not sure exactly what Im missing.

Absolutely loving Orca, thanks for your hard work on this @neauoire! Been looking at all the stuff you’re doing with Hundred Rabbits, and you even made me pick up a book on JavaScript :slight_smile:

Anyway! Was part 3 of your Orca workshop ever released? I only find parts 1 and 2 on YouTube

Hi folks!! discovered Orca two weeks ago and im in love with it!. I have a question, i want to use to sequence my op-z on the go, so tried Orca on my android phone, it just works flawlessly, but i dont know how to save my project or load it later, can it be done in web Orca?, if not, are you going to make a complete Android version of Orca? it would be fantastic!! thanks!

@neauoire, maybe this is related to some of the trouble others have had with write in other contexts, but while I can successfully issue commands like start and stop to JS-ORCA, I cannot seem to write. My command strings seem to pass intact between Python instances and Netstat instances (to include between Python and Netstat); my assumption has been that to the extent that Python’s b'stop' encoded output seems to be decoded properly by ORCA as stop, b'write:H;8;8' should be similarly decoded, but obviously there’s something I’m not understanding about the command’s formatting (very lost here, perhaps it needs to be somehow an array of strings and integers? Probably not, I’m sure). Stranger yet, what ORCA does do when I attempt to write is to highlight the next space over from the cursor.

Since I don’t need to escape any characters for proper encoding and decoding with Python and Netstat, I can’t imagine that’s necessary with ORCA; plus, attempting to escape any of the characters merely results in escaping the escapes (\\). The only other thing I can think of is specifying ascii encoding, but this should be intrinsic to bytes encoding in Python as I understand it. Anyway, I will try the listener.js script when I get the chance.


On an unrelated note, I did finally get a chance to tinker around with ORCA-C and Sunvox on my RPi3 and was quite impressed with it all. Everyone with the means (which is already almost everyone) should definitely give that a spin.

1 Like

@luxter New to all of this, can’t seem to connect midi from Orca to Reaper output. I have loopmidi installed on w10, but not sure exactly what Im missing.

Will need more information than that to help you out.

@mick Was part 3 of your Orca workshop ever released? I only find parts 1 and 2 on YouTube

Sadly no, for some reason the SD card that stored that final footage was corrupted when we got home after the workshop. We have the audio, but no video, and most of it is really hard to redo, so we put that on hold.

@Rollingpeople so tried Orca on my android phone, it just works flawlessly, but i dont know how to save my project or load it later, can it be done in web Orca?

The web version uses the same shortcuts for open/load, what happens when you ctrl+s to save and ctrl+o to open?

@RMBLRX obviously there’s something I’m not understanding about the command’s formatting (very lost here, perhaps it needs to be somehow an array of strings and integers? Probably not, I’m sure).

Orca’s UDP is an array of ASCII integers, it’s possible that if you try sending a UTF8 string, it gets warped at the : and ; characters? What does it say in the orca consol when you try to send write:H;8;8? If you build orca from source, you can add console.log(msg) on this line to see what orca is actually receiving via udp.

3 Likes

I have hardware running through my audio interface delivering MIDI and audio to Reaper, and installed loopMIDI but im not sure how to get loopmidi set up inside the daw

I’m sorry if I go in to too much detail here but. I’m just going to launch in to some general midi Orca tips and hope that it helps your situation.

If you’re using “LoopBe” to route midi to your DAW you need Orcas midi output to be set to “LoopBe” using [ctrl]+[.] (control period). To send midi to your DAW you will need to ‘bang’ a midi operator. A simple test would be like this:

D
:02CFF

This will send a C at octave 2 to Channel 1 with maximum velocity and note length.

Lastly, you’ll need the input on your DAW to be set to receive “LoopBe” in the midi settings. If you have an instrument set up to receive midi and play sound at channel 1 you should hear a repeating C note.

If you want to sync to Orca’s Clock that’s a few more steps. You need to have your DAW set to receive midi clock and then stop orca with [space] then start again with [ctrl]+[space].

Hope something in there is helpful.

If loopMIDI is running, it should show up in your taskbar. As far as my own experience goes, loopMIDI just shows up in ORCA, VCV Rack, and Bitwig, the same as any other MIDI device, but of course in a DAW (Bitwig, in my case) it should be set up as a MIDI controller if you expect to use it like one (wherever the preferences for doing so might appear in Reaper).

Seeing as how loopMIDI operates completely independent of ORCA or any DAW, it’s likely your problem resides with loopMIDI or Reaper, itself.

Well now I feel really dumb, because I hadn’t been using a version built from source, and while the version I had previously built a good while back (but hadn’t been using) exhibited the same behaviors, the latest version works as expected. The good news is that it seems like it should be as trivial as I had hoped to do this (convert command string to bytes and send it), and I’ve come up with some ideas in the process that I’m quite excited to try.

Thanks for your help! Hopefully I’ll have something to show for it in short order.

2 Likes

This is amazing. I love the sequencing showcased here so much.

2 Likes

We have moved the source code for the terminal version to SourceHut. We have updated the Hundred Rabbits Orca page to have a more complete description of the language, and I’ve moved the Orca Tutorial on the XXIIVV wiki. This will probably create a few broken links here and there, let me know if you find any. I hope you like the new documentation!

Have a nice day ^__^

16 Likes

First of all super nice work with the new and updated pages on Orca @neauoire.

I have found another feature that I really would love to see implemented in Orca. That would make it possible to use in cool ways with Max/MSP.

I was playing around with a leap motion controller yesterday. I wanted to make a visualization and display the hand gesture data in max/MSP. However prior experience with unsuccesful jitter visualizations made me think of alternative ways of displaying the hand visualization. So I use p5.js instead, and found that I could setup a websocket server via node and then use the jweb object in max to display the sketch.js file containing the visualizer and the hand gesture data. everything worked perfectly.

I had never worked with the jweb-object in Max before, and apparently it could both display websites and read files. So I thought: "Can I use it to display Orca inside Max!?

I started out with displaying the .exec of orca from the desktop version, however it seemed that I was unable to get udp and osc communication working. I don’t know why it doesnt work, but my guess is that the .exec files relies on other files to get the communication to work.

Then I tried porting the web version of orca to the jweb object, and it worked flawlessly however the input and output device for midi was set to “No input/output device”. In order to change these you would normally have to press “cmd/ctrl + . / ,”. However when pressing cmd/ctrl within max I cant interact with the jweb object.

Another issue is that I cant access Orca’s console from within jweb. This means that I will need to use the “$” operator to send commands to Orca, which is totally cool. However, I don’t recall that I would be able to use the console to change midi inputs and outputs. Is there a way to do that?

I would imagine that you would be able to write a command like “MIDIIN: [number]” & “MIDIOUT:[number]” the numbers would correspond to possible input/output devices. Do you think that would be possible to implement?

5 Likes

Oh! That is cool.

So cool in fact, that the first thing I did upon waking up, was to just on adding the missing commands for you.

So, web build v176 adds the ability to select IO for midi and udp while the app is running.

  • midi:1;2 Set Midi output device to #1 , and input device to #2 .
  • udp:1234;5678 Set UDP output port to 1234 , and input port to 5678 .
  • osc:1234 Set OSC output port to 1234 .

If you want to unset a midi device, use midi:-1;0 that will set output device to none.

Let me know how it works! Does the jweb-object have any output we could utilize for this? Enjoy :slight_smile:

7 Likes

Thank you so much @neauoire you are the best! looking forward to play around with the new build :slight_smile:

I have to be honest, I don’t now much about the jweb-object, but I will definatly keep you postet if I find some cool outputs that could be used with orca :wink:

I upgraded to the new desktop version of orca, and the commands work fine, super awesome that you can change the midi drivers on the fly ;). However, in regard to the jweb-object project, it still doesn’t work as you can see.


The jweb-object is using the web version of orca, and the new commands, unfortunately, doesn’t seem to work there as of yet.
I also tried the new commands with the web version of orca, and the newly added commands don’t seem to work here either.

I really appreciate that you have added the commands, I think it is so cool! we just need to get these new cool stuff working in the web version as well :slight_smile:

It works for me, my guess is that Max sees no devices with id1:input and id2:output.

1 Like

Ok! yea I tried with the console open and now it seems to work with the web version :slight_smile:
The jweb version still doesnt work though. I just think that it has something to do with how jweb works, I will have to investigate that further i guess :smile:

Ok, so I have done some more digging. The jweb object in Max uses CEF (chromium Embedded Framework) in order to display rendered webpages. https://docs.cycling74.com/max7/vignettes/jwebcommunication

So CEF is as far as I can tell, kind of like an electron.js app in a way… https://en.wikipedia.org/wiki/Chromium_Embedded_Framework

“(…) is an open-source software framework for embedding a Chromium web browser within another application. This enables developers to add web browsing functionality to their application, as well as the ability to use HTML, CSS, and JavaScript to create the application’s user interface (or just portions of it).”

I think that for some reason the midi, udp, osc stuff just doesnt work with the CEF framework for some odd reason.