# Build\_plugins

**URL:** <https://forum.csound.com/t/build-plugins/1910>\
**Category:** Developers\
**Created:** [November 17, 2024, 9:38am UTC](https://forum.csound.com/t/build-plugins/1910 "2024-11-17T09:38:33Z")\
**Posts on this page:** 4\
**Page:** 2

<div class="post-metadata">

**Author:** ![rory](https://forum.csound.com/user_avatar/forum.csound.com/rory/32/7_2.png) [@rory](https://forum.csound.com/u/rory)\
**Post date:** [December 9, 2024, 6:13pm UTC](https://forum.csound.com/t/build-plugins/1910/22 "2024-12-09T18:13:29Z")

</div>

> [@Philipp](#):
>
> So these both values are updated every k-cycle?

I’ve never used them, but I would assume so.

> [@Philipp](#):
>
> if both would be not zero, then the whole vector would be filled with ‘nothing’.

My reading of this is that it will null only the start and end of the array if non zero. I guess that will prevent any future processing block from reading that data. You’d need to look into the source to get to the bottom of it 🙂

---

<div class="post-metadata">

**Author:** ![Philipp](https://forum.csound.com/letter_avatar_proxy/v4/letter/p/46a35a/32.png) [@Philipp](https://forum.csound.com/u/Philipp)\
**Post date:** [December 10, 2024, 9:03am UTC](https://forum.csound.com/t/build-plugins/1910/23 "2024-12-10T09:03:28Z")

</div>

Thanks Rory! I also asked in the Mailing List and it’s clear now:

offset may be nonzero at a start of a event, and only then. so buffer writing is starting at the offset position.  
early may be nonzero at the end of a event, and only then.

I’m still digging through the Csound Codebase to understand some stuff. Bit what i see all the time, and is maybe just for core development, is this:  
`IGN(csound);`  
For what is this?

---

<div class="post-metadata">

**Author:** ![rory](https://forum.csound.com/user_avatar/forum.csound.com/rory/32/7_2.png) [@rory](https://forum.csound.com/u/rory)\
**Post date:** [December 10, 2024, 10:59am UTC](https://forum.csound.com/t/build-plugins/1910/24 "2024-12-10T10:59:25Z")

</div>

I hadn’t spotted that macro before, but it’s defined [here](https://github.com/csound/csound/blob/e36ebaa59ffcd7ece2d14b2e1de2843a73e1bc51/include/coreDefs.h#L126). Considering it is being used to void certain things, IGN must stand for ignore. I guess it’s used to stop pesky compiler warnings.

---

<div class="post-metadata">

**Author:** ![Philipp](https://forum.csound.com/letter_avatar_proxy/v4/letter/p/46a35a/32.png) [@Philipp](https://forum.csound.com/u/Philipp)\
**Post date:** [December 10, 2024, 2:17pm UTC](https://forum.csound.com/t/build-plugins/1910/25 "2024-12-10T14:17:35Z")

</div>

Thanks again!

No i have some trouble with my init function.  
I don’t know what happens, but Csound seems to be not allocating memory for my pointer.  
When i use my compiled plugin opcode i see my error message, which i implied already for debugging, but i don’t know what i do wrong at all:

```csound

#define THOMAS_MAXCHN 36  

typedef struct {
  OPDS h;
  MYFLT *aout_x[THOMAS_MAXCHN], *aout_y[THOMAS_MAXCHN],
    *aout_z[THOMAS_MAXCHN]; /* output */
  MYFLT *b, *delta_time, *skip, *in_x, *in_y, *in_z, *n_particles, *max_deviation; /* input */
  MYFLT n_voices; /* internal variables */
  MYFLT x_start;
  MYFLT y_start;
  MYFLT z_start;
  MYFLT max_dev; 
} THOMAS;

static int thomas_init(CSOUND *csound, THOMAS *p){
  printf("Init Start\n");
  if (p->in_x == NULL || p->in_y == NULL || p->in_z == NULL || 
    p->n_particles == NULL || p->max_deviation == NULL) {
    csound->Message(csound, "Error: One or more pointers are NULL\n");
    return NOTOK;
  }

  p->x_start = *p->in_x;
  p->y_start = *p->in_y;
  p->z_start = *p->in_z;
  p->n_voices = *p->n_particles;
  p->max_dev = *p->max_deviation;
  return OK;
}

```

[Previous page](https://forum.csound.com/t/build-plugins/1910.md?page=1)
