Wouter1 / EMU-driver

OSX Kernel extension for Creative Labs EMU driver
189 stars 30 forks source link

reaper no playback sound after switching rate #56

Closed Wouter1 closed 9 years ago

Wouter1 commented 9 years ago

Since v3.5.1 switching the driver sample rate behaves erratically. On my computer you have no sound till you either go out of reeaper and then switch back, or sometimes you have to cmpletely quit reaper and restart it. Tom is experiencing 'breaks in the sound'.

Wouter1 commented 9 years ago

This may be related to the crashing control panel #52

Wouter1 commented 9 years ago

You can notice that something broke in reaper: when it did, these messages do not appear in the system.log anymore when you switch out of reaper:

Mar 12 22:11:39 vlieland kernel[0]: +EMUUSBAudioEngine[0xffffff802f1e9000]::stopUSBStream ()
Mar 12 22:11:39 vlieland kernel[0]: All playback streams stopped
Mar 12 22:11:40 vlieland kernel[0]: -EMUUSBAudioEngine[0xffffff802f1e9000]::stopUSBStream ()

This break seems to happen right when you start your first sampling.

Reaper seems to break in a lighter way when you play back something and then stop and change the rate. It won't play back then but if you switch out of reaper and back into it, you have it working again at the new rate.

Wouter1 commented 9 years ago

I see messages like this in the console when switching rates in reaper

Mar 12 22:18:15 vlieland kernel[0]: -EMUUSBAudioEngine[0xffffff802f1e9000]::stopUSBStream ()
Mar 12 22:18:15 vlieland kernel[0]: +EMUUSBAudioEngine::performFormatChange existing  sampleRate is 44100 direction 0
Mar 12 22:18:15 vlieland kernel[0]: fDriverTag = 0x10002
Mar 12 22:18:15 vlieland kernel[0]: ++about to set output : ourInterfaceNumber = 1 & newAlternateSettingID = 2
Mar 12 22:18:15 vlieland kernel[0]: called setNumSampleFramesPerBuffer with 8192
Mar 12 22:18:15 vlieland kernel[0]: newFormat->fNumChannels = 2, newFormat->fBitWidth 24
Mar 12 22:18:15 vlieland kernel[0]: -EMUUSBAudioEngine::performFormatChange, result = 0
Mar 12 22:18:15 vlieland kernel[0]: EMUXUCustomControl::hardwareValueChanged value 0
Mar 12 22:18:15 vlieland kernel[0]: EMUXUCustomControl::hardwareValueChanged result 0
Mar 12 22:18:15 vlieland kernel[0]: EMUXUCustomControl::hardwareValueChanged value 1
Mar 12 22:18:15 vlieland kernel[0]: EMUXUCustomControl::hardwareValueChanged result 0
Mar 12 22:18:15 vlieland kernel[0]: +EMUUSBAudioEngine[0xffffff802f1e9000]::performAudioEngineStart ()
Mar 12 22:18:15 vlieland kernel[0]: create output pipe 
Mar 12 22:18:15 vlieland kernel[0]: check for associated endpoint
Mar 12 22:18:15 vlieland kernel[0]: frameSizeQueue empty, guessing some queue size. May need fix..
Mar 12 22:18:15 --- last message repeated 127 times ---

this is weird, it is changing only the input rate I think , not the output rate.

TomDrinkwater commented 9 years ago

Tom is experiencing 'breaks in the sound'.

sorry, that is a misunderstanding, I often have no sound after switching sample rate, so I said it "breaks the sound" meaning it is broken.

so I have the same situation as you, or very close.

Wouter1 commented 9 years ago

Thanks for the clarification. I thought his was a different issue.

Wouter1 commented 9 years ago

Here is another sample, I see this when switching to 48k to 44k

Mar 16 21:17:15 vlieland kernel[0]: **** Output Hiccup!! firstSampleFrame=760, nextExpectedOutputFrame=0 bufsize=49152
Mar 16 21:17:39 vlieland kernel[0]: +EMUUSBAudioEngine[0xffffff803b0c6000]::stopUSBStream ()
Mar 16 21:17:39 vlieland kernel[0]: All playback streams stopped
Mar 16 21:17:40 vlieland kernel[0]: -EMUUSBAudioEngine[0xffffff803b0c6000]::stopUSBStream ()
Mar 16 21:17:40 vlieland kernel[0]: +EMUUSBAudioEngine::performFormatChange existing  sampleRate is 48000 direction 0
Mar 16 21:17:40 vlieland kernel[0]: fDriverTag = 0x10002
Mar 16 21:17:40 vlieland kernel[0]: Changing sampling rate to 44100
Mar 16 21:17:40 vlieland kernel[0]: ++about to set input : ourInterfaceNumber = 2 & newAlternateSettingID = 2
Mar 16 21:17:40 vlieland kernel[0]: averageSampleRate = 44100
Mar 16 21:17:40 vlieland kernel[0]: ++about to set output : ourInterfaceNumber = 1 & newAlternateSettingID = 2
Mar 16 21:17:40 vlieland kernel[0]: called setNumSampleFramesPerBuffer with 8192
Mar 16 21:17:40 vlieland kernel[0]: newFormat->fNumChannels = 2, newFormat->fBitWidth 24
Mar 16 21:17:40 vlieland kernel[0]: -EMUUSBAudioEngine::performFormatChange, result = 0
Mar 16 21:17:40 vlieland kernel[0]: +EMUUSBAudioEngine[0xffffff803b0c6000]::performAudioEngineStart ()
Mar 16 21:17:40 vlieland kernel[0]: create output pipe 
Mar 16 21:17:40 vlieland kernel[0]: check for associated endpoint
Mar 16 21:17:40 vlieland kernel[0]: frameSizeQueue empty, guessing some queue size. May need fix..
Mar 16 21:17:40 --- last message repeated 127 times ---
Mar 16 21:17:40 vlieland kernel[0]: +EMUUSBAudioEngine[0xffffff803b0c6000]::stopUSBStream ()
Mar 16 21:17:40 vlieland kernel[0]: USBF:    102427.604    AppleUSBXHCI[0xffffff81ae26a000]::PollEventRing2 - Isoc Transfer event with completion code (3) on pEP (0xffffff803c68b800)
Mar 16 21:17:40 --- last message repeated 1 time ---
Mar 16 21:17:40 vlieland kernel[0]: All playback streams stopped
Mar 16 21:17:41 vlieland kernel[0]: -EMUUSBAudioEngine[0xffffff803b0c6000]::stopUSBStream ()
Mar 16 21:17:41 vlieland kernel[0]: +EMUUSBAudioEngine::performFormatChange existing  sampleRate is 44100 direction 0
Mar 16 21:17:41 vlieland kernel[0]: fDriverTag = 0x10002
Mar 16 21:17:41 vlieland kernel[0]: ++about to set output : ourInterfaceNumber = 1 & newAlternateSettingID = 2
Mar 16 21:17:41 vlieland kernel[0]: called setNumSampleFramesPerBuffer with 8192
Mar 16 21:17:41 vlieland kernel[0]: newFormat->fNumChannels = 2, newFormat->fBitWidth 24
Mar 16 21:17:41 vlieland kernel[0]: -EMUUSBAudioEngine::performFormatChange, result = 0
Mar 16 21:17:41 vlieland kernel[0]: EMUXUCustomControl::hardwareValueChanged value 0
Mar 16 21:17:41 vlieland kernel[0]: EMUXUCustomControl::hardwareValueChanged result 0
Mar 16 21:17:41 vlieland kernel[0]: EMUXUCustomControl::hardwareValueChanged value 1
Mar 16 21:17:41 vlieland kernel[0]: EMUXUCustomControl::hardwareValueChanged result 0
Mar 16 21:17:41 vlieland kernel[0]: +EMUUSBAudioEngine[0xffffff803b0c6000]::performAudioEngineStart ()
Mar 16 21:17:41 vlieland kernel[0]: create output pipe 
Mar 16 21:17:41 vlieland kernel[0]: check for associated endpoint
Mar 16 21:17:41 vlieland kernel[0]: frameSizeQueue empty, guessing some queue size. May need fix..
Mar 16 21:17:41 --- last message repeated 127 times ---
Mar 16 21:17:41 vlieland kernel[0]: warning way-out ring wrap position

I see swice a call to performFormatChange! And there is a call to performAudioStart, immediately followed by stopUSBStream and then the 2nd performFormatChange? Both are for direction 0.

Wouter1 commented 9 years ago

1st call to performFormatChange changes the output rate. The 2nd call changes the input rate.

What may be happening is that reaper sets both input and output rates separately, shortly after another.

Wouter1 commented 9 years ago

From above logs it seems that the driver changes only 1 stream rate (eg, output stream) at a time, then restarts the engine (if we're in Reaper), then gets the request to change the other (eg, input) stream, stops the engine, etc.

But at a deeper level, performFormatChangeInternal sets both channels to the new format only if the sampleRateChanged. Only when the message "Changing sampling rate to XXX" appears, both streams get a new sample rate.

Wouter1 commented 9 years ago

Complared with switching the rate of the EMU using the control panel while playing with Quicktime Player 7. That works OK.

The difference between the two is that Reaper does a second round of 'new format'. (supposedly through setFormat ). Here is the full dump:

--- COMMON REAPER AND CONTROLPANEL+QUICKTIME---

Mar 17 21:24:12 vlieland kernel[0]: +EMUUSBAudioEngine[0xffffff803153e800]::performAudioEngineStop ()
Mar 17 21:24:12 vlieland kernel[0]: +EMUUSBAudioEngine[0xffffff803153e800]::stopUSBStream ()
Mar 17 21:24:12 vlieland kernel[0]: +EMUUSBInputStream::stop
Mar 17 21:24:12 vlieland kernel[0]: EMUUSBOutputStream::stop
Mar 17 21:24:12 vlieland kernel[0]: writeHandler: now stopped 1 of 2
Mar 17 21:24:12 vlieland kernel[0]: writeHandler: now stopped 2 of 2
Mar 17 21:24:12 vlieland kernel[0]: All playback streams stopped
Mar 17 21:24:12 vlieland kernel[0]: +EMUUSBAudioEngine::OurUSBOutputStream::notifyClosed.
Mar 17 21:24:12 vlieland kernel[0]: EMUUSBInputStream::readCompleted all input streams stopped
Mar 17 21:24:12 vlieland kernel[0]: +EMUUSBAudioEngine::OurUSBInputStream::notifyClosed.
Mar 17 21:24:13 vlieland kernel[0]: -EMUUSBAudioEngine[0xffffff803153e800]::stopUSBStream ()
Mar 17 21:24:13 vlieland kernel[0]: -EMUUSBAudioEngine[0xffffff803153e800]::performAudioEngineStop()
Mar 17 21:24:13 vlieland kernel[0]: new format from OUTPUT
Mar 17 21:24:13 vlieland kernel[0]: +EMUUSBAudioEngine::performFormatChange existing  sampleRate is 48000 direction 0
Mar 17 21:24:13 vlieland kernel[0]: newFormat->fBitDepth 24, newFormat->fNumChannels 4
Mar 17 21:24:13 vlieland kernel[0]: +performFormatChangeInternal
Mar 17 21:24:13 vlieland kernel[0]: fDriverTag = 0x1000c
Mar 17 21:24:13 vlieland kernel[0]: Changing sampling rate to 44100
Mar 17 21:24:13 vlieland kernel[0]: ++about to set input : ourInterfaceNumber = 2 & newAlternateSettingID = 12
Mar 17 21:24:13 vlieland kernel[0]: averageSampleRate = 44100
Mar 17 21:24:13 vlieland kernel[0]: alternateFrameSize is 280
Mar 17 21:24:13 vlieland kernel[0]: maxFrameSize 304 alternateFrameSize 280
Mar 17 21:24:13 vlieland kernel[0]: ++about to set output : ourInterfaceNumber = 1 & newAlternateSettingID = 12
Mar 17 21:24:13 vlieland kernel[0]: alternateFrameSize is 280
Mar 17 21:24:13 vlieland kernel[0]: maxFrameSize 304 alternateFrameSize 280
Mar 17 21:24:13 vlieland kernel[0]: EMUUSBAudioConfigObject::GetEndpointPollInterval 3
Mar 17 21:24:13 vlieland kernel[0]: initBuffers mPollInterval=4
Mar 17 21:24:13 vlieland kernel[0]: inputSize= 280 multFactor= 12
Mar 17 21:24:13 vlieland kernel[0]: outputSize= 280 multFactor= 12
Mar 17 21:24:13 vlieland kernel[0]: releasing the input sampleBufferMemory descriptor
Mar 17 21:24:13 vlieland kernel[0]: new bufferSize = 98304 numSamplesInBuffer = 8192
Mar 17 21:24:13 vlieland kernel[0]: disposing the mUSBBufferDescriptor input
Mar 17 21:24:13 vlieland kernel[0]: initBuffers numUSBFrameLists 4
Mar 17 21:24:13 vlieland kernel[0]: using plist value SafetyOffsetMicroSec = 4200
Mar 17 21:24:13 vlieland kernel[0]: sample offset 185 samples
Mar 17 21:24:13 vlieland kernel[0]: disposing the output mUSBBufferDescriptor
Mar 17 21:24:13 vlieland kernel[0]: In the out path, making new buffer with size of 98304 numSamplesInBuffer 8192
Mar 17 21:24:13 vlieland kernel[0]: using plist value latencyDAC = 38
Mar 17 21:24:13 vlieland kernel[0]: using plist value latencyADC = 53
Mar 17 21:24:13 vlieland kernel[0]: completed initBuffers
Mar 17 21:24:13 vlieland kernel[0]: EMUUSBAudioEngine::SetSampleRate 44100
Mar 17 21:24:13 vlieland kernel[0]: using SampleRateXU
Mar 17 21:24:13 vlieland kernel[0]: EMUUSBAudioDevice::deviceRequest bmRequestType=21 bRequest=1 wValue=300 wIndex=c00 wLength=1
Mar 17 21:24:13 vlieland kernel[0]: EMUUSBAudioDevice::deviceRequest result=0
Mar 17 21:24:13 vlieland kernel[0]: ++EMUUSBAudioDevice[0xffffff803463d400]::deviceRequest(0xffffff81faa3b7c8, 0) = 0
Mar 17 21:24:13 vlieland kernel[0]: set result  = 0
Mar 17 21:24:13 vlieland kernel[0]: +EMUUSBAudioDevice::setOtherEngineSampleRate 44100; there are 1 engines
Mar 17 21:24:13 vlieland kernel[0]: -EMUUSBAudioDevice::setOtherEngineSampleRate
Mar 17 21:24:13 vlieland kernel[0]: called setNumSampleFramesPerBuffer with 8192
Mar 17 21:24:13 vlieland kernel[0]: newFormat->fNumChannels = 4, newFormat->fBitWidth 24
Mar 17 21:24:13 vlieland kernel[0]: -performFormatChangeInternal
Mar 17 21:24:13 vlieland kernel[0]: -EMUUSBAudioEngine::performFormatChange, result = 0
Mar 17 21:24:13 vlieland kernel[0]: +EMUUSBAudioEngine[0xffffff803153e800]::performAudioEngineStart ()
Mar 17 21:24:13 vlieland kernel[0]: about to start USB stream(s)
Mar 17 21:24:13 vlieland kernel[0]: averageFrameSamples=22
Mar 17 21:24:13 --- last message repeated 1 time ---
Mar 17 21:24:13 vlieland kernel[0]: Isoc Frames / usbCompletions
Mar 17 21:24:13 vlieland kernel[0]: EMUUSBAudioEngine::SetSampleRate 44100
Mar 17 21:24:13 vlieland kernel[0]: using SampleRateXU
Mar 17 21:24:13 vlieland kernel[0]: createInputPipe
Mar 17 21:24:13 vlieland kernel[0]: +UsbInputRing::init bytesize=98304 byterate=529200
Mar 17 21:24:13 vlieland kernel[0]: -UsbInputRing::init 185759637
Mar 17 21:24:13 vlieland kernel[0]: create output pipe 
Mar 17 21:24:13 vlieland kernel[0]: check for associated endpoint
Mar 17 21:24:13 vlieland kernel[0]: frameSizeQueue empty, guessing some queue size. May need fix..
Mar 17 21:24:13 --- last message repeated 127 times ---
Mar 17 21:24:13 vlieland kernel[0]: ++EMUUSBAudioEngine[0xffffff803153e800]::performEngineStart result is 0x0 direction 1

---- REAPER ONLY
Mar 17 21:24:13 vlieland kernel[0]: +EMUUSBAudioEngine[0xffffff803153e800]::performAudioEngineStop ()
Mar 17 21:24:13 vlieland kernel[0]: +EMUUSBAudioEngine[0xffffff803153e800]::stopUSBStream ()
Mar 17 21:24:13 vlieland kernel[0]: +EMUUSBInputStream::stop
Mar 17 21:24:13 vlieland kernel[0]: EMUUSBOutputStream::stop

---- COMMON ----
Mar 17 21:24:13 vlieland kernel[0]: unitID 14
Mar 17 21:24:13 vlieland kernel[0]: mDigitalIOXU

--- REAPER ONLY ----
Mar 17 21:24:13 vlieland kernel[0]: USBF:    6837.766    AppleUSBXHCI[0xffffff81ae584000]::PollEventRing2 - Isoc Transfer event with completion code (3) on pEP (0xffffff803be0a800)
Mar 17 21:24:13 vlieland kernel[0]: USBF:    6837.767    AppleUSBXHCI[0xffffff81ae584000]::PollEventRing2 - Isoc Transfer event with completion code (3) on pEP (0xffffff803be0a800)
Mar 17 21:24:13 vlieland kernel[0]: writeHandler: now stopped 1 of 2
Mar 17 21:24:13 vlieland kernel[0]: writeHandler: now stopped 2 of 2
Mar 17 21:24:13 vlieland kernel[0]: All playback streams stopped
Mar 17 21:24:13 vlieland kernel[0]: +EMUUSBAudioEngine::OurUSBOutputStream::notifyClosed.
Mar 17 21:24:13 vlieland kernel[0]: EMUUSBInputStream::readCompleted all input streams stopped
Mar 17 21:24:13 vlieland kernel[0]: +EMUUSBAudioEngine::OurUSBInputStream::notifyClosed.
Mar 17 21:24:14 vlieland kernel[0]: -EMUUSBAudioEngine[0xffffff803153e800]::stopUSBStream ()
Mar 17 21:24:14 vlieland kernel[0]: -EMUUSBAudioEngine[0xffffff803153e800]::performAudioEngineStop()
Mar 17 21:24:14 vlieland kernel[0]: new format from OUTPUT
Mar 17 21:24:14 vlieland kernel[0]: +EMUUSBAudioEngine::performFormatChange existing  sampleRate is 44100 direction 0
Mar 17 21:24:14 vlieland kernel[0]: newFormat->fBitDepth 24, newFormat->fNumChannels 4
Mar 17 21:24:14 vlieland kernel[0]: +performFormatChangeInternal
Mar 17 21:24:14 vlieland kernel[0]: fDriverTag = 0x1000c
Mar 17 21:24:14 vlieland kernel[0]: ++about to set output : ourInterfaceNumber = 1 & newAlternateSettingID = 12
Mar 17 21:24:14 vlieland kernel[0]: alternateFrameSize is 280
Mar 17 21:24:14 vlieland kernel[0]: EMUUSBAudioConfigObject::GetEndpointPollInterval 3
Mar 17 21:24:14 vlieland kernel[0]: EMUUSBAudioEngine::SetSampleRate 44100
Mar 17 21:24:14 vlieland kernel[0]: using SampleRateXU
Mar 17 21:24:14 vlieland kernel[0]: called setNumSampleFramesPerBuffer with 8192
Mar 17 21:24:14 vlieland kernel[0]: newFormat->fNumChannels = 4, newFormat->fBitWidth 24
Mar 17 21:24:14 vlieland kernel[0]: -performFormatChangeInternal
Mar 17 21:24:14 vlieland kernel[0]: -EMUUSBAudioEngine::performFormatChange, result = 0

--- COMMON ----
Mar 17 21:24:14 vlieland kernel[0]: +EMUUSBAudioDevice[0xffffff803463d400]::queryXU
Mar 17 21:24:14 vlieland kernel[0]: DigitalIOStatus changed
Mar 17 21:24:14 vlieland kernel[0]: Digital IO SampleRate
Mar 17 21:24:14 vlieland kernel[0]: EMUUSBAudioDevice::deviceRequest result=0
Mar 17 21:24:14 vlieland kernel[0]: ++EMUUSBAudioDevice[0xffffff803463d400]::deviceRequest(0xffffff81f89f3d48, 0) = 0
Mar 17 21:24:14 vlieland kernel[0]: EMUXUCustomControl::hardwareValueChanged value 0
Mar 17 21:24:14 vlieland kernel[0]: EMUXUCustomControl::hardwareValueChanged result 0
Mar 17 21:24:14 vlieland kernel[0]: DigitalIO Sync Lock
Mar 17 21:24:14 vlieland kernel[0]: EMUUSBAudioDevice::deviceRequest result=0
Mar 17 21:24:14 vlieland kernel[0]: ++EMUUSBAudioDevice[0xffffff803463d400]::deviceRequest(0xffffff81f89f3d48, 0) = 0
Mar 17 21:24:14 vlieland kernel[0]: EMUXUCustomControl::hardwareValueChanged value 1
Mar 17 21:24:14 vlieland kernel[0]: EMUXUCustomControl::hardwareValueChanged result 0
Mar 17 21:24:14 vlieland kernel[0]: -EMUUSBAudioDevice[0xffffff803463d400]::QueryXU

---- REAPER ONLY ----
Mar 17 21:24:14 vlieland kernel[0]: +EMUUSBAudioEngine[0xffffff803153e800]::performAudioEngineStart ()
Mar 17 21:24:14 vlieland kernel[0]: about to start USB stream(s)
Mar 17 21:24:14 vlieland kernel[0]: averageFrameSamples=22
Mar 17 21:24:14 --- last message repeated 1 time ---
Mar 17 21:24:14 vlieland kernel[0]: Isoc Frames / usbCompletions
Mar 17 21:24:14 vlieland kernel[0]: EMUUSBAudioEngine::SetSampleRate 44100
Mar 17 21:24:14 vlieland kernel[0]: using SampleRateXU
Mar 17 21:24:14 vlieland kernel[0]: createInputPipe
Mar 17 21:24:14 vlieland kernel[0]: +UsbInputRing::init bytesize=98304 byterate=529200
Mar 17 21:24:14 vlieland kernel[0]: -UsbInputRing::init 185759637
Mar 17 21:24:14 vlieland kernel[0]: create output pipe 
Mar 17 21:24:14 vlieland kernel[0]: check for associated endpoint
Mar 17 21:24:14 vlieland kernel[0]: frameSizeQueue empty, guessing some queue size. May need fix..
Mar 17 21:24:14 --- last message repeated 127 times ---
Mar 17 21:24:14 vlieland kernel[0]: ++EMUUSBAudioEngine[0xffffff803153e800]::performEngineStart result is 0x0 direction 1

--- COMMON ----
Mar 17 21:24:14 vlieland kernel[0]: warning way-out ring wrap position
Mar 17 21:24:14 --- last message repeated 4 times ---
Mar 17 21:24:14 vlieland kernel[0]: frameSizeQueue empty, guessing some queue size. May need fix..
Mar 17 21:24:14 --- last message repeated 67 times ---
Mar 17 21:24:14 vlieland kernel[0]: warning way-out ring wrap position
Mar 17 21:24:14 --- last message repeated 2 times ---
Mar 17 21:24:14 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Mar 17 21:24:14 vlieland kernel[0]: UsbInputRing::notifyWrap 0
Mar 17 21:24:14 vlieland kernel[0]: warning way-out ring wrap position
Mar 17 21:24:14 --- last message repeated 3 times ---
Mar 17 21:24:14 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Mar 17 21:24:14 vlieland kernel[0]: UsbInputRing::notifyWrap 1
Mar 17 21:24:14 vlieland kernel[0]: warning way-out ring wrap position
Mar 17 21:24:14 --- last message repeated 3 times ---
Mar 17 21:24:14 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Mar 17 21:24:14 vlieland kernel[0]: UsbInputRing::notifyWrap 2
Mar 17 21:24:14 vlieland kernel[0]: warning way-out ring wrap position
Mar 17 21:24:15 --- last message repeated 3 times ---
Mar 17 21:24:15 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Mar 17 21:24:15 vlieland kernel[0]: UsbInputRing::notifyWrap 3
Mar 17 21:24:15 vlieland kernel[0]: warning way-out ring wrap position
Mar 17 21:24:15 --- last message repeated 3 times ---
Mar 17 21:24:15 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Mar 17 21:24:15 vlieland kernel[0]: UsbInputRing::notifyWrap 4
Mar 17 21:24:15 vlieland kernel[0]: LowPassFilter::filter init 185759637
Mar 17 21:24:15 vlieland kernel[0]: USB timer started
Mar 17 21:24:15 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Mar 17 21:24:16 --- last message repeated 5 times ---
Mar 17 21:24:16 vlieland kernel[0]: EMUUSBAudioEngine::convertInputSamples READ HICKUP
Mar 17 21:24:16 vlieland kernel[0]: **** Output Hiccup!! firstSampleFrame=564, nextExpectedOutputFrame=400 bufsize=98304
Mar 17 21:24:16 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Mar 17 21:24:16 --- last message repeated 2 times ---
Mar 17 21:24:16 vlieland kernel[0]: EMUUSBAudioEngine::convertInputSamples READ HICKUP
Mar 17 21:24:16 vlieland kernel[0]: **** Output Hiccup!! firstSampleFrame=1620, nextExpectedOutputFrame=1076 bufsize=98304
Wouter1 commented 9 years ago

I was not checking&reporting errors if the output stream does not start up properly. Added check.

Wouter1 commented 9 years ago

That did not reveal any issue. So the startup is not failing

Wouter1 commented 9 years ago

When the audio breaks, the calls to writeCompleted still arrive properly. So we are writing data to the EMU and it arrives there.

Wouter1 commented 9 years ago

Version 3.4.0 did not have this problem. In the output to the console.log, the only difference I see between current and 3.4.0 is the number of channels - we seem to get 4 channels with the new driver.

Version 3.5.0 does have the problem.

So the problem was introduced between 3.4.0 and 3.5.0

Wouter1 commented 9 years ago

Tested that pollInterval=4 modes do not cause this issue - pollInterval=8 modes also don't work anymore after switching the rate.

Wouter1 commented 9 years ago

I tested recording with reaper after switching the rate, using a different source for the sound (not the EMU). Recording works fine also after changing the rate.

So it is definitely the OUTPUT ONLY that is not working.

Wouter1 commented 9 years ago

clipOutputSamples is being called also when the sound is not working anymore.

Wouter1 commented 9 years ago

The clipOutputSamples call contains audio data (it's not containing only zeros).

Wouter1 commented 9 years ago

Checked that the frameSizeQueue is cleaned at start. It is, in init() which is called from startUSBStream()

Wouter1 commented 9 years ago

If I add a check to return immediately from performatChange if the rate has not changed, it still does not work from reaper.

It seems the audio breaks just from the quick cycling of stop, start, stop, start.

The rattling noises I sometimes get suggest that the problem is related to the erase head.

Wouter1 commented 9 years ago

Confirmed, turning off the erase head solves this issue (but of course that would cause other problems).

This all suggests we cause a problem in CoreAudio when quick start/stop cycling

Maybe CoreAudio expects that we keep a sync lock while switching rate??

Wouter1 commented 9 years ago

We are losing sync after the rate is switched from reaper 48k rate

This is a proper startup

Apr  6 21:24:13 vlieland kernel[0]: EMUUSBAudioEngine::SetSampleRate 48000
Apr  6 21:24:13 vlieland kernel[0]: using SampleRateXU
Apr  6 21:24:13 vlieland kernel[0]: createInputPipe
Apr  6 21:24:13 vlieland kernel[0]: +UsbInputRing::init bytesize=49152 byterate=288000
Apr  6 21:24:13 vlieland kernel[0]: -UsbInputRing::init 170666666
Apr  6 21:24:13 vlieland kernel[0]: create output pipe 
Apr  6 21:24:13 vlieland kernel[0]: check for associated endpoint
Apr  6 21:24:13 vlieland kernel[0]: frameSizeQueue empty, guessing some queue size. May need fix..
Apr  6 21:24:13 --- last message repeated 127 times ---
Apr  6 21:24:13 vlieland kernel[0]: ++EMUUSBAudioEngine[0xffffff804d3bc000]::performEngineStart result is 0x0 direction 1
Apr  6 21:24:13 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:24:13 --- last message repeated 1 time ---
Apr  6 21:24:13 vlieland kernel[0]: frameSizeQueue empty, guessing some queue size. May need fix..
Apr  6 21:24:13 --- last message repeated 63 times ---
Apr  6 21:24:13 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:24:13 --- last message repeated 1 time ---
Apr  6 21:24:13 vlieland kernel[0]: write wrap in usbframe 7665568 list 21 byte 48
Apr  6 21:24:13 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:24:13 vlieland kernel[0]: input wrap in list 1 at frame 21 byte 48
Apr  6 21:24:13 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Apr  6 21:24:13 vlieland kernel[0]: UsbInputRing::notifyWrap 0
Apr  6 21:24:13 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:24:13 --- last message repeated 2 times ---
Apr  6 21:24:13 vlieland kernel[0]: write wrap in usbframe 7665728 list 42 byte 96
Apr  6 21:24:13 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:24:13 vlieland kernel[0]: input wrap in list 2 at frame 42 byte 96
Apr  6 21:24:13 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Apr  6 21:24:13 vlieland kernel[0]: UsbInputRing::notifyWrap 1
Apr  6 21:24:13 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:24:13 --- last message repeated 1 time ---
Apr  6 21:24:13 vlieland kernel[0]: write wrap in usbframe 7665888 list 63 byte 144
Apr  6 21:24:13 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:24:13 --- last message repeated 1 time ---
Apr  6 21:24:13 vlieland kernel[0]: input wrap in list 3 at frame 63 byte 144
Apr  6 21:24:13 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Apr  6 21:24:13 vlieland kernel[0]: UsbInputRing::notifyWrap 2
Apr  6 21:24:13 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:24:14 --- last message repeated 2 times ---
Apr  6 21:24:14 vlieland kernel[0]: write wrap in usbframe 7666080 list 21 byte 48
Apr  6 21:24:14 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:24:14 vlieland kernel[0]: input wrap in list 1 at frame 21 byte 48
Apr  6 21:24:14 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Apr  6 21:24:14 vlieland kernel[0]: UsbInputRing::notifyWrap 3
Apr  6 21:24:14 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:24:14 --- last message repeated 2 times ---
Apr  6 21:24:14 vlieland kernel[0]: write wrap in usbframe 7666240 list 42 byte 96
Apr  6 21:24:14 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:24:14 vlieland kernel[0]: input wrap in list 2 at frame 42 byte 96
Apr  6 21:24:14 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Apr  6 21:24:14 vlieland kernel[0]: UsbInputRing::notifyWrap 4
Apr  6 21:24:14 vlieland kernel[0]: LowPassFilter::filter init 170666666
Apr  6 21:24:14 vlieland kernel[0]: USB timer started
Apr  6 21:24:14 vlieland kernel[0]: write wrap in usbframe 7666400 list 63 byte 144
Apr  6 21:24:14 vlieland kernel[0]: input wrap in list 3 at frame 63 byte 144
Apr  6 21:24:14 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Apr  6 21:24:14 vlieland kernel[0]: EMUUSBAudioEngine::convertInputSamples READ HICKUP
Apr  6 21:24:14 vlieland kernel[0]: **** Output Hiccup!! firstSampleFrame=780, nextExpectedOutputFrame=1608 bufsize=49152
Apr  6 21:24:14 vlieland kernel[0]: write wrap in usbframe 7666592 list 21 byte 48
Apr  6 21:24:14 vlieland kernel[0]: input wrap in list 1 at frame 21 byte 48
Apr  6 21:24:14 vlieland kernel[0]: write wrap in usbframe 7666752 list 42 byte 96
Apr  6 21:24:14 vlieland kernel[0]: input wrap in list 2 at frame 42 byte 96
Apr  6 21:24:14 vlieland kernel[0]: write wrap in usbframe 7666912 list 63 byte 144
Apr  6 21:24:14 vlieland kernel[0]: input wrap in list 3 at frame 63 byte 144
Apr  6 21:24:15 vlieland kernel[0]: write wrap in usbframe 7667104 list 21 byte 48
Apr  6 21:24:15 vlieland kernel[0]: input wrap in list 1 at frame 21 byte 48
Apr  6 21:24:15 vlieland kernel[0]: write wrap in usbframe 7667264 list 42 byte 96
Apr  6 21:24:15 vlieland kernel[0]: input wrap in list 2 at frame 42 byte 96
Apr  6 21:24:15 vlieland kernel[0]: write wrap in usbframe 7667424 list 63 byte 144
Apr  6 21:24:15 vlieland kernel[0]: input wrap in list 3 at frame 63 byte 144
Apr  6 21:24:15 vlieland kernel[0]: write wrap in usbframe 7667616 list 21 byte 48
Apr  6 21:24:15 vlieland kernel[0]: input wrap in list 1 at frame 21 byte 48
Apr  6 21:24:15 vlieland kernel[0]: write wrap in usbframe 7667776 list 42 byte 96
Apr  6 21:24:15 vlieland kernel[0]: input wrap in list 2 at frame 42 byte 96
Apr  6 21:24:15 vlieland kernel[0]: write wrap in usbframe 7667936 list 63 byte 144
Apr  6 21:24:15 vlieland kernel[0]: input wrap in list 3 at frame 63 byte 144
Apr  6 21:24:16 vlieland kernel[0]: write wrap in usbframe 7668128 list 21 byte 48
Apr  6 21:24:16 vlieland kernel[0]: input wrap in list 1 at frame 21 byte 48
Apr  6 21:24:16 vlieland kernel[0]: write wrap in usbframe 7668288 list 42 byte 96
Apr  6 21:24:16 vlieland kernel[0]: input wrap in list 2 at frame 42 byte 96
Apr  6 21:24:16 vlieland kernel[0]: write wrap in usbframe 7668480 list 0 byte 6
Apr  6 21:24:16 vlieland kernel[0]: input wrap in list 0 at frame 0 byte 6
Apr  6 21:24:16 vlieland kernel[0]: write wrap in usbframe 7668640 list 21 byte 54
Apr  6 21:24:16 vlieland kernel[0]: input wrap in list 1 at frame 21 byte 54
Apr  6 21:24:16 vlieland kernel[0]: write wrap in usbframe 7668800 list 42 byte 102
Apr  6 21:24:16 vlieland kernel[0]: input wrap in list 2 at frame 42 byte 102

and this when it goes wrong also at 48k

Apr  6 21:29:40 vlieland kernel[0]: EMUUSBAudioEngine::SetSampleRate 48000
Apr  6 21:29:40 vlieland kernel[0]: using SampleRateXU
Apr  6 21:29:40 vlieland kernel[0]: createInputPipe
Apr  6 21:29:40 vlieland kernel[0]: +UsbInputRing::init bytesize=49152 byterate=288000
Apr  6 21:29:40 vlieland kernel[0]: -UsbInputRing::init 170666666
Apr  6 21:29:40 vlieland kernel[0]: create output pipe 
Apr  6 21:29:40 vlieland kernel[0]: check for associated endpoint
Apr  6 21:29:40 vlieland kernel[0]: frameSizeQueue empty, guessing some queue size. May need fix..
Apr  6 21:29:40 --- last message repeated 127 times ---
Apr  6 21:29:40 vlieland kernel[0]: ++EMUUSBAudioEngine[0xffffff804d3bc000]::performEngineStart result is 0x0 direction 1
Apr  6 21:29:40 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:29:40 --- last message repeated 4 times ---
Apr  6 21:29:40 vlieland kernel[0]: frameSizeQueue empty, guessing some queue size. May need fix..
Apr  6 21:29:40 --- last message repeated 89 times ---
Apr  6 21:29:40 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:29:40 --- last message repeated 1 time ---
Apr  6 21:29:40 vlieland kernel[0]: write wrap in usbframe 7992725 list 21 byte 48
Apr  6 21:29:40 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:29:40 vlieland kernel[0]: input wrap in list 1 at frame 47 byte 48
Apr  6 21:29:40 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Apr  6 21:29:40 vlieland kernel[0]: UsbInputRing::notifyWrap 0
Apr  6 21:29:40 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:29:40 --- last message repeated 2 times ---
Apr  6 21:29:40 vlieland kernel[0]: write wrap in usbframe 7992885 list 42 byte 96
Apr  6 21:29:40 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:29:40 --- last message repeated 1 time ---
Apr  6 21:29:40 vlieland kernel[0]: input wrap in list 3 at frame 4 byte 96
Apr  6 21:29:40 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Apr  6 21:29:40 vlieland kernel[0]: UsbInputRing::notifyWrap 1
Apr  6 21:29:40 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:29:40 vlieland kernel[0]: write wrap in usbframe 7993045 list 63 byte 144
Apr  6 21:29:40 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:29:41 --- last message repeated 2 times ---
Apr  6 21:29:41 vlieland kernel[0]: input wrap in list 0 at frame 25 byte 144
Apr  6 21:29:41 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Apr  6 21:29:41 vlieland kernel[0]: UsbInputRing::notifyWrap 2
Apr  6 21:29:41 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:29:41 --- last message repeated 1 time ---
Apr  6 21:29:41 vlieland kernel[0]: write wrap in usbframe 7993237 list 21 byte 48
Apr  6 21:29:41 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:29:41 vlieland kernel[0]: input wrap in list 1 at frame 47 byte 48
Apr  6 21:29:41 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Apr  6 21:29:41 vlieland kernel[0]: UsbInputRing::notifyWrap 3
Apr  6 21:29:41 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:29:41 --- last message repeated 2 times ---
Apr  6 21:29:41 vlieland kernel[0]: write wrap in usbframe 7993397 list 42 byte 96
Apr  6 21:29:41 vlieland kernel[0]: warning way-out ring wrap position
Apr  6 21:29:41 --- last message repeated 1 time ---
Apr  6 21:29:41 vlieland kernel[0]: input wrap in list 3 at frame 4 byte 96
Apr  6 21:29:41 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Apr  6 21:29:41 vlieland kernel[0]: UsbInputRing::notifyWrap 4
Apr  6 21:29:41 vlieland kernel[0]: LowPassFilter::filter init 170666666
Apr  6 21:29:41 vlieland kernel[0]: USB timer started
Apr  6 21:29:41 vlieland kernel[0]: write wrap in usbframe 7993557 list 63 byte 144
Apr  6 21:29:41 vlieland kernel[0]: input wrap in list 0 at frame 25 byte 144
Apr  6 21:29:41 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Apr  6 21:29:41 vlieland kernel[0]: write wrap in usbframe 7993749 list 21 byte 48
Apr  6 21:29:41 vlieland kernel[0]: input wrap in list 1 at frame 47 byte 48
Apr  6 21:29:41 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Apr  6 21:29:41 vlieland kernel[0]: write wrap in usbframe 7993909 list 42 byte 96
Apr  6 21:29:41 vlieland kernel[0]: input wrap in list 3 at frame 4 byte 96
Apr  6 21:29:41 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Apr  6 21:29:41 vlieland kernel[0]: write wrap in usbframe 7994069 list 63 byte 144
Apr  6 21:29:42 vlieland kernel[0]: input wrap in list 0 at frame 25 byte 144
Apr  6 21:29:42 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Apr  6 21:29:42 vlieland kernel[0]: EMUUSBAudioEngine::convertInputSamples READ HICKUP
Apr  6 21:29:42 vlieland kernel[0]: **** Output Hiccup!! firstSampleFrame=1596, nextExpectedOutputFrame=7084 bufsize=49152
Apr  6 21:29:42 vlieland kernel[0]: write wrap in usbframe 7994261 list 21 byte 48
Apr  6 21:29:42 vlieland kernel[0]: input wrap in list 1 at frame 47 byte 48
Apr  6 21:29:42 vlieland kernel[0]: EMUUSBAudioEngine::convertInputSamples READ HICKUP
Apr  6 21:29:42 vlieland kernel[0]: **** Output Hiccup!! firstSampleFrame=940, nextExpectedOutputFrame=1980 bufsize=49152
Apr  6 21:29:42 vlieland kernel[0]: write wrap in usbframe 7994421 list 42 byte 96
Apr  6 21:29:42 vlieland kernel[0]: input wrap in list 3 at frame 4 byte 96
Apr  6 21:29:42 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Apr  6 21:29:42 vlieland kernel[0]: write wrap in usbframe 7994581 list 63 byte 144
Apr  6 21:29:42 vlieland kernel[0]: input wrap in list 0 at frame 25 byte 144
Apr  6 21:29:42 vlieland kernel[0]: EMUUSBAudioEngine::convertInputSamples READ HICKUP
Apr  6 21:29:42 vlieland kernel[0]: **** Output Hiccup!! firstSampleFrame=1364, nextExpectedOutputFrame=1836 bufsize=49152
Apr  6 21:29:42 vlieland kernel[0]: write wrap in usbframe 7994773 list 21 byte 48
Apr  6 21:29:42 vlieland kernel[0]: input wrap in list 1 at frame 47 byte 48
Apr  6 21:29:42 vlieland kernel[0]: EMUUSBAudioEngine::convertInputSamples READ HICKUP
Apr  6 21:29:42 vlieland kernel[0]: **** Output Hiccup!! firstSampleFrame=940, nextExpectedOutputFrame=1876 bufsize=49152
Apr  6 21:29:42 vlieland kernel[0]: write wrap in usbframe 7994933 list 42 byte 96
Apr  6 21:29:42 vlieland kernel[0]: input wrap in list 3 at frame 4 byte 96
Apr  6 21:29:42 vlieland kernel[0]: RingBufferDefault<USBInputRing>::push warning. Ignoring overrun
Apr  6 21:29:42 vlieland kernel[0]: EMUUSBAudioEngine::convertInputSamples READ HICKUP
Apr  6 21:29:42 vlieland kernel[0]: **** Output Hiccup!! firstSampleFrame=2104, nextExpectedOutputFrame=1708 bufsize=49152
Apr  6 21:29:43 vlieland kernel[0]: write wrap in usbframe 7995093 list 63 byte 144
Apr  6 21:29:43 vlieland kernel[0]: input wrap in list 0 at frame 26 byte 6
Apr  6 21:29:43 vlieland kernel[0]: write wrap in usbframe 7995285 list 21 byte 54
Apr  6 21:29:43 vlieland kernel[0]: input wrap in list 1 at frame 47 byte 54
Apr  6 21:29:43 vlieland kernel[0]: write wrap in usbframe 7995445 list 42 byte 102
Apr  6 21:29:43 vlieland kernel[0]: input wrap in list 3 at frame 4 byte 102
Apr  6 21:29:43 vlieland kernel[0]: write wrap in usbframe 7995637 list 0 byte 18
Apr  6 21:29:43 vlieland kernel[0]: input wrap in list 0 at frame 26 byte 18
Apr  6 21:29:43 vlieland kernel[0]: write wrap in usbframe 7995797 list 21 byte 66
Apr  6 21:29:43 vlieland kernel[0]: input wrap in list 1 at frame 47 byte 66
Apr  6 21:29:43 vlieland kernel[0]: write wrap in usbframe 7995957 list 42 byte 114
Apr  6 21:29:43 vlieland kernel[0]: input wrap in list 3 at frame 4 byte 114
Apr  6 21:29:44 vlieland kernel[0]: write wrap in usbframe 7996149 list 0 byte 18
Apr  6 21:29:44 vlieland kernel[0]: input wrap in list 0 at frame 26 byte 18
Apr  6 21:29:44 vlieland kernel[0]: write wrap in usbframe 7996309 list 21 byte 66
Apr  6 21:29:44 vlieland kernel[0]: input wrap in list 1 at frame 47 byte 66
Apr  6 21:29:44 vlieland kernel[0]: write wrap in usbframe 7996469 list 42 byte 114
Apr  6 21:29:44 vlieland kernel[0]: input wrap in list 3 at frame 4 byte 114
Wouter1 commented 9 years ago

Notice, it goes wrong already at the first input wrap:

Apr 6 21:29:40 vlieland kernel[0]: input wrap in list 1 at frame 47 byte 48

should be

write wrap in usbframe 7992725 list 21 byte 48

We have 24 samples per frame, 64 frames per list and 8192 samples in the ring so a full list = 6424 and 8192 = 5 * full list + 21 \ 24 + 8

sample position 8 = byteposition 48

Wouter1 commented 9 years ago

Checked that the inputstream rinngbuffer is at position 0 when the sampling starts. Seems OK

Wouter1 commented 9 years ago

frameIndex is not set to 0 in start! The reading of the input stream was starting at the wrong point and therefore the first wrap came at a wrong position causing timing mechanisms to resync and probably this was confusing the coreaudio.

Wouter1 commented 9 years ago

First tests look sound OK. This missed init call seems so essential that I committed immediately to version 3.5.4. Thorough testing will take more time

Wouter1 commented 9 years ago

Checked that the reported latency at 96k is correct with default driver.

Wouter1 commented 9 years ago

testing default driver 4.2ms.

full playback-record cycle from reaper. Reaper block size 64. Playing 10minute 440Hz sine (generated from audacity) from reaper. Recording to new track. Right click on recorded track and select 'render item as new take'. The track is then rendered as wav in the Documents/Reaper media directory.

Using audacity on that file to do 440Hz notch filter. Checking for clicks

rate result
44k ok
48k (oops reaper buf=128) ok
96k ok
192k a few clicks around 9 minutes
192k with reaper buf=128 ok

At 192k I also see very low level noise spikes (around -50dB). They are 1 sample wide and occur sometimes many times per second, it sounds and looks like cosmic radiation pulses.

Wouter1 commented 9 years ago

@TomDrinkwater TomDrinkwater you may like this new version as it fixes this issue with switching rates in reaper.

Wouter1 commented 9 years ago

Still need to test with 1ms driver setting

TomDrinkwater commented 9 years ago

TomDrinkwater you may like this new version as it fixes this issue with switching rates in reaper.

that's great, thanks for all your work!

sorry I have been out of action, I will try this new version tomorrow.

Wouter1 commented 9 years ago

CHecked that the reported latency at 44.1 is reported ok with 1ms driver. Reaper reports 4.4/4.1 and actual roundtrip latency 8.48ms.

Checked reported latency of 2.4/2.3ms latency at 192k. Roundtrip is 4.8ms so correct.

Checked reported latency of 3.0/2.9ms latency at 96k. Roundtrip is 5.97ms so correct.

Wouter1 commented 9 years ago

testing driver with 1ms setting and 64samples daw buffer.

rate result
44k 15 clicks first 2 minutes, then ok
44k ok
48k ok
96k ok
192k ok
Wouter1 commented 9 years ago

@TomDrinkwater good to hear you are still around. I'm particularly interested if this fix also fixes #55.

TomDrinkwater commented 9 years ago

what is the version number for this driver? is it 3.5.4? I tested it but I still have clicks at 96k 1ms plist setting. also sometimes have no sound after sample rate change, but sometimes it works...

TomDrinkwater commented 9 years ago

96k 64 samples 1ms - about 7 clicks in 3 mins

48k 64 samples 1ms - 1 click in 10 mins

sample rate changing is now behaving correctly. but at first I had the same bug with no sound....

it seems to behave better if the control panel is not running, but I haven't tested that enough to be sure.

Wouter1 commented 9 years ago

Thanks Tom for testing! Yes 3.5.4 is the current version.

So I understand that the rate switching is now working but you still have clicking?

Then I can close this ticket but need to look more into #55

TomDrinkwater commented 9 years ago

So I understand that the rate switching is now working but you still have clicking?

at first with the new driver I had the same problems with sample rate switching. but after a while it got better. I'm not sure why! I will have to see if the problem returns to be sure.