ipcformat iprogramcard


    Apr 16 2021 | 9:00 pm
    Hello how to compile ipcformat on max 8? Source code and object .mxo zip file best regards
    best regards G.

    • Apr 18 2021 | 9:44 am
      Alternative to trying to recompile that external without agreement form the developer, you could capture fixed part of the sysex message per parameter and only change the values. For examples you posted, that are 3 items , first the OSC Transmit Model (0 or 1), then the value, split into 4 0-255 bytes. As it seems that max fader output is 4094, you would only need / 256 and % 256 and it would max at 0 0 15 254 ( 15* 256 + 254 = 4094 ) Here you can compare output of ipcformat to captured sysex message
      The sysex strings gets formed based on number of chars in the OSC address and number of parameter - values. Only a bit more demanding would be to get float values if there are any, because that would also need to be converted from float to raw bytes.
    • Apr 18 2021 | 4:42 pm
      Hello, After reading the explanations it is indeed a question of having to send messages by ipcformat and I absolutely need this this object on max 8. that's why I sent a screenshot of XCode. also it seems useful to find the corresponding osc files OscMessage.h and OscEncoder.h. The osc language is used on max msp it is curious not to have a database entered in C74support. The developer gave what you have and told me that it should be enough for me to compile ipcformat on max 8 and I do believe it is imperative to have this object to send this MIDI data.
    • Apr 18 2021 | 4:47 pm
      Hello thank you I replied on the forum as mentioned but I am still very surprised not to be able to obtain the missing data. OscMessage.h, OscEncoder.h these are the ones that must handle ipc format and this osc data is not just made for this object but for many other applications ... looking forward to your help
    • Apr 19 2021 | 9:07 am
      You should ask developer to either provide header files or at least name the source. I remember that header files in ArdOSC library for arduino, which is discontinued, and replaced by OSC library.
      download original one from here: https://github.com/recotana/ArdOSC or https://www.arduino.cc/reference/en/libraries/ardosc/ lib updated, but most header files are the same.
      but maybe you are lookin for different ones ?
      https://github.com/hideakitai/ArduinoOSC
      same name , different content...
    • Apr 19 2021 | 4:07 pm
      The developer or his representative has still not responded. I'll ask them for the header files again. Thanks for the osc basics that I downloaded. I'm looking for nothing other than these missing files ... I will try to look for a solution and will be sure to notify promptly if a solution is found. best regards
    • Apr 20 2021 | 6:58 am
      2 header files are in the ArdOSC library. Why don't you simply use them and try to compile the external.
    • Apr 20 2021 | 7:19 pm
      yes the idea seems interesting but these are data for Arduino and I have to adapt to max and the patch to drive the Iprogram Card which is not an Arduino. I'm going to try . I keep you informed of my tests. Also having the ipcformat.mxo object on max 7 I'm wondering when trying to read it in Xcode and extract the OSC data ... I'm not a specialist thanks for the help
    • Apr 20 2021 | 7:20 pm
      the developer remains silent in front of my many emails it's very heartbreaking ...
    • Apr 20 2021 | 10:52 pm
      Thanks for the research and advice but I did not find a solution and the 2 head ArdOSC files are not readable so another new file is missing and it is not in the Cycling74 data. I sent a final word to the developer and more precisely his representative. They don't seem to be able to answer ... according to the explanations the source code allows to manage to create ipcformat on max8, it's curious! Pending a possible solution Best regards
    • Apr 21 2021 | 7:48 am
    • Apr 21 2021 | 8:07 am
      My advice still is to forget that external and use plain max objects to form sysex messages, as I showed you in the patch I posted. You don't need to extract any OSC data or such. just capture the output of that external on Max 7. Just out of curiosity, I visited that buchla page, and found few infos about it, and a patch which is used to control that card with OSC messages using wifi. There are not too many parameters that need to be controlled.
    • Apr 21 2021 | 8:19 am
      That is all allready in patch I posted, did you not understand it ?
      here it is without that external and midi connected
    • Apr 21 2021 | 4:47 pm
      thanks it works on the fd_co_pitch parameter for the other parameters how to be able to differentiate them for each patcher they must be different I do not know how to differentiate them they are 18 see more. I need to organize a patcher for each and how do I differentiate them so that each patcher controls the right parameter? also the green command i have a lot of trouble to change patches randomly on the map. it's great to be able to do without ipcformat which is not needed for this use but i'm still looking to finalize this patch.
    • Apr 21 2021 | 8:38 pm
      I can't read and know how this patch works with osc capture thank you for giving me more details to be able to better understand and add all the parameters as on the patch that you were able to discover, I modified it and everything works except that here I do not know how to find the name of the sysex addresses
    • Apr 22 2021 | 9:15 am
      I allready showed how to capture sysex for different parameters in the first patch.
      Connect OSC message to that external and watch the list at the output. You can't copy sysex from one parameter to the other. when you send message containing osc address and parameters, that external creates a list which contains code for message length, ascii chars OF THAT OSC message, then code for number of parameters and parameters themself. You capture the list and copy it , then replace the parameters with changeable arguments, like $1 $2 $3 etc, depending on how many they are. All parameters that have only osc address, mode and value will look similar, only first part of the message that deals with length and OSC address name would differ. You can tell where it ends, as it is unique number 44 that ends that part of the list, and 105 is start of the second part of the list - value length descriptor. 105 gets repeated as many times as values in the list and ends with few 0 (zero) depending on the number of values. Next are 4 ints per value, easy to follow if you look at the list from right to left ignoring 247 which is end of sysex. ---------- All parameters that have integers as values get sent as 4 bytes 0-255. Have a look at the picture to understand that.
      if value does not exceed 255, value will be sent as 0 0 0 nn like in case of that /ps_load $1. if parameter has higher range, like 4096 then one would need % 256 and / 256 to have output 0 0 $1 $2. /fd_co_pitch $1 message example : 240 28 47 102 100 95 99 111 95 112 105 116 99 104 0 0 0 0 44 105 105 0 0 0 0 $1 0 0 $2 $3 247 ignore 240 and 247 = start/end of sysex message 28 is code for message length 44 is end of ascii part and length code 105 is beginning of the value length and values 105 gets repeated as many times as values in the list, followed by number of zeros which are part of length descriptor for value string length next part are 4 integers for each value. 0 0 0 $1 is here for OSC Transmit mode 0 or 1 0 0 $2 $3 is value of the parameter
      So we have 3 changeable values
      that list of 3 values gets formed with join, set to output when inlet 1 gets input. There was a MISTAKE in the patches I posted, join was set to trigger 2 instead of @triggers 1 . I updated uploaded patches
      ------------------ That is the easy part of it. There are /cv_connect parameters which connect some sources to destinations using float value for connection depth. Float gets treated differently than integers. You would need either float to raw int binary to 4 x 8bytes list converter to form 4 integer float representation, or if high precision of the float is not needed, one could capture -1. to 1. range into coll for example using 2-3 decimal places and use that instead.
    • Apr 22 2021 | 2:07 pm
      EDITED 24 april 2021 - Sysex List fixed There are few obvious mistakes in that Easel OSC Max patches 1- missing slash in Envelope Generator OSC String sw_eg_trigger $1 should be /sw_eg_trigger $1 2- first slider in Sequential Voltage Source bpatch has /easel/fd_svs_level1 $1 which no other OSC String has I guess correct should be /fd_svs_level1 $1 ----------- here is captured list of all parameters : Uploaded 24. april 2021. /easel/fd_svs_level1 $1 is left as is
      /sw_eg_trigger $1 is fixed - oner must do it in the Easel subpatch too !
      Here is confirmed SYSEX LIST :
      all items that end with $1 0 0 $2 $3 247 should be used exactly as in my examples. they need OSC Transmit Mode. The ones that end with 0 0 $1 247 are the ones that do not need OSC Transmit Mode You simply connect control to the message. Here example for /ps_save
      there are few that send no values, like
      you click or bang that message to send it -------------- The last item in that text file is the mentioned /cv_connect which is a special case.
      Example:
      After 3 values 0 2 5 which are OSC Transmit Mode and two menu selected items (numeric) there is a float connection depth value -0.570 that one has to be converted as described in my previous post to 4 bytes at the end. In the sysex string : 240 36 47 99 118 95 99 111 110 110 101 99 116 0 44 105 105 105 102 0 0 0 0 0 0 $1 0 0 0 $2 0 0 0 $3 $4 $5 $6 $7 247 changeable arguments are $1 - OSC Transmit mode, $2 - menu selection 1 , $3 - menu selection 2 last 4: $4 $5 $6 $7 are the float value ------------ here is patch using embeded coll with float values converted, using 3 decimal places precision.
    • Apr 22 2021 | 8:00 pm
      Having received data on OSC I communicate them. It's very difficult for me to develop on XCode but maybe someone can try? I tried but it is not conclusive.
    • Apr 22 2021 | 8:36 pm
      All these explanations are still useful with the important command table with sysex correspondences, that's fine. I take the liberty of placing an extracted .xml text file from the Easel208Pad application file. Also it becomes difficult to operate depending on IOs used. There are many decimals beyond 3. I have appropriated the known patch that I have modified many times, it has no osc and only the fader and switch controls plus the change of patches from 0 to 23. The OSC on WIFI mainly? My operation is on USB cable mainly to be operational in old walls without internet connection. What is the function to read the output of ipcformat link in green? I couldn't figure out how to do it. I have to keep reading to understand better I appreciate it.
    • Apr 22 2021 | 9:03 pm
      The discovery of unknown or used functions on the application? copyLiveToBuffer, clearBuffer, cv_connect, ps_save, ps_load, debug_text still a lot to discover and thank you! Indeed, I saw entries that did not correspond to anything but everything is quite complex! It is likely to save their card directly with max but this is to be discovered gradually ...
    • Apr 23 2021 | 11:29 am
      I am afraid here end my possibilities to help you with that card. That list I posted with osc messages are extracted from easel max patches, every single control sent to the ipcformat external and output captured to form sysex string. If they are correct, then it should work. the only float value in that patch is in the /cv_connect parameters all other are plain integer. why does for example in that xml file fd_svs_4="2229.040283203125" use 12 decimal places precision where in max patch it is a plain integer ? Probably mistake, either in iPad app or in the max patch. ------- To conclude, I posted everything you need to send sysex using plain max objects, rest is your decision, to use it or not. If you need more decimal places for the /cv_connect parameter which I doubt would make any difference you would have to convert float to binary. in java one would use Float.floatToRawIntBits(f); function, and then do bitshifting to get 4 ints list
    • Apr 23 2021 | 2:02 pm
      P.S. one more correction from the xml text file you uploaded it is visible that /easel/fd_svs_level1 or what I thought could be correct /fd_svs_level1 does not exist. 5 Sequential Voltage Source faders are adressed : /fd_svs_1 /fd_svs_2 /fd_svs_3 /fd_svs_4 /fd_svs_5 so that must be a mistake in the easel max patch.
    • Apr 23 2021 | 3:42 pm
      / easel / fd_svs_level1 $ 1 is readable on the bpat_SVS patch. I am using the app to save to the card. svs_level_1 works on iPad. I didn’t modify anything on the .xml but just provided it for informational purposes.
      attached a patch to test the change of program / ps_load is a concern. the programs do not change on the card.
      After long testing the original patch with ipcformat midi is stable.
      For tests by following the attached patch, the midi is not stable and the card becomes silent. by changing the values ​​on Complex OSC Pitch, data is transmitted for a very short time. The card also switches to WIFI onOFF mode during the tests on copitch. The same USB cable has always been used.
    • Apr 23 2021 | 3:43 pm
    • Apr 23 2021 | 3:44 pm
      join 3 @triggers 1 or triggers 2, no change
    • Apr 23 2021 | 7:53 pm
      here is this to better understand each other. The original patch is modified I would have had to say it at the beginning !!
    • Apr 24 2021 | 8:09 am
      There is important thing to understand as very first thing. Manufacturer of that card is not providing infos about osc strings, and no infos about which parameters really can be sent using that ipcformat external.
      I took it that each osc string which is published in Easel Max patches which are for WiFi communication would also be usable as midi sysex messages using that external. That does not have to be true. Only possibility is to test one after another. As you have max 7, start sending parameters as sysex using that external to card to see which do really work. The fact that ipcformat produces some output, does not mean that message would be accepted and translated to OSC and that card would react to it. Have a look at this :
      Here is modified Max Easel main patch with removed osc output, but inserted ipcformat external and midiout, so that you can make test. You can see the string which ipcformat sends.
      Reuploaded - fixed subpatch bpat_EG /sw_eg_trigger $1
      One thing definitely does not work - naming the presets because that external accepts symbol only at the beginning of the message, following items must be ints or floats. So message
      will not work. ---------- Next thing is that you need to better understand messages in Max, and usage of changeable argument signs ($1 $2 $3 etc ), to stop making mistakes.
    • Apr 24 2021 | 8:29 am
      The reason why program change does not work could be because: 1- maybe it is not possible at all to send it via midi 2- even if it is possible , you are doing it wrong ! 3- I made a mistake capturing that and few other strings, did not think about speed limit, so I reuploaded confirmed SYSEX List.txt Please use SYSEX-LIST-OK.txt file which I uploaded instead of original one with mistakes. Look at what I posted for sysex messages that only use one changeable argument. I posted example for save.
      look just under the uploaded SYSEX-LIST-OK.txt Is it so difficult to adapt that for load message ? 240 20 47 112 115 95 115 97 118 101 0 0 0 0 44 105 0 0 0 0 0 $1 247
      ----------- Then - Easel patches have speedlim 20 which significantly reduces speed of sent messages and also drops messages which get received faster then set limit. Maybe they programmed that stuff so badly, that it capitulates after having received few fader movements ???
    • Apr 24 2021 | 9:56 pm
      Under sysexlist-ok I haven't seen the patch above? I have tested all the main functions and everything is OK the keyboard works too. Before asking the question here I haven't had time to test cv-connect which is to replace the patch yet.
      for backups it's a bit long and it takes time it's a different approach than the application. I accidentally deleted a patch again I loaded it through the app. The recording mode seems to work and must be observed. This mode seems to detail all the parameters to be saved for the creation of the patch to be saved so on max it is also possible but I have not tried everything correctly.
      Speedlim solved the issues because on max 7 too it was complicated but the data is transmitted so that the card works without errors. On max8 the concerns persist speedlim 20 connected at noon. I have to ask for the midi implementation and architecture of this card, hoping to receive this document soon. The Programm changes operation on max7. Everything should work on max8 but without having the details of this card it is frankly very complicated.
      I don’t understand why it wasn’t possible to reproduce ipcformat on max 8 but for me it’s programming and I’m not an expert developer. With this additional information it's also very good!
    • Apr 25 2021 | 7:20 am
      I don't understand this line : "On max8 the concerns persist speedlim 20 connected at noon." Are you using google translate ? Here is example for save and should be adapted for load, replacing the sysex string for the load.
      Problem with compiling that external is that all dependencies (OSC Libraries) are outdated and should be rewritten for max sdk 8 as well as source cpp file itself. I think that using extracted sysex messages would be as efficient as that external. ------ Full wifi communication with the card is not only possible with that iPad app. One should be able to use all that functions in Max using udpsend and receive. It would be just a matter to capture all the messages from/to the app and card, to make exactly same editor as on iPad. -------- One more thing - if you feel that 3 decimal places float precision is not enough for connect parameter, I'll post the java code to replace the coll with captured values.
    • Apr 25 2021 | 10:15 am
      Not having the notion of time to compile this external for maxsdk8 and obsolescence remains a major concern.
      This application adds virtual wiring functions on these elements: / sw_co_timbre $ 1, / fd_eg_a $, / fd_eg_s $ 1, / fd_eg_d $ 1.
      The precision of the decimals on the Easel MIDI-ipcformat patch is all functional on Max7 and 8.
      With the use of UDP_S_R gave me the possibility to find a solution to switch to Max8. While using ipcformat on max7. It is max 7 which ensures the faulty communication on max8 which ensures the addressing.
      On future computers and OSX ipcformat will be completely obsolete. Here is the request to the developer of this card: Please return the IMPLEMENTATION SHEET to me quickly. Which includes all the transmission and reception characteristics of IPROGRAMCARD. It is important to fully understand these missing explanations. this is to know exactly the capabilities of this IPCARD and its ability to communicate with Max8. There is important thing to understand as very first thing. Manufacturer of that card is not providing infos about osc strings, and no infos about which parameters really can be sent using that ipcformat external.
      Yes I use google translate Thanks for these tips !! Best regards
    • Apr 25 2021 | 11:55 am
      many options are possible such as wifi. but I still use a USB connectionMany
    • Apr 25 2021 | 7:37 pm
      With captures of messages, sysex max 8 works on this test
    • Apr 25 2021 | 8:57 pm
      here is the additional information received according to the questions sent, it would seem that it is incomplete: It is all 8-bit Sysex messages The messages formats should be made clear in the code.
      You can only control the 1) virtual positions of faders, 2) virtual position of the switches 3) the connections of the virtual banana cables. That is all. The software on the card takes care of everything else by interacting with the hardware of the 208.
    • Apr 30 2021 | 8:49 pm
      Hello, this example works on max7. This example does not work on max8. Iprocramcard shuts down and so does MIDI. Why is max8 different from max7 in MIDI? Thanks for your help
    • Apr 30 2021 | 9:10 pm
      Thanks for the help over the last few days, it's very helpful!
      Between Max7 and Max 8 on the transfer of MIDI data is it different?
      Thanks for your help
    • May 02 2021 | 9:16 am
      There was allways one difference between older and newer Max versions - older are almost allways more efficient. Try folowing : 1 enable overdrive 2 open Max preferences an set this values
      3 disable any debugging or probe taking
      If you are running Max on MacOS get info on Max.app and set it to work in low resolution
      In dsp status start with this settings for Performance and Scheduler
      ----------- Don't try to use max 8 and max 7 at same time to send midi to the card --------- But at the end this is sad truth : sysex messages are not high priority midi messages and are not meant for realtime control also because the messages are in comparison to simple CC# change toooo long. If you only want to send one value with the fader, insert mousefilter between slider and midiout.
    • May 02 2021 | 2:59 pm
      I overlooked one important thing - that ipcformat external is NOT following sysex rules, that start 240 and end 247 bytes are only 8bit values and all other 7bit or max 0 - 127. What happens is that if one sends slider value > 127 and reaches 240 or 247 sysex is broken. one would have to use / 128 and & 128 instead of / 256 and & 256 which ipcformat external is doing. I don't understand how could developer do this. It would be interesting to look at the source code of the USB midi firmware implementation of that card. --------- Max 7 and Max 8 react a bit different to bad sysex formatting . Both would end sysex when 247 as value is hit, but Max 8 breaks the message if 240 as value is hit before the end - 247, Max 7 does not. Your only hope is that Card would react to 7 bit values. But you will have to forget using float values. I guess you don't really understand what I am talking about, but let's put it in simple words : that ipcformat external is rubbish.
    • May 02 2021 | 3:06 pm
      Thanks for your advice. Before reading you I compared Max 7 and Max 8 to try to understand the configurations remain the same and no change. Sorry attached the patch that works. On Max8 no change
    • May 02 2021 | 3:09 pm
      from the xml text file you uploaded it is visible that /easel/fd_svs_level1 or what I thought could be correct /fd_svs_level1 does not exist. 5 Sequential Voltage Source faders are adressed : /fd_svs_1 /fd_svs_2 /fd_svs_3 /fd_svs_4 /fd_svs_5 so that must be a mistake in the easel max patch.
      I have indeed corrected it's perfect
    • May 03 2021 | 6:46 am
      to get same midiout behaviour as in Max 7 you could use imp.midi
      https://www.theimpersonalstereo.com/s/impmidi_v1_0.zip
      I tested it on Max 8.1.11 Mac and all sysex messages get sent out without restrictions, even messages that make no sense or follow any midi rules, as long as they remain in 0 -255 range. Here is the patch to use
      It does not need speedlim, but if you want to recall presets with many parameters, you must organise order of messages sent, don't send them all at once, but one after another. --------- I am wondering why do you not use UDP WiFi instead of midi, even if there is no internet, one can create adhoc network on any Mac or Win computer and work with that without any internet connection. And have access to all parameters. Are you using Mac or Windows ?
    • May 03 2021 | 5:33 pm
      The messages in 7 and 8 bits are indeed very different from where the loss of the decimals! Notions of logic in electronics help me understand. It's hard to get precise answers from the developer. Is it possible to extract the USB source code from this card? If so, you need to secure so as not to lose the data. Questioning the developer remains possible, unfortunately without any certainty of answer! Thank you for your important research. The solution is to use imp.midi !! I haven't used speelim, the actions are generally slow. It’s true I have seen this rigorous organization. Attached is a quick test. I am on OSX so it is actually possible to use WIFI UDP what are the possibilities without having to deal with any interference? It is true that it is more modern, but you have to be sure to manage WIFI data without loss. Best regards