• jnieminen

    Hey guys,

    It's a super old post but since the netsend~ and netreceive~ are old as well I thought to add my 2 cents here.

    I ran into similar problems connecting a Linux desktop to a Raspberry Pi with netsend~ and netreceive~. My desktop cpu (x86_64) and the ARMv7 of the Raspberry have different word lengths (64bit vs. 32bit). The problem is that the header tag uses long datatype for the members count and framesize, which the compiler maps to the word length of the current architecture. Thus, the send and receive ends of the transmission interpreted a different sized header tag, causing strange error messages about too many channels and incompatible header size.

    To fix it, I simply edited the file netsend~.h and changed the datatypes of the members from long to unsinged int (or to something that is guaranteed to stay as standard size like __u32 just to make sure). I also wonder if the array extension is necessary because if you order the larger datatypes first, the compiler seems to pad the overall size of the struct to 12 in both 64 and 32 bit machines.

    typedef struct _tag {       /* size (bytes) */
        __u32 count;            /*    4         */
        __u32 framesize;        /*    4         */
        char version;           /*    1         */
        char format;            /*    1         */
        char channels;          /*    1         */
        //char  extension[5];   /*              */
    } t_tag;                    /*--------------*/
                                /*   11         */
    

    Btw, does anyone know if there is a more updated version of netsend~ and netreceive~ available since the 1.0b by Remu?

    posted in technical issues read more
Internal error.

Oops! Looks like something went wrong!