The ASIO specification has a configuration for this. The device can signal that it only wants block sizes that are a power of 2. So, one of two things is happening:
1. Your device is requesting block sizes as powers of 2, which REAPER respects, but other software ignores.
2. Your device is not requesting block sizes as powers of 2, but REAPER is misinterpreting the device's request.
There is a small possibility of #2. Specifically, the ASIO spec says:
Code:
granularity will hold the granularity at which buffer sizes
may differ. Usually, the buffer size will be a power of 2;
in this case, granularity will hold -1 on return
but REAPER interprets any negative granularity value as meaning "powers of 2 only." Any negative value other than -1 would not be defined in the specification. We can change this to check for -1 specifically, but I would be surprised if it made a difference in this case. I think the most likely explanation is #1.