Number of transmitted poly channels

User avatar
seal58
Posts: 394
Joined: Fri Jul 12, 2019 5:28 pm
Location: Rostock, Germany
Contact:

Number of transmitted poly channels

Post by seal58 »

Hi there.

For some purpose I want to transmit data via a poly jack using all 16 channels, independently of actually set polyphony. Unfortunately that is not possible because VoltagePolyJack does not process channels above GetNumberOfPolyVoices().

Did somebody have same problem and found a solution?

Roland
User avatar
utdgrant
Posts: 679
Joined: Wed Apr 07, 2021 8:58 am
Location: Scotland
Contact:

Re: Number of transmitted poly channels

Post by utdgrant »

seal58 wrote: Thu Dec 26, 2024 10:22 am Hi there.

For some purpose I want to transmit data via a poly jack using all 16 channels, independently of actually set polyphony. Unfortunately that is not possible because VoltagePolyJack does not process channels above GetNumberOfPolyVoices().

Did somebody have same problem and found a solution?

Roland
Talk to ColinP of Adroit Synthesis! He wrote the book on this topic! :D
______________________
Dome Music Technologies
Steve W
Posts: 826
Joined: Thu Jul 16, 2020 5:55 pm

Re: Number of transmitted poly channels

Post by Steve W »

utdgrant wrote: Thu Dec 26, 2024 12:15 pm
seal58 wrote: Thu Dec 26, 2024 10:22 am Hi there.

For some purpose I want to transmit data via a poly jack using all 16 channels, independently of actually set polyphony. Unfortunately that is not possible because VoltagePolyJack does not process channels above GetNumberOfPolyVoices().

Did somebody have same problem and found a solution?

Roland
Talk to ColinP of Adroit Synthesis! He wrote the book on this topic! :D
Most sincere thanks to ColinP for writing the book in the first place, to utdgrant for providing the handy link, and to seal58 for raising the question. Trying to sort this out for my own needs has been on my back burner for over a year and this info flow has saved me time looking for these details.
User avatar
seal58
Posts: 394
Joined: Fri Jul 12, 2019 5:28 pm
Location: Rostock, Germany
Contact:

Re: Number of transmitted poly channels

Post by seal58 »

Thank you both for the hint.

I'm owner of the great LSSP module pack yet. To be honest, until now I only tryed some module functions but did not complete a larger preset.

You're right. With LSSP modules signal conversion between Poly and S-Poly is possible within a VM preset. Unfortunately that does not solve my problem.

I'm working on a module which can receive poly signals and transmit processed signals via a poly output. It does not satisfy me, that in VM unused poly pitch signals on channels above actual polyphony deliver undefined values. Connected VCOs using these channels may create disharmonic tones. I'd like to change such pitches to "better" values, as they might be very high, very low or matching current used pitches.

That's why I'm looking for a "hidden back door" in VM's code basement.
UrbanCyborg
Posts: 640
Joined: Mon Nov 15, 2021 9:23 pm

Re: Number of transmitted poly channels

Post by UrbanCyborg »

There isn't a hidden back door, sadly. Colin came up with his method for that very reason. I seem to recall him offering to share it with me a long time ago (so don't hold him to that if my memory is faulty :? ). I also recall him saying that it was something of a kludge, and that he'd gone the rounds with CA and probably gotten himself on their shit list by being so persistent about it. It seems to me that they really didn't want anyone doing exactly what he did, which is to implement a subsystem that ran on their system. If I'm remembering correctly, his method made use of some module-specific external files.

One solution, if you're only concerned with limiting channels, and not with extending them, is to write your module to have an adjustable limit value. I'm going to do exactly that when I get around to updating Poly Permuter (and probably writing an extension of it), because there are use cases for that module that require a locally-limited channel count, while the module as a whole needs a higher channel count. Of course, that's strictly a module-specific thing that doesn't affect incoming and outgoing channel count.

The other module-specific kludgy fix I can suggest is what I did with one of the updates to Boolean Truth. You can't get the full use of that module if the channel count isn't set high enough, and I figured that for the few people actually using that module it would be a common mistake to have the channel count set lower for some other reason, and waste time figuring out that it needed to be higher. So I just included a quick tell let you know you needed to up the channel count: a big red numeral showing the channel count appears on the module if it's too low. Again, that doesn't address the issue you're concerned with.

To wrap this ramble up, when I need to pass data between modules, I just require the channel count to be set high enough.

Reid
Cyberwerks Heavy Industries -- viewforum.php?f=76
User avatar
seal58
Posts: 394
Joined: Fri Jul 12, 2019 5:28 pm
Location: Rostock, Germany
Contact:

Re: Number of transmitted poly channels

Post by seal58 »

Hi Reid,

if even Colin could not achieve a common solution with CA, developers and users have to bear this undefined channel state issue.

But in my case temporarily setting a higher voice number is a smart idea which looks rather useful to me. I'm going to try out that way and will report the result here. I wonder whether Voltage kernel will let me change voice number twice within one sample.
ColinP
Posts: 1031
Joined: Mon Aug 03, 2020 7:46 pm

Re: Number of transmitted poly channels

Post by ColinP »

It's unfortunate that CA decided to cripple their poly cable mechanism. I assumed that the polyphony limit was intended to improve efficiency and that this would be implemented by modules checking the number of voices parameter and using that as an upper limit on the number of simultaneous voices that modules would handle. A perfectly reasonable approach to managing CPU load.

But I never imagined that CA would actually write code that "cut the wires" on channels above this limit as this meant that general purpose multi-channel communication using poly cables became impossible. Which seemed insane to me.

It soon became apparent that CA were not going to remove this limitation so I tried to figure out a workaround called S-Poly.

In my 1990's UNIX days (shout-out to IBM and Sun Microsystems) I did some minor research on persistent storage management and inter process communication and so got to be close friends with mmap() - a low-level C function that underpins virtual memory. Its Java wrapping is what makes S-Poly work.

But as Reid suggests this is very much a kludge.

Although processes communicate via shared memory, mmap() still produces a ghost file. So if you use S-Poly you may have noticed a small file called spmm.tmp in your home directory. Sorry about that, but I haven't been able to figure out a way to clean it up (I probably could but life is short). You can delete it but it will come back. Likewise Adroit Custom creates garbage in the form of the acmm.tmp file.

More importantly there can be rare moments of latency so it's not guaranteed that S-Poly signals arrive in the same sample. This was a nightmare in developing N-Step as long chains of S-Poly based communication amplified this latency. One upside of this is that I now know a lot more than I did about fault-tolerant retry communication.

If anyone wants to adopt S-Poly I can provide the code for free but I want to do this under license as although you may well be able to do a better job, I'd like to keep the format uniform so that any modules you create are interoperable with the many Adroit modules that already use S-Poly.

Finally, I would ask anyone interested to lobby CA to remove their daft restriction on their poly cable mechanism and thereby make S-Poly redundant. S-Poly is a messy solution for a problem that should never have arisen.
User avatar
Waverley Instruments
Posts: 154
Joined: Thu May 05, 2022 2:10 pm

Re: Number of transmitted poly channels

Post by Waverley Instruments »

Is there a reason why you couldn't just use a MIDI cable to do this sort of stuff?

To me, all these problems and multi-channel challenges are very much sounding like what MIDI was designed to solve back in 1983 :?

-Rob @ WI
User avatar
seal58
Posts: 394
Joined: Fri Jul 12, 2019 5:28 pm
Location: Rostock, Germany
Contact:

Re: Number of transmitted poly channels

Post by seal58 »

@ColinP
Hi Colin,

at the moment there is not a strong need to me to use a 16 channel data transmission. If it would get really necessary I will ask you for a license.

My only plan is to code a poly module with "clean" outputs.

@Waverley Instruments
I'm afraid that channel count for MIDI transmission will also be limited by Voltage kernel. That explaines, why I cannot (I don't want to) use an extra MIDI module. However, fact is that the MIDI jack size would not fit into my module without enlarging module front.
------------------
Today I tryed to use SetNumberOfPolyVoices( n ) to temporarily change channel count. Unfortunately Java compiler does not know that method though it should because it is part of imported Voltage.core. Neither this.SetNumberOfPolyVoices( n ) did work. I'm afraid I did something wrong but I could not find it out with Voltage JDK documentation.
User avatar
Waverley Instruments
Posts: 154
Joined: Thu May 05, 2022 2:10 pm

Re: Number of transmitted poly channels

Post by Waverley Instruments »

seal58 wrote: Fri Dec 27, 2024 7:29 pm I'm afraid that channel count for MIDI transmission will also be limited by Voltage kernel. That explaines, why I cannot (I don't want to) use an extra MIDI module.
That kinda surprises / confuses me - I'm probably missing something here due to lack of context.

I'm pretty sure you can send and receive MIDI messages via MIDI jacks / cables on whatever / however many MIDI channels you like up to 16. :?

Edit - I'm assuming that in my envisaged scenario, the MIDI messages would be generated / consumed programmatically. Perhaps that's not the intended case here.

Anyhoo, it sounded to me like in some of the examples that poly channels were being used as some kind of general purpose "message exchange" between modules as opposed to handling poly patches more elegantly - my understanding of the purpose of poly channels.

I have a module in the works (un-released) that needed a "link" type feature so I just used MIDI messages - the path of least resistance / YMMV :-)

-Rob @ WI
Post Reply

Return to “Module Designer”