• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Beta Test: Earful -- a hearing test App

zermak

Senior Member
Joined
Jun 2, 2019
Messages
373
Likes
251
Location
Italy
I use WASAPI exclusive on foobar2000 and MPC-BE (on its own audio renderer) without any issues and I guess they both use the same driver as on Earful.

And yes I have that activated on the soundcard/DAC.

EDIT: on Distort the WASAPI output works as it was in exclusive mode (as supposed to I guess; I don't see any shared mode available and I am using version 1.0.19).
 
OP
pkane

pkane

Master Contributor
Forum Donor
Joined
Aug 18, 2017
Messages
5,700
Likes
10,386
Location
North-East
I use WASAPI exclusive on foobar2000 and MPC-BE (on its own audio renderer) without any issues and I guess they both use the same driver as on Earful.

And yes I have that activated on the soundcard/DAC.

Did you pause and restart sound playing in Earful when you changed WASAPI modes? It will not change automatically if it’s already playing.
 

zermak

Senior Member
Joined
Jun 2, 2019
Messages
373
Likes
251
Location
Italy
Did you pause and restart sound playing in Earful when you changed WASAPI modes? It will not change automatically if it’s already playing.
Yes I have and I edited my post. On Distort WASAPI works in exclusive mode without issues (if you intended to have it in exclusive mode).
 
OP
pkane

pkane

Master Contributor
Forum Donor
Joined
Aug 18, 2017
Messages
5,700
Likes
10,386
Location
North-East
Yes I have and I edited my post. On Distort WASAPI works in exclusive mode without issues (if you intended to have it in exclusive mode).

Strange, because Earful is using the same code to play sounds as Distort, in fact Distort was written after Earful. It’s a simple setting and seems to work in my testing. Maybe you can try to reproduce the same test I did:

Start two instances of Earful, have both set to Exclusive mode before you press play. Then start playing, say, 1kHz tone with one, then switch to the other and play a 2kHz tone. Do you hear one or both? Then, try the same with both set to shared mode, just remember to pause and play both after changing settings. You should now hear both playing at the same time.
 

zermak

Senior Member
Joined
Jun 2, 2019
Messages
373
Likes
251
Location
Italy
Strange, because Earful is using the same code to play sounds as Distort, in fact Distort was written after Earful. It’s a simple setting and seems to work in my testing. Maybe you can try to reproduce the same test I did:

Start two instances of Earful, have both set to Exclusive mode before you press play. Then start playing, say, 1kHz tone with one, then switch to the other and play a 2kHz tone. Do you hear one or both? Then, try the same with both set to shared mode, just remember to pause and play both after changing settings. You should now hear both playing at the same time.
Ok, in WASAPI shared mode they both play the tones (I mean I can hear them) but when I enable exclusive mode on one (or the other) the other doesn't play anything (again I can only listen to the tone which is on Earful with the exclusive mode activated).
I also tested if in this situation I could listen to any other program's audio (which uses shared mode or DS API) and I indeed can.
 
OP
pkane

pkane

Master Contributor
Forum Donor
Joined
Aug 18, 2017
Messages
5,700
Likes
10,386
Location
North-East
Ok, in WASAPI shared mode they both play the tones (I mean I can hear them) but when I enable exclusive mode on one (or the other) the other doesn't play anything (again I can only listen to the tone which is on Earful with the exclusive mode activated).
I also tested if in this situation I could listen to any other program's audio (which uses shared mode or DS API) and I indeed can.

Again, strange as it's behaving differently here. Let me dig into it to see if I can find an explanation. I did update the audio library to the newest version, perhaps there's something that's changed in this version.
 
OP
pkane

pkane

Master Contributor
Forum Donor
Joined
Aug 18, 2017
Messages
5,700
Likes
10,386
Location
North-East
Ok, in WASAPI shared mode they both play the tones (I mean I can hear them) but when I enable exclusive mode on one (or the other) the other doesn't play anything (again I can only listen to the tone which is on Earful with the exclusive mode activated).
I also tested if in this situation I could listen to any other program's audio (which uses shared mode or DS API) and I indeed can.

I think I see what's happening. When opening a WASAPI device in exclusive mode, the call defaults to 0 latency. I see that some drivers produce an error when this happens, and do not open in exclusive mode. I've changed the default latency to 500ms and this appears to resolve the problem. I've also made the change that automatically switches the driver between exclusive and shared modes when you make the change in the UI, no need to restart playing. If the device is not able to handle exclusive mode, an error message should pop-up now saying that it "can't play".

Let me know if it helps with your device/drivers (keeping the version number the same for now, just reinstall):

https://distortaudio.org/EarfulSetup.zip
 

zermak

Senior Member
Joined
Jun 2, 2019
Messages
373
Likes
251
Location
Italy
It works properly, thank you!

Anyway I still have the bug of the data resetting to a given value while moving between the points. New thing: when I clicked on Clear All it put out an unhandled exception error message:
Code:
************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
   at Earful.EarfulForm.pbPrev_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
 

zermak

Senior Member
Joined
Jun 2, 2019
Messages
373
Likes
251
Location
Italy
And since I am here I see that the graph shows the name of the file you opened the last time even if your data is cleared (even if you close Earful and open a new instance).
 
OP
pkane

pkane

Master Contributor
Forum Donor
Joined
Aug 18, 2017
Messages
5,700
Likes
10,386
Location
North-East
And since I am here I see that the graph shows the name of the file you opened the last time even if your data is cleared (even if you close Earful and open a new instance).

Yes, the clear function isn't clearing the last data label. I'll fix it :)
 
OP
pkane

pkane

Master Contributor
Forum Donor
Joined
Aug 18, 2017
Messages
5,700
Likes
10,386
Location
North-East
Now available: Earful version 1.0.6. Contains some bug fixes for issues reported in this thread:
  • Fixed labels not cleared on the graph after the data is cleared
  • Fixed WASAPI exclusive mode not turning on for some audio drivers
  • Fixed automatic switch between shared/exclusive mode when the checkbox is changed
  • Added a little delay when reacting to previous/next buttons or the slider to reduce sound glitching
  • Fixed first data point value not set correctly in saved data after reloading on start-up
 

zermak

Senior Member
Joined
Jun 2, 2019
Messages
373
Likes
251
Location
Italy
Find out when the error on clearing data happens: I have different max and start volumes settings and if I set the default ones (I remember they are -60 and -20) the clearing happens otherwise I have the error I posted about before.

EDIT: it seems it was a "non-bug". I kept updating the software and it kept the values that way without resetting them so now I set them back and on my preferences again and the clearing works with the new max and starting volumes I chose.
 

Nemo

Active Member
Forum Donor
Joined
May 9, 2019
Messages
103
Likes
112
Location
Spain
I'm afraid so. It'll run on MacOS and Linux under Wine emulation, at least other audio software I've developed seemed to work that way.
Good day!

I downloaded Wine (and XQuartz) and tried to run it on a Mac running Catalina 10.15.6, but I did not succeed, as the latest Wine is flagged as incompatible. It may be my bad, but I wanted to share my experience.

Thanks to @pkane for his initiative nonetheless!
 
OP
pkane

pkane

Master Contributor
Forum Donor
Joined
Aug 18, 2017
Messages
5,700
Likes
10,386
Location
North-East
Good day!

I downloaded Wine (and XQuartz) and tried to run it on a Mac running Catalina 10.15.6, but I did not succeed, as the latest Wine is flagged as incompatible. It may be my bad, but I wanted to share my experience.

Thanks to @pkane for his initiative nonetheless!

Right. I think Wine on the Mac is still a 32-bit app requiring older versions of MacOS. Catalina made all 32-bit apps unusable. If you have Mojave or older, it should work.
 

zermak

Senior Member
Joined
Jun 2, 2019
Messages
373
Likes
251
Location
Italy
I am back with the headphones measurements. It was a two time listening but here are the results using my AKG K712 Pro without any EQ.
zermak_earful_K712Pro.png

I have to say the first time I was kinda tired and it was also late (and well to have a queit environment I have to wait after 1am usually); in the second attempt I was able to lower some points by 2/3dB indeed.
 

dasdoing

Major Contributor
Joined
May 20, 2020
Messages
4,301
Likes
2,769
Location
Salvador-Bahia-Brasil
Right. I think Wine on the Mac is still a 32-bit app requiring older versions of MacOS. Catalina made all 32-bit apps unusable. If you have Mojave or older, it should work.

unfortunatly not working in Wine Linux either


Code:
See the end of this message for details on invoking \njust-in-time (JIT) debugging instead of this dialog box.\n\n************** Exception Text **************\nSystem.NullReferenceException: Object reference not set to an instance of an object
  at NAudio.CoreAudioApi.MMDeviceEnumerator.GetDefaultAudioEndpoint (NAudio.CoreAudioApi.DataFlow dataFlow, NAudio.CoreAudioApi.Role role) [0x00000] in <554b80148c284b99953f098db496ebd4>:0
  at Earful.EarfulForm.Initialize () [0x00012] in <22c2665351aa4d8fba7bdeada1e07dd5>:0
  at Earful.EarfulForm.EarfulForm_Load (System.Object sender, System.EventArgs e) [0x000b6] in <22c2665351aa4d8fba7bdeada1e07dd5>:0
  at System.Windows.Forms.Form.OnLoad (System.EventArgs e) [0x000d1] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.Form.OnCreateControl () [0x00031] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.Control.CreateControl (System.Boolean fIgnoreVisible) [0x000ed] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.Control.CreateControl () [0x00008] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.Control.WmShowWindow (System.Windows.Forms.Message& m) [0x00051] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m) [0x0071b] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.ScrollableControl.WndProc (System.Windows.Forms.Message& m) [0x00043] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.ContainerControl.WndProc (System.Windows.Forms.Message& m) [0x0001a] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.Form.WmShowWindow (System.Windows.Forms.Message& m) [0x00013] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.Form.WndProc (System.Windows.Forms.Message& m) [0x00290] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.Control+ControlNativeWindow.OnMessage (System.Windows.Forms.Message& m) [0x00001] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.Control+ControlNativeWindow.WndProc (System.Windows.Forms.Message& m) [0x000b3] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.NativeWindow.Callback (System.IntPtr hWnd, System.Int32 msg, System.IntPtr wparam, System.IntPtr lparam) [0x00030] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
 
OP
pkane

pkane

Master Contributor
Forum Donor
Joined
Aug 18, 2017
Messages
5,700
Likes
10,386
Location
North-East
unfortunatly not working in Wine Linux either


Code:
See the end of this message for details on invoking \njust-in-time (JIT) debugging instead of this dialog box.\n\n************** Exception Text **************\nSystem.NullReferenceException: Object reference not set to an instance of an object
  at NAudio.CoreAudioApi.MMDeviceEnumerator.GetDefaultAudioEndpoint (NAudio.CoreAudioApi.DataFlow dataFlow, NAudio.CoreAudioApi.Role role) [0x00000] in <554b80148c284b99953f098db496ebd4>:0
  at Earful.EarfulForm.Initialize () [0x00012] in <22c2665351aa4d8fba7bdeada1e07dd5>:0
  at Earful.EarfulForm.EarfulForm_Load (System.Object sender, System.EventArgs e) [0x000b6] in <22c2665351aa4d8fba7bdeada1e07dd5>:0
  at System.Windows.Forms.Form.OnLoad (System.EventArgs e) [0x000d1] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.Form.OnCreateControl () [0x00031] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.Control.CreateControl (System.Boolean fIgnoreVisible) [0x000ed] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.Control.CreateControl () [0x00008] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.Control.WmShowWindow (System.Windows.Forms.Message& m) [0x00051] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m) [0x0071b] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.ScrollableControl.WndProc (System.Windows.Forms.Message& m) [0x00043] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.ContainerControl.WndProc (System.Windows.Forms.Message& m) [0x0001a] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.Form.WmShowWindow (System.Windows.Forms.Message& m) [0x00013] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.Form.WndProc (System.Windows.Forms.Message& m) [0x00290] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.Control+ControlNativeWindow.OnMessage (System.Windows.Forms.Message& m) [0x00001] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.Control+ControlNativeWindow.WndProc (System.Windows.Forms.Message& m) [0x000b3] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0
  at System.Windows.Forms.NativeWindow.Callback (System.IntPtr hWnd, System.Int32 msg, System.IntPtr wparam, System.IntPtr lparam) [0x00030] in <a1b7540aeb454df7a6cc546c7c9a66bb>:0

Are there any audio devices visible under Linux? What flavor of Linux did you use?
 
OP
pkane

pkane

Master Contributor
Forum Donor
Joined
Aug 18, 2017
Messages
5,700
Likes
10,386
Location
North-East
yea, sound test in winecfg is working



Arch

Hmm, let me see if I can get this to work on my side. Looks like Wine doesn't support some of the standard multimedia device calls that Earful is using. Let's see if I can ignore this error and continue anyway.
 
Top Bottom