Is a sound device necessary for an audio streaming server? - linux

My project is to stream audio online with my PC as the server.
I have a HP Proliant ML110 G7 server PC, which does not have any integrated sound device in motherboard, nor any kind of sound device.
I am currently using ubuntu 16.04 in my PC, and I cannot configure IceCast and Ices2/Darkice properly, but I could do it following the same instructions in another laptop with same os same version, which has an integrated sound device.
Is an integrated sound device needed to make an audio streaming server?
Thank you.

Icecast itself just passes data on through. It requires no sound device at all.
Your source client, such as IceS, can be used to read audio from a sound device or just to read audio from files. If you have no sound device, you'll need to use some other audio source of course.

Related

no audio data from PC send to STM32F4 audio class USB

I'm working in an audio project. We use stm32f407 like a USB audio device to get audio data from PC then send out by I2S module. We are using stm32f4 Discovery kit and STM32cubeMX. After generate code by following this video, i change nothing and flash to Kit; my PC identifies that STM Audio device but there isn't any data send to my kit when play music, except MuteCMD . My question is:
i don't know which function is callback when data stream from PC to Kit.
why PC identifies that my kit is an audio output device but the callback of volume control isn't called when I config volume on PC and there isn't any data of music send to my device. The only one mute control callback function is called when i mute the PC.
this is my config in STM32cubeMX
pinout config figure
USB device config figure 1
USB device config figure 2
USB device config figure 3
PC identifies AUDIO device figure
choosing PC's audio output device figure
fail to play test tone figure
You should set USBD_AUDIO_FREQ to 22050 (or 44100, or 11025). Your value is 22100 and it seems like Windows or built-in audio drivers can't use that frequency.
I had exact same problem.
My project is generated from STM32Cube.
Windows recognizes the F7-DISCO board as sound card but failed to play test sounds.
I changed USBD_AUDIO_FREQ to 48000 and PID to 0x5730 (22320 in decimal).
And then everything works fine.

Headphones no sound

Today I've connected my bluetooth headphones(Ausdom M08) with PC(via bluetooth dongle).
When I open Skype or Discord I hear no sound on youtube, browser and so on. It only works on Skype and Discord - bad sound, not stereo.
I checked in Sounds Options and I have Ausdom M08 Stereo and Ausdom M08 Hands-Free. First one is default device and second one is default communication device.
When I try to force Skype and Discord to use that default device for sound output I hear no sound then, too!
What I tried:
-Disabling Hands Free Telephony, but I lose microphone function then.
-Tried to uninstall drivers and install again. Still the same.
-Disabling enhancements and exclusive controls of devices.
Literally I tried everything I found on internet or that I thought it can be.
Nothing works.
So the question is: How to make my PC output Stereo Sound from my headphones and still to be able to use microphone from it?
Thanks
There are a lot of missing information here: What PC dongle are you using? Which windows version?
From what I can see about the tech specs of Ausdom M08, it supports few basic profile (HSP/HFP/A2DP/AVRCP). A2DP profile lets you hear stereo audio (Ausdom M08 Stereo). HSP/HFP lets you use the microphone to Skype, but audio is limited to 8K-16K Hz sampling rate (Ausdom M08 Hands-Free). You can't use both Bluetooth profiles at the same time.
So to answer you question: You can't have stereo audio from your headphone while having microphone input.
There are proprietary codec developed by Qualcomm called aptX, which may support microphone over A2DP. But, you'll have to make sure both transmitter and receiver supports this codec.

Can anyone explain how voice commands works via Bluetooth remote(Nexus player remote) in Android(Nexus player)?

Can anyone please elaborate following questions?
How bluetooth stack handles audio data?
How audio commands are processed?
Did we need any service to process audio data?
Thanks in advance.
Basically, voice commands over BLE require:
some audio codec for reducing required bandwidth (ADPCM and SBC are common, OPUS is emerging),
some audio streaming method through BLE,
decoding and getting the audio stream from BLE daemon to a command processing framework.
In the android world, command processing framework is google sauce (closed) that most easily gets its audio from an ALSA device. What is left to be done is getting audio from the remote to an ALSA device.
So for audio streaming, either you:
use a custom L2CAP channel or a custom GATT service, this requires a custom android service app and/or modifications to Bluedroid to handle those, it will need a way to inject audio stream as ALSA, most probably with a "loop" audio device driver,
declare audio as custom HID reports, this way, Bluedroid injects them back to the kernel, then add a custom HID driver that processes these reports and exposes an audio device.
Audio over BLE is not standard, so all implementations do not do the actual same thing. In Nexus Player case, implementation uses HID: It streams an ADPCM audio stream, chunked in HID reports. There is a special HID driver "hid-atv-remote.c" in Android linux kernel that exposes an ALSA device in addition to input device. Bluedroid has no information about audio, all it does is forwarding HID reports from BLE to UHID.

Can PulseAudio/ALSA work without built-in soundcard?

I am new to PulseAudio and ALSA, so please go easy on me. This might seem like a dumb question, but it is quite important to have it answered.
I am developing application on ARM imx6 board (lets call it BOARD1), with built-in sound card support. With ALSA, I am able to play audio throgh Headset_OUT. But now, we want to move to a new board (lets call it BOARD2), which does not have built in soundcard. But the idea is to connect a bluetooth module to the BOARD2 and have the audio streamed to the bluetooth speaker.
My question is, is it possible to use PULSEAUDIO to send/receive audio to external (bluetooth) audio device without local embedded soundcard (i.e. is it possible to do audio encoding/decoding in just software with pulseaudio and gstreamer combination) ?
Regards

Sending audio to a bluetooth enabled speaker, IOS

I want to add a function to my App, where the user can choose to play the audio on a bluetooth enabled speaker. I have a Parrot Easydrive in my car and this works for phonecalls and for example the Dictafoon App among others.
I understand that I should use the Core Audio framework. WHen a bluetooth device is connected it is said that it is easy to stream the audio to that connection. I am now looking for Core Audio sample code (or a book) where connecting and streaming to a bluetooth device with Core Audio is explained.
Can anyone shed a light on this? If there is another framework or sample code which I can use please mention it!
Many thanks in advance!
You don't write any specific Core Audio code, it is the same process as is used to play audio via AirPlay.
Basically you put a MPVolumeView into your UI, and the underlying framework will redirect your audio output for you. Once you implement this you will be able to use Bluetooth and any AirPlay enabled device with your app.

Resources