• cfry

    @oid Allright, I will try to do some safety net to make sure connections are sane. That should do it. Thank you so much for your cool patch I will continue working on understanding it! ;)

    posted in technical issues read more
  • cfry

    @oid thanks for the update. Its really cool but I got a lot of errors from Pd not finding a matching send/receive and that was sort of expected, but it also only works if you enable disable connections in a specific way. Try my version with the synth to see what I mean:

    oid-pb1-synth.pd

    I think Pd disables the r~/s~ if it accidentally becomes duplicates of the s~.
    ...why can not Pd have a single send and receive object that accepts both multiple sends and receives at the same time... but I am just guessing what the problem may be.

    EDIT: Would it make sense to mix the dynamic patch approach with using cyclones matrix~ for signal domain and vanilla s/r for control domain?

    posted in technical issues read more
  • cfry

    @oid said:

    No problem with s~ and r~, just add them to the routes and pass the list from the [text] foreward so we can set the first and third items of the [list store] as well, something like this but without the error in the message like I did, setting the wrong index.
    sr.png
    And you can add in throw~ and catch~ if they suit a task better.

    Sorry but I can not figure out where to put this :/ The pd.pd abstraction looks slightly different. It looks like you have merged what was previously two paths with parallel [route] objects.

    EDIT: I managed to set up some logic to make the controller ccs work with this setup. Seem promising!

    posted in technical issues read more
  • cfry

    @whale-av I looked at [matrix] but I couldn't figure out how to use all the eggs(!) and eyes(!) etc. I would assume you use the same principles in [matrix~] ( or [mtx_*~] ) Could one use [matrix~] with control values too or should one then use two parallell matrixes?

    Do you mind giving me an example on how to set this up? Re-route some objects in control and signal domain from input to output?

    Are @oid dynamic object solution combinable with this approach? I could try both anyway. Is either one less mean on the cpu? If possible I would like to put the code on a raspberry pi later on.

    The controller can do a dump of the current physical patching and knob values but it is of course great to be able to save multiple presets.

    thank you for your input this is so cool.

    posted in technical issues read more
  • cfry

    Amazing, thank you so much. Indeed it was better to do this with dynamic patching. It works really good.

    I made a version with a synth just to try it out:

    pb-synth.pd

    -The original software can't use stackable cables but I think it can be possible on the controller end. Will find out.

    -To me it seems like when you init the patching for the text object r and s should switch places. r works as s and s works as r at the moment. Maybe [route s r] or [list store r 0 s 0 0] should be adjusted but I don't get the patch fully yet so I do not want to randomly change things. Working on it though.

    -Some of the patch points on the controller are "audio", simulating an audio connection. Can this be done with dynamic patching too? For example using [s~ ] [r~ ] or does it have to be another solution?

    -My intention is to make a (sort of) replica of the ms20 as per functions but not necessarily sound wise. Then exchange objects to make it sound better, if need be. I hope to learn something more on general synthesis along the way. I can also imagine just using the patchbay/controller for some completely different routing and synthesis. That is why I think it is great that there is the "default connections" option, for further use. I do not think the controller works like that though. I also would like to try to combine this setup with control data from other things and sensors through arduino/serial usb connections.

    ms20-routing.png

    https://www.korg.com/us/support/download/manual/0/134/2441/

    posted in technical issues read more
  • cfry

    Could you please show me how this is done? I have a hard time grasping dynamic patching.

    Also, how do you suggest using text? Would it only store current patching as two values or would it be set up similar to a list with each line and a single value is used? That is why I skipped using text, I have not figured out how to use it in the best way.

    I made a simulation of how the CCs are coming in. It's pretty wild, will need to clean them up a bit.

    ms-20-list-pachbay-txt.pd

    posted in technical issues read more
  • cfry

    @whale-av

    if I would give each jack the the three states of :

    0 = not connected
    same = cable inserted (index 2 = 2)
    other value = connected to this jack (index 2 = 4 means 2 and 4 are connected)

    Then all I need is [list], right?

    I made a proof of concept. But it will be a lot of connections to cover all possible patching...

    Could I avoid making all these connections "by hand" by using [matrix~]? Or what would be the benefit? ...or in combination with [snake~] ?

    ms20-midiPb-test.png
    ms-20-list-pachbay.pd

    posted in technical issues read more
  • cfry

    Hi,

    I got a MS20 controller and I have finally come around to try to make it work with Pd. For starter I would like to create a patch where the 34 jack patchbay and the knobs work as with the original software. The patchbay generates midi cc triggered by the patch chords in a specific sequence.

    Question 1: I would like to have something like a list or an array with two elements for each index slot. Then a search or compare function where I can find what is connected to what.

    Question 2. Creating the matrix for routing signals in the upcoming synth... I guess there are good and less good ways to go about it? Any suggestions is appreciated!

    B)

    Skärmavbild 2024-04-30 kl. 17.48.26.png 20240430_174738.jpg

    posted in technical issues read more
  • cfry

    @oid how can I change the save directory of [command]? I would like to have all log recordings in a folder (log-recs).
    I tried with the new [file cwd] object but that doesn't seem to work.

    posted in technical issues read more
  • cfry

    @oid Thank you, I used the third version (which outputs only the last request). Seems to work fine.

    A thought/question: First I tried to have all messages to all motors of the robot to be sent through a single pd [command] object. This did not work that well since messages was blocked/cancelled because [command] was not keeping up. When I used a separate instance of [command] for each channel I was sending on it worked better. This leads me to think that you could send through command at a higher speed if you had several [command] objects that you cycle through. I have no need for this here but I just want to understand how [command] works.

    Another thought- when you do these nice examples/abstractions maybe you could add some comments in the patch too? I can figure out what is happening but I think it would be very beneficial for other ppl browsing and maybe make it more likely that others can take part of what we come up with. If it is not too much extra work for you, hit command+5 and throw in a few words?

    Cheers! Good job with the procrastination! ;)

    posted in technical issues read more
  • cfry

    @oid no we didn't since it was assumed that I would put the project on a raspberrypi and this error seemed to be mac osx specific. It turned out that I used a macmini in the end because my (other) code was bloated and I did not have the time to clean it up and be efficient enough for my raspberrypi. Eventually it will be transferred to a rpi.

    But I am curious about that [loadbang] to [dirty 1( to canvas. Never heard of it, how does it work?

    posted in technical issues read more
  • cfry

    @oid a version of logger-sane.pd above of this ended up in an installation, and it seems to have worked pretty good, I still have not have had time to look at the last data recorded but it seems to be solid. The only bugger is that if you try to quit Pd with logger/[console] still running Pd will freeze. So if you accidentally hit cmd+q you will loose all edits since last save. But that is only a problem when working with it, not when it is installed and running. So thanks a lot for all the input, it has been a great help. When I get the chance I will start to experiment with using the data to dynamically change the synthesis configuration of the system.

    Cheers

    posted in technical issues read more
  • cfry

    It works fine now, thank you for the support!

    Quick proof of concept, triggering individual channels with sound:
    https://www.instagram.com/p/C2z_v_7iZZt/

    I get constant error messages in Pd console from command saying "old process is still running". Probably [console] should be handled a bit different, but it works anyway so all good. Probably [netsend] streaming control data over a socket-channel would be the best solution if it needs to be rock solid.

    Cheers & thanks

    posted in technical issues read more
  • cfry

    @whale-av thank you so much. I have contact with the devs but I try to wait asking for favours until I have a decent understanding... as I do not want to strain you guys too much either... its a balancing act.

    Unfortunately mrpeach is not available through deken, says "no matching packages for your architecture". Im on a Mac M2 with 12.5.1 Monterey that comes with the robot.

    Status at the moment:

    I can trigger from the browser and from terminal/zsh with curl.

    I have not managed to get [netsend] to work. Tried some combinations with list and symbol. If using tcp I lock out terminal and browser triggering on that port/socket(?) (8000) . Using [netsend -u] (UPD) allows me to continue using terminal/zsh or the browser for triggering. My conclusion is that it would work if could format the message in the right way. But I do not know how the message looks when/if it arrives at the Ikaros WebUI. Can I monitor this in some way?


    Now I will try using [command] to see if that works.

    EDIT:
    This works!! thanks @oid for getting me into [command]!

    command-curl.png

    Now the next step will be to try to control parameters.


    My goal is to be able to change the slider parameters of the robot/web ui from Pd by some sound process on the same computer locally. So no plans for connecting over internet at the moment.

    posted in technical issues read more
  • cfry

    @rg.kies thanks, Ill explore this tomorrow when I get my hands on the robot again. However I suspect this seems more complicated than it is since I am not sure of the procedure. Below is the github with instructions. Probably better to read that to understand what I am trying to do. I think what I want to achieve in the end is a socket connection from Pd to the robot (web) control interface.
    Look here plz: https://github.com/birgerjohansson/Epi/wiki/Additional-instructions

    Since I probably have to do this on another computer, the less libraries I have to install the better. Its a hassle with secure Internet connections and so forth.

    Thank you so much.

    posted in technical issues read more
  • cfry

    @FFW thanks. That works sort of but since the browser pops up and create a new tab each time it is not functional in this case. But good to know.

    Is there a way to send HTTP request from Pd in some manner without going throw the browser, even if [netrecieve] is not suitable? I would have guessed that it was just a formatting problem.

    posted in technical issues read more
  • cfry

    @cfry said:

    Thanks for replying.

    if I want to send this command through [netsend]

    
    http://127.0.0.1:8000/command/SR.trig/1/0/0
    
    

    How should it look in Pd/[netsend]?

    I can open the connection with [connect localhost 8000(

    but sending

    [list command/SR.trig/1/0/0(
    or
    [list command SR.trig 1 0 0(

    does not work. I am formatting the ip adress wrong I think.

    posted in technical issues read more
  • cfry

    Hi,

    I am trying to control a robot using HTTP requests. I would like to use [netsend] to send messages from Pd.

    Trigger a recorded motion using HTTP requests
    
    This can be done by making an HTTP request to the ikaros web server.
    
    http://127.0.0.1:8000/command/SR.trig/X/0/0
    
    X is the sequence. 0 Is the first sequence.
    
    The local IP number 127.0.0.1 can be replaced by an assigned network IP.
    

    If I write in the web browser address bar it works fine but I have not managed to get [netsend] working. I do notice that by sending [connect 127.0.0.1 8000( it seems connected but I think I am sending messages that are not formatted correctly. How should they look in pd?

    Thanks!

    posted in technical issues read more
  • cfry

    @oid

    Cool! [route Darwin] worked but I had to put back the [delay 100] from [logger2] in order to have the [set exec...( update before [t b b b b b] hits the rest.

    I noticed that you can actually skip using [netsend] and just go straight into your [list prepend send] ---> [command] part. How would this do performance wise? Is [netsend] more effective than [command] or would it not matter?

    nonetsend.png

    posted in technical issues read more
  • cfry

    @oid said:

    Did you ever try using the full path to pdreceive as mentioned above,

    Sweet, It works with the full path! I thought I tried it several times, hmm. And no error code. The right "error" outlet does send out listening on 3000 but it works anyhow.

    I changed permissions: chmod a+rwx pdreceive but still didn't work without full path.

    then I did this and noticed the com.apple.quarantine flag:

    jnl@nmbp bin % ls -@l pdreceive
    -rwxrwxrwx@ 1 jnl  admin  174048  3 Jul 18:11 pdreceive
        com.apple.lastuseddate#PS       16 
        com.apple.quarantine        57 
    jnl@nmbp bin % xattr -d com.apple.quarantine pdreceive 
    jnl@nmbp bin % ls -@l pdreceive                       
    -rwxrwxrwx@ 1 jnl  admin  174048  3 Jul 18:11 pdreceive
        com.apple.lastuseddate#PS       16 
    jnl@nmbp bin % 
    

    The com.apple.quarantine flag is added on downloaded apps by osx, preventing them to run without confirmation.

    Removed the flag but it still does not work. I have to read up a bit on osx security. Its close though. :)

    @oid said:

    But there could be an Applications directory in root for apps available to all users these days, once again my lack of knowledge regarding modern OSX.

    that's how it is structured nowadays yes.

    posted in technical issues read more
Internal error.

Oops! Looks like something went wrong!