Can a core array contain polyphonic data?

Michael O'Hagan
Michael O'Hagan Member Posts: 101 Helper
edited October 22 in Building With Reaktor

Can a core array contain polyphonic data?


I want to know if an array in core can load different data on a per voice basis.


I'm working on an experimental modulation concept and I want to load up an array that will have a different set of values on a per voice basis.


Can core array's do this?

Best Answers

«1

Answers

  • Studiowaves
    Studiowaves Member Posts: 638 Advisor

    Hi Mike, have you studied up on the to and from voice? I have noticed the voices do not seem to have a set pattern in poly mode but they actually might. I once set it to 2 voices and noticed it rocks between the two. Not sure about the array's. Are you talking the core read only arrays? If so they can contain a lot of memory and I believe the current limit is 20 bits or 1,048,576 memory locations. Something along those lines anyway, it's a bit flaky. At any rate I have never studied the full section on to and from voice but it might be a place to start. Paule understands it! I'm trying to clarify what core array you are referring to. In a light response to see how the new forum is working too. I can help with the core arrays above for sure though, I've used excel to create data that exported to a text file then imported it into the arrays and successfully read the data in the arrays. I would like to learn more on the to voice and from voice as well. I'll be in the loop here and help if I can.

  • ANDREW221231
    ANDREW221231 Member Posts: 348 Pro

    unfortunately not, there is no voice support for core, so if you want to do something like this you are stuck with primary tables

  • colB
    colB Member Posts: 970 Guru

    WOw, got this forum to crash out by trying to edit my comment... :-/

    Here goes again:

    Yes a core array can load different data per voice.

    Here is a demonstration with a delay unit that has a different delay time per voice.

    As you can tell by playing with it, in the context of feedback, each voice must be using a different buffer instance for the delay, otherwise they would interact with each other, and they don't. (in some ways it would be great if they did, because passing information between voices in core is so far impossible, and sometimes desirable)


  • ANDREW221231
    ANDREW221231 Member Posts: 348 Pro

    so basically that's reading from one array at different speeds? what about a dedicated array per voice? trying to think if that would work... something like a router that would send clock pulses to different arrays depending on the voice

  • colB
    colB Member Posts: 970 Guru
    edited January 2022

    It's also writing to a delay separately per voice if you listen carefully. otherwise all the notes would end up mixed to the different delay times... which doesn't happen!

  • ANDREW221231
    ANDREW221231 Member Posts: 348 Pro
  • Michael O'Hagan
    Michael O'Hagan Member Posts: 101 Helper

    I just did my own test and it seems that it does not do polyphonic delay's after all, look at this setup..

    there are 2 oscillators each with a to voice control for input and time.


    Press the space bar to play and then press it again, the two osc's delay by the same time amount.


  • colB
    colB Member Posts: 970 Guru
    Answer ✓

    The delay module has a default maximum delay time of 1 second at 44.1Khz, above that will be clipped/clamped. So if you set them to 1 and 2 seconds, you will get the same time from both.

    Try setting the times to 0.5 and 1 ;-)

  • Michael O'Hagan
    Michael O'Hagan Member Posts: 101 Helper
    Answer ✓

    OK, you're dead on the money with that one, I just upped the buffer size to 1,000,000 and got a full second in between delay based upon voices.


    Core arrays can officially do poly tables!


    Thanks everyone.

  • colB
    colB Member Posts: 970 Guru

    Not quite...

    Core arrays are polyphonic.

    Tables are a different matter. There is no way to polyphonically populate a table, so I expect they are monophonic.

    You could easily use a table in a polyphonic context though. Create a table with size NxV where v is the number of voices, then access it using a voice dependent index!

  • Michael O'Hagan
    Michael O'Hagan Member Posts: 101 Helper

    I didn't actually mean core tables, I meant it in the sense that an array is a dynamic data table, an event table, audio table etc...


    but yeah, core tables in the technical sense are definitely mono.

  • Paule
    Paule Member Posts: 1,314 Expert

    Michael, if you need 4 voices create 4 mono core tables.

    In primary take the To Voice module with voice 1 .. 4.

    Then build further in poly.

  • colB
    colB Member Posts: 970 Guru
    edited January 2022

    Much easier with a single table (in the 4 voice case) 4 times the size. That way, to dispatch per voice, you just need a single multiply, instead of a chain of compare routers... you also don't need to edit that part of the code if you change number of voices... although you would need a new table and new table data either way....

    It's all moot anyway, because this was really about arrays - I just wanted to make the distinction clear for future lurkers :)

  • Studiowaves
    Studiowaves Member Posts: 638 Advisor

    Hey Colin, the to and from voice is a mystery to me. I plan on reading up on it and was hoping you could give me a general idea of what it does. I'm still learning core but this is primary I believe.

  • ANDREW221231
    ANDREW221231 Member Posts: 348 Pro
    edited January 2022

    to and from voice modules are pretty useless in the context of a normal polyphonic instrument, especially with reaktor's voice managements making it impossible to predict which voice will get assigned next


    where voice management comes into play is more often when using voices as a way to multiplex some process across multiple voices, generally the voices will be fixed


    an example of this would be multiband analysis/ resynthesis. the bands go up with voices, so 0-20 hz would be on voice one, 20-40hz on voice two, and so on... imagine these bands all lead into a bank of sine wave oscillators arranged in the same configuration

    one way that i've used voice management in this setup, maybe you want to do something crazy with this sound, spectrally fm it by itself: you could have a second set of sines voice shifted to apply fm to the original sine bank at different frequencies

    the to and from voice modules are when you want to move a specific voice to another voice, the 'from voice' catches, say, voice 4 and outputs a mono signal. then you could use the 'to voice' to send that mono signal to say, voice 8

    hope that makes sense. its a bit hard to describe voice management without a specific need for what the voice management is for in the first place

This discussion has been closed.
Back To Top