Menu

#6 ASIO2 & E-MU 0204 (24/32bit fix)

1.0
open
nobody
2016-06-05
2016-05-24
Anton B
No

Didier, hi again!
So far can't get ASIO2 working on E-MU 0204. Here is an error message I get:

"Unrecoverable playback error: ASIOSTInt24LSB ASIO data format not supported by this foobar output component: ASIOSTInt16LSB and ASIOSTInt32LSB only are supportedUnrecoverable playback error: create_asio_buffers failed: cr = -998"

I guess, foobar forces 24bit playback leaving me no option and component wants it in 32 or 16bit. Is 24bit fixed to my device? I. e. for WASAP2 I can choose between 24 and 32bit and it works both ways. Is there any way to forse 32bit ASIO output or make your plugin accept 24bit?

Thanks.

Discussion

  • Didier Galardon

    Didier Galardon - 2016-05-29

    Anton,
    I don't know if you can change the asio buffer format expected by your device. When foobar asio2 plugin initializes the driver , it receives from the device the buffer format it expects. By now, asio2 was only supporting ASIOSTInt16LSB and ASIOSTInt32LSB. I have change this in the patch attached, but I have not the possibility to test it because my own devices always ask for ASIOSTInt32LSB buffers, so I am not very confident about it ! If you have time, give it a try and let me know how it works. Take care however to test it at low volume level.

    Kind regards

    Didier

     
  • Anton B

    Anton B - 2016-06-02

    Hi Didier! There is no way to change the asio buffer format expected by device I know of. This one completely crashes foobar and PC to a blue screen, no console info or message available in this case. This happens whenever I set ASIO2 > native 'ASIO E-MU 0204 | USB' driver. Then I tried to output as ASIO2 > ASIO4ALL v2. This seems to work, but for samplerates up to 96kHz. Higher 176 is turned to 88, 192 gets 96 on souncard's end (as E-MU control panel indicates). I believe ASIO4ALL is limited to 96 and not completely trustworthy solution as a whole. Wanted to check if ASIO could be more stable or useful in my case... Will stick to WASAP so far. Though WASAP still gives me accasional crashes in certain conditions... I'm investigating on that so I could give you more data.

     

    Last edit: Anton B 2016-06-02
  • Josep Maria Antolín Segura

    This might help:
    https://sourceforge.net/p/psycle/code/HEAD/tree/trunk/psycle/src/psycle/host/ASIOInterface.cpp#l907

    Edit: some info

    pBuf is an interlaced 32bit float buffer generated by the application with the unusual range of -32768.0f to 32768.0f as opposed to the more usual -1.0f to 1.0f.

    ASIObuffers[counter].pleft and .pright are the ASIO buffers for left and right. See that they are casted to array of chars.

    rint_clip is just a helper function that clips the float signal so there is no bit overflow.

     

    Last edit: Josep Maria Antolín Segura 2016-06-05
  • Didier Galardon

    Didier Galardon - 2016-06-05

    Hi Anton, Josep !

    Thank you Josep for the link. Looking at another implementation helps me to be more confident on my own understanding, especially with the tedious part of the code: clipping, shiffting, endianess,...

    Anton, I found a big bug in the patch I uploaded last week. You will find attached a new patch fixing this bug. I have also added a safeguard in order to use the preferred size returned by the device if the configured endpoint buffer size is out of the scope of the min and max size returned by the device.
    I hope you will find the time to test it. As I said, I have no way to test it by myself so your feedback will be very helpful. If ever your foobar crashes again, It will be great also to get your console output.

    Kind regards,

    Didier

     

Log in to post a comment.