Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

make multi-channel spatialised synth modules #56

Open
6 of 7 tasks
diemoschwarz opened this issue May 17, 2022 · 7 comments
Open
6 of 7 tasks

make multi-channel spatialised synth modules #56

diemoschwarz opened this issue May 17, 2022 · 7 comments
Assignees
Labels
enhancement New feature or request playback selection or synthesis feature or module
Milestone

Comments

@diemoschwarz
Copy link
Contributor

diemoschwarz commented May 17, 2022

  • up to 8 channels for now (circular or multi-pairs)
  • using spat
  • pan mapped to azimuth
  • optional distance
  • panvar
  • spread
  • find way to get spat to switch to stereo, or replace by max-only dynamic VBAP solution (better for skatart, too)
@diemoschwarz diemoschwarz added the bug Something isn't working label May 17, 2022
@diemoschwarz diemoschwarz added enhancement New feature or request playback selection or synthesis feature or module and removed bug Something isn't working labels May 17, 2022
@diemoschwarz diemoschwarz added this to the v1.5-next milestone May 17, 2022
@einbond
Copy link
Collaborator

einbond commented May 17, 2022

Okay, tell me more. We have approached this in the past with VBAP to calculate coefficients for outputgains, virtual sources for Spat, or HOA. Make separate modules for each, time permitting?

diemoschwarz added a commit that referenced this issue May 17, 2022
…bstraction handling spat and panning in camu.synth.voice-8ch
@diemoschwarz
Copy link
Contributor Author

Hi Aaron, this issue is meant for a (sub)module to be put into poly voices for multi-touch use or load-balancing.
Unfortunately my first solution hits these problems:

  1. spat is inflexible re. #speakers, will this need scripting?
  2. is a typical stereo panning law the same as vbap on 2 loudspeakers? maybe there should still be a dedicated stereo synth module.
  3. I have the impression that simply having 20 inactive but unmuted 8ch poly voices in the DSP graph uses a lot of CPU. Any experiences on your side on this? I will need to check this, and judiciously set the busy and mute flags.

@einbond
Copy link
Collaborator

einbond commented May 23, 2022

  1. is a typical stereo panning law the same as vbap on 2 loudspeakers? maybe there should still be a dedicated stereo synth module.

Yes I think it is the same algorithm.

  1. I have the impression that simply having 20 inactive but unmuted 8ch poly voices in the DSP graph uses a lot of CPU. Any experiences on your side on this? I will need to check this, and judiciously set the busy and mute flags.

I have not found an issue if the unused poly~ voices are muted. Incidentally I have some similar design needs for my spatial filter example, which also requires poly~. For example I also need a module to send parameters to all mubu.concat~ objects at once since attrui doesn't work. So maybe we can compare / combine ideas.

@diemoschwarz
Copy link
Contributor Author

have a look at the catart-mubu-poly top-level patch, using a proxy approach (imperfect with the @play attr...). However, just sending messages from a nice UI works.
That said, I think we should rethink the inlets to camu.select and camu.synth (with or without poly) some time, it is quite confusing.

@christophertrapani
Copy link
Collaborator

It would be cool if we can use the azimuth value in the key-mixer and have that sent to a multichannel spatialization patch which takes speaker number/step as an argument and positions the grain

@diemoschwarz
Copy link
Contributor Author

diemoschwarz commented Jun 2, 2022

I have not found an issue if the unused poly~ voices are muted.

Thanks. Trying to mute unused voices, I've awakened the devil of the details:

  • when is an instance no longer needed and can be muted? for this we'd need to know how long the last triggered grain will sound.
  • And what about periodic play?
  • Or is it possible to use the busy detection of thispoly from audio to drive mute?

@christophertrapani
Copy link
Collaborator

christophertrapani commented Jun 2, 2022 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request playback selection or synthesis feature or module
Projects
None yet
Development

No branches or pull requests

4 participants