Test for audio with no speakers - c#

I am currently debugging some code in C# which plays a noise (in this case a beep) under certain conditions.
The computer I am using has no speakers or working headphone jack, is there any way in which I can detect sound being played without actually being able to hear it?
The code that plays the sound is:
else System.Media.SystemSounds.Exclamation.Play();

If you don't have any device in the device manager, you can install a Realtek Driver. It creates a virtual playback device.
After that, go to sound-playing devices, choose the virtual device and set it as default playback device. Open your app and check whether a sound is played by looking at the volume visualisation next to the device in the device manager.
(source: eightforums.com)

In Windows, I believe (provided the audio drivers are loaded, and Windows thinks there's at least some form of audio output device) - you can open the volume setting (from the system tray) and see the bar bounce up and down when sound is being generated.
Alternatively, if the box is running Windows Professional, RDP to it from a remote device? The audio will be passed over the RDP session and played on the client.

Search "Sound" in Windows (Control Panel), it shows you all your devices with the volume it outputs to that device.
You can see if your sound works by looking the current volume (the bar on the right of each device).
If your PC has no audio out device (I don'think it's the case), maybe you can add "virtual" output devices.

Related

Monitor USB for camera connection

I have a USB microscope camera and I would like to open the Windows 10 camera app automatically if the camera gets connected to a USB port. After checking that this isn't possible with Windows 10 at the settings level, I have decided to write a short C# program that monitors the USB ports for a camera device connection (and runs the camera display app).
As to the monitoring I haven't got a slightest clue where to begin. Needless to say that the monitoring program should be lean with respect to blocking ressources, because it would be running all the time. Can I simply obtain an event notification of USB connection? Do I have to expect problems with permissions?
And of course, suggestions for alternative approaches are welcome, if any. Note that I do not want to capture and display video from the camera myself, unless it is easier to do it that way instead of opening the existing camera app.
assuming the microscope is using the web-camera interface I would look for guides about how to enumerate and connect to web-cameras. I have found a few alternatives:
Media capture API
Aforge
Versatile WebCam
I had most success with versatile webcam, but if you just want to enumerate devices any of them should do. Aforge is probably the easiest to use.
You can then use a timer to check for devices, and do something if the microscope is connected.
If the microscope is not a webcamera you will need to refer to the camera documentation on how to enumerate devices.

How to add a custom Windows audio input?

I have a Bluetooth Low Energy (BLE) device that streams audio through a custom service, and need to be able to use it in any Windows application (e.g. stream the audio to Skype or Google Chrome for example). I believe the only way is to make this audio source appear as a standard Windows audio input, but how to do this ?
I think the most reliable way to interract with a BLE device is through UWP (using Windows.Devices.Bluetooth.BluetoothLEDevice), so I used it to get the audio data. Then, I used the Windows.Media.Audio.AudioGraph to interract with the audio system. I'm able to generate the Windows audio stream from the BLE audio data with the AudioFrameInputNode and output it to my application default output with AudioDeviceOutputNode.
I can't override the default system audio input and audio output (e.g the laptop microphone and speakers) so in order to be able to use the output from my application as an input in other application, I used VB-Audio (https://www.vb-audio.com/) combined with the "App volume and device preferences" Windows feature. This way, I can use the VB-Audio Cable to connect the output of my application to the input of another, without having to set them as default system devices.
In theory, this should do what I need to do, but in fact, this setup isn't reliable.
I don't understand why, but the behavior isn't consistent at all. Most of the time, changing the audio settings (from "App volume and device preferences" and the "Audio devices panel") have no effect. With the same settings, sometimes it works but sometimes it doesn't (audio from my application is played on speaker instead of VB-Cable input, etc.)...
I don't know where the problem comes from, VB-Audio or Windows itself ? Is there a more reliable alternative to this setup ?
Otherwise, is there another way to use a custom audio source from an application like a standard Windows audio input ?
Please let me know if anything is unclear or you need any more information.
EDIT:
I think this post is actually about the same issue that I'm facing.

Change barcode scan beep volume for motorola devices

I am developing some .net applications with c# for various Motorola devices running Windows Mobile and Windows CE. These include the MC9190 and the WT41N0. On these two models, it beeps very loudly when a barcode is scanned. Is there anyway using the Motorola emdk or by changing a registry setting to make the beep quieter without turning the beep off altogether.
I don't know if this works for all Motorola devices, but you could try including Symbol.Audio and:
using Symbol.Audio;
...
using (StandardAudio audio = new StandardAudio(Device.AvailableDevices[0]))
{
audio.BeeperVolume = 1;
}
You can inspect the audio.BeeperVolumeLevels property to see what the maximum volume level is.
In Symbol scanner terminology this is called "feedback", and by default it's the local feedback setting that gets in the way of properly managing the audio.
In your application, after you create the reader, the following settings control it:
_BarcodeReader.Parameters.Feedback.Success.BeepFrequency = 2000
_BarcodeReader.Parameters.Feedback.Success.BeepTime = 20
_BarcodeReader being the reader object. I set it to lower frequency for a shorter time above.
If you need to eliminate the beeping altogether:
_BarcodeReader.Parameters.Feedback.Success.BeepTime = 0
You may want to add your own wave file:
_BarcodeReader.Parameters.Feedback.Success.WaveFile = "decode.wav"
This is also the case with the DataWedge software that ships with MC9xxx and MC3xxx series. If you're using DataWedge, look for "local feedback" under the feedback menu, from Scanner, under Basic configuration.
The scan audio can only be managed from the feedback settings, volume control and other methods have no effect. It seems Zebra (previously Motorola) used high-volume default for loud industrial settings, wish they had considered a better way to configure though.
I put a piece of Scotch tape over the speaker on mine.
The tape dampens most of the noise while I am testing here at my desk, but it is simple to remove so they can hear it out on the floor.
Outside or on our production floor, they need the loud noise.
If that doesn't work for you, in the Settings on our Datalogic Falcons, there is a Decoding application. One of the inputs there is called Audio and enables someone to turn down the volume.
Since I don't have the SDK for the Datalogic Falcon, I can only post a low resolution cell phone clip. Hope this helps.
There is a configuration utility for motorola devices. It is a single exe file you can put on your device and then you can adjust several settings and also the beeper volume. I had a look on support.symbol.com but I didn't found it. I think you can get it from your vendor-support.
In our situation with a Motorola MC9590 device using telnet sessions, the volume control on the left-side of the device needs to be adjusted down prior to signing into the telnet session. The volume level remains at the established setting once the user signs into their telnet session.
The volume can be controlled by pressing the blue function key and then the H or M key. The display brightness can be controlled by pressing the blue function key and then the D or I key.
the way I made it silence was : go to control panel -> All control panel items -> Devices and Printers. find the Symbol bar code and right click and select Keyboard settings, on the speed box you will see a Repeat delay icon just drag that all the way to the left and the sound should go away.

Mute specific audio inputs with Win MMDevice API

I have a very specific requirement where I need to mute the "Auxiliary" input. I am already using the Windows Core Audio APIs like EndpointVolume & MMDevice.
Scenario
I need to mute the auxiliary output volume here in order to achieve the desired effect.
Pictured below is the audio device and it's properties.
Issues
Using MMDeviceEnumerator it doesn't appear that the endpoint depicted above includes any of the "output volume levels" displayed in the second half of that screenshot.
Muting the actual recording device (Auxiliary) does not actually mute what is heard.
This must be as simple as possible with as little human interaction as possible. The environment will be controlled entirely via the application as it is a kiosk. The screenshots below indicates what I am referring to when I say "auxiliary recording device which when muted, does nothing":
Is there a hidden place that the Levels tab's individual "input output levels" exist? I cannot find it anywhere within MMDevice which means I am currently unable to mute this device through code. Thanks for reading.
If you have installed (most likely) the windows SDK. You can have a look at this example:
C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\multimedia\audio\EndpointVolume
Does that enumerate your device that plays the auxiliary input?

how to find the main speakers directshow audio device

I am capturing the desktop using VLC and DirectShow an I need to find the main speakers audio device in order to capture all the sound from the desktop, can this be done programmaticly ?
I am using C# in windows XP and 7
You actually cannot capture data from speakers. The real options are:
audio capture from real audio input device, such as microphone
audio capture from loop back device (provided that it is enabled)
Note that loopback capture is different in Vista+ and older systems, also previously discussed here:
Is it possible to record sound played on the sound card?
Get sample of sound from stereo mix in Windows
https://stackoverflow.com/questions/6993186/windows-7-any-audio-libraries-supporting-loopback-audio-capturing-in-c

Categories