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

Tidal doesn't use control bus mappings #1030

Open
matthewkaney opened this issue Aug 23, 2023 · 0 comments
Open

Tidal doesn't use control bus mappings #1030

matthewkaney opened this issue Aug 23, 2023 · 0 comments
Labels
Stream Issues related to the Stream functionality of playing Tidal patterns SuperDirt Issues/features that involve SuperDirt functionality or integration

Comments

@matthewkaney
Copy link
Contributor

While testing #1027, I discovered that current Tidal (1.9.4) isn't correctly using the control busses allocated SuperDirt, but is instead just always using busses 0-127. This usually isn't a problem, since most users just run SuperDirt on its own and it gets allocated that block of busses, but if you allocate more busses than that (for example by running SuperDirt.start multiple times), then the control bus indices out of sync and don't work correctly.

To reproduce:

  1. Evaluate the following code in SuperCollider to start a SuperDirt server. Because 20 separate control busses are allocated first, SuperDirt gets the next set of 128 busses (20-147).
    (
    s.reboot {
        s.options.numBuffers = 1024 * 256;
        s.options.memSize = 8192 * 32;
        s.waitForBoot {
            ~otherBusses = Bus.control(s, 20); // Allocate some control busses
            ~dirt = SuperDirt(2, s); // Set up superdirt
            ~dirt.start(57120, 0 ! 12);
            s.dumpOSC(1); // Turn on server OSC dumping for test
        };
    };
    )
  2. Start up Tidal, and evaluate the following line:
    import Control.Concurrent.MVar
  3. Now, evaluate the following line in Tidal. It should print out an array starting with 20 ([20, 21, 22, ...etc]), demonstrating that Tidal received the correct bus mappings from SuperDirt.
    readMVar (sBusses tidal)
  4. Now, evaluate the following pattern in Tidal:
    d1 $ s "supersquare" # n "c4" # lpfbus 0 "[80 8000]*4"

The correct behavior would be to produce a pulsing tone because of the alternating filter cutoff. However, SuperDirt is listening for input on control bus 20 (the 0th bus allocated to SuperDirt), but Tidal is sending its control messages to control bus 0 on the server. Because of this, the tone should be barely audible as it has a default filter cutoff of 0hz (I believe). SuperCollider should also be dumping OSC messages to the console that confirm this:

[ "#bundle", timestamp,
  [ "/c_set", 0, value ]
]
@matthewkaney matthewkaney added Stream Issues related to the Stream functionality of playing Tidal patterns SuperDirt Issues/features that involve SuperDirt functionality or integration labels Mar 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Stream Issues related to the Stream functionality of playing Tidal patterns SuperDirt Issues/features that involve SuperDirt functionality or integration
Projects
None yet
Development

No branches or pull requests

1 participant