Giter Club home page Giter Club logo

scream's Introduction

Scream - Virtual network sound card for Microsoft Windows

Scream is a virtual device driver for Windows that provides a discrete sound device. Audio played through this device is published on your local network as a PCM multicast stream.

Receivers on the network can pick up the stream and play it through their own audio outputs. Receivers are available for Unix/Linux (interfacing with PulseAudio or ALSA) and for Windows.

For the special scenario of a Windows guest on a QEMU host, @martinellimarco has contributed support for transferring audio via the IVSHMEM driver mechanism, similar to the GPU pass-through software "Looking Glass". See the section on IVSHMEM below.

Scream is based on Microsoft's MSVAD audio driver sample code. The original code is licensed under MS-PL, as are my changes and additions. See LICENSE for the actual license text.

Download and install

A ZIP file containing signed builds for Windows 10 on x64, x86 and arm64 is available on the GitHub releases page. The "installer" is a batch file that needs to be run with administrator rights.

Installation on Windows 10 version 1607 and newer

Microsoft has recently tightened the rules for signing kernel drivers. These new rules apply to newer Windows 10 installations which were not upgraded from an earlier version. If your installation is subject to these rules, the driver will not install.

However, cross-signed kernel drivers are still accepted by Windows 10 version 1607 (and greater) if any of the following exceptions apply:

  • The driver is a boot-up driver
  • Windows 10 was upgraded from a version preceding 1607
  • Secure Boot is disabled in BIOS or not available at all
  • The driver was signed with a certificate issued before 29 July 2015
  • A special registry value has been set, thereby allowing cross-signed drivers to load on systems with Secure Boot enabled

Workaround #1: Disable secure boot in BIOS. For more information, see this issue.

Workaround #2: Add this special registry value:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CI\Policy]
"UpgradedSystem"=dword:00000001

Please review the following resources for more information.

Receivers

  • Unix with Pulseaudio, JACK or ALSA: Not included in the installer package. Please see the README in the Receivers/unix folder. Various contributors have written code for this receiver:

    • @roovio: JACK support.
    • @ivan: Original ALSA code.
    • @martinellimarco: IVSHMEM support.
    • @accumulator: Refactoring into single binary and cmake support.
    • @F5OEO: Raw output support.
  • Windows: ScreamReader, contributed by @MrShoenel. Included in the installer package as of version 1.2. This receiver does not support positional mapping of multichannel (more than stereo) setups - meaning a mismatch in speaker setup can lead to channels being played in the wrong position.

  • A 3rd-party receiver that supports Scream streams is https://github.com/mincequi/cornrow. It's primarily meant for embedded devices.

  • @tomek-o wrote receivers for low-power embedded systems, great for building ethernet-attached active speakers.

Receivers can usually be run as unprivileged users. Receiver systems that have an input firewall need to open UDP port 4010, or whatever custom port you use.

Functional description

All audio played through the Scream device will be put onto the local LAN as a multicast stream (using unicast is optional - see below). Delay is minimal, since all processing is done on kernel level. There is no userspace portion.

The multicast target address and port is "239.255.77.77:4010". The audio is a raw PCM stream. The default sampling rate and size can be set as the "Default format" in the driver "Advanced" property page. The default speaker/channel configuration can be set on the "Configure" dialog of the Scream sound device.

Data is transferred in UDP frames with a payload size of max. 1157 bytes, consisting of 5 bytes header and 1152 bytes PCM data. The latter number is divisible by 4, 6 and 8, so a full number of samples for all channels will always fit into a packet. The first header byte denotes the sampling rate. Bit 7 specifies the base rate: 0 for 48kHz, 1 for 44,1kHz. Other bits specify the multiplier for the base rate. The second header byte denotes the sampling width, in bits. The third header byte denotes the number of channels being transferred. The fourth and fifth header bytes make up the DWORD dwChannelMask from Microsofts WAVEFORMATEXTENSIBLE structure, describing the mapping of channels to speaker positions.

Receivers simply need to read the stream off the network and stuff it into a local audio sink. The receiver system's kernel should automatically do the necessary IGMP signalling, so it's usually sufficient to just open a multicast listen socket and start reading from it. Minimal buffering (~ 4 times the UDP payload size) should be done to account for jitter.

Setting the sampling rate (optional)

To satisfy your audiophile feelings, or to reduce unnecessary resampling, you might want to set a higher sampling rate and/or sampling width. You can do that on the driver "Advanced" property page, as shown below. Warning: using high sampling freqs with 24/32 bits width in combination with multichannel can lead to high bit rates on the network. We recommend to stick to 48kHz/16 bits for 5.1 or higher channel modes, or 44.1kHz/16 if you are going to listen to music from CDs.

Bring up the Speakers Properties window and go to the Advanced tab to set the sample rate. width="700"/>

Setting up default speaker configuration (optional)

Thanks to the great work of @martinellimarco, if your target system has a multichannel speaker setup, you can extend that to Windows as well. Use the "Configure" wizard of the sound device driver dialog, as shown below. Please note that this is just a system default, and that application software (like games) may require their own settings to be made.

The “Configure” button starts a wizard where you can step by step select speaker setups and test them.

Using unicast instead of multicast (optional)

This is only recommended if multicast gives you problems. Tweak the registry in the manner depicted in this screenshot (you will have to create the "Options" key), then reboot:

The registry keys are under Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Scream\Options and they're called UnicastIPv4 for the IP in REG_SZ format and UnicastPort for the port, in REG_DWORD format.

Using silence suppression (optional)

Silence suppression will avoid sending data over the network if there is silence. Once a set number of consecutive silent samples are processed, Scream will stop sending data. Add the following registry key - the suggested value is 10000 samples (~1/4 second at 44100Hz).

Tweak the registry in the manner depicted in this screenshot (you will have to create the "Options" key), then reboot:

The registry key location is the same as above, Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Scream\Options and the setting is SilenceThreshold which is a REG_DWORD that holds a sample number, like 10000 for example.

Using IVSHMEM between Windows guest and Linux host

⚠️ Note: While this setup is possible, it is generally only advised if you can't use network transfer via a standard virtio-net device. Scream on QEMU does not benefit from using IVSHMEM. It increases CPU load and latency due to the polling nature of the implementation.

This can be used as an alternative to the default networked transfer when using QEMU/KVM.

  • Add a IVSHMEM device to your VM. We recommend a size of 2MB. If you use other IVSHMEM devices, we recommend to use the same domain and bus, just varying the slot numbers. Here is a config example:
...
<device>
...
 <shmem name='scream-ivshmem'>
   <model type='ivshmem-plain'/>
   <size unit='M'>2</size>
   <address type='pci' domain='0x0000' bus='0x00' slot='0x11' function='0x0'/>
 </shmem>
 ...
</device>
...

Alternatively, for those who don't use libvirt, here is an example for the relevant parts of a QEMU command line:

...
-device ivshmem-plain,memdev=ivshmem_scream \
-object memory-backend-file,id=ivshmem_scream,share=on,mem-path=/dev/shm/scream-ivshmem,size=2M \
...
  • Install the IVSHMEM driver from here. As is Windows will automatically install a dummy driver for the IVSHMEM device. To use the IVSHMEM device the PCI standard RAM Controller in the System Devices node must be manually updated with the one downloaded above.
  • To make the driver use IVSHMEM, add a DWORD HKLM\SYSTEM\CurrentControlSet\Services\Scream\Options\UseIVSHMEM, with the value being the size of the device in MB (2, as recommended). Please note that scream will identify the device by its size, so you should only have one IVSHMEM device with that specific size. Also note that you might have to create the Options key. You can also paste this command into an admin CMD shell to create both key and DWORD: REG ADD HKLM\SYSTEM\CurrentControlSet\Services\Scream\Options /v UseIVSHMEM /t REG_DWORD /d 2
  • When the VM is running, check if the device exists as /dev/shm/scream-ivshmem, and if the user you want to run the receiver as has read access. If so, run a IVSHMEM-capable receiver with the path of the SHM file as commandline parameter, for example: scream -m /dev/shm/scream-ivshmem

Building

Visual Studio and a recent WDK are required. Good luck!

scream's People

Contributors

accumulator avatar afparsons avatar andyclegg avatar arcnmx avatar cloudlnkcn avatar darkstego avatar darthgandalf avatar delekhan avatar duncanthrax avatar epicatsupercell avatar f5oeo avatar ftrvxmtrx avatar issueat avatar ivan avatar koukuno avatar kubo avatar martinellimarco avatar moisespr123 avatar mrshoenel avatar noscript avatar opoei avatar pagten avatar pawitp avatar peterlecky avatar rolandwiebe avatar roovio avatar sharkwipf avatar snan avatar swooshycueb avatar wuestengecko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

scream's Issues

Just wanted to say thank you

This is a brilliant piece of software. Both the windows binary and the pulseaudio receiver worked flawlessly out of the box to let me stream audio from my windows VM to my linux host. Thanks for making this!

Broken audio over wired network

Hi!

This issue is probably specific to me, I was just wondering if you could give me any pointers to what might be the root of the issue. So on my network running scream sever, the audio works fine on all clients connecting through wifi but it's all the wired gigabit LAN client that having issues and it's completely unusable whether it's Linux, Raspberry PI or Windows7/10, the sound coming through is broken, garbled glitchy mess, I've ruled out everything, it must be network issue, I tried different routers even but still same results. You can still make out the sound but it's very bad. So I'm wondering where exactly could be the issue? So maybe some IGMP setting on the router? I have no idea what's exactly relevant to Scream or not. I'd appreciate any tip on what kind of network setup scream needs.

loop initial declarations are only allowed in C99 or C11 mode

I am having a problem compiling the alsa Receiver under debian 8.

cheche@casa:~/git/scream/Receivers/alsa$ make
gcc -Wall -O2 -o scream-alsa scream-alsa.c -lasound
scream-alsa.c: In function ‘main’:
scream-alsa.c:298:11: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
           for (int i=0; i<cur_channels; i++) {
           ^
scream-alsa.c:298:11: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code
scream-alsa.c:299:13: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
             for (int j = k+1; j<=10; j++) {// check the channel map bit by bit from lsb to msb, starting from were we left on the previous step
             ^
Makefile:5: recipe for target 'scream-alsa' failed

I did a 5 sec of research and I made this change on the source:

diff --git a/Receivers/alsa/scream-alsa.c b/Receivers/alsa/scream-alsa.c
index 3b9a19a..e49de7f 100644
--- a/Receivers/alsa/scream-alsa.c
+++ b/Receivers/alsa/scream-alsa.c
@@ -295,8 +295,10 @@ int main(int argc, char *argv[])
           // it goes from 0 (SPEAKER_FRONT_LEFT) up to 10 (SPEAKER_SIDE_RIGHT) following the order in ksmedia.h
           // the SPEAKER_TOP_* values are not used
           int k = -1;
-          for (int i=0; i<cur_channels; i++) {
-            for (int j = k+1; j<=10; j++) {// check the channel map bit by bit from lsb to msb, starting from were we left on the previous step
+          int i;
+          for (i=0; i<cur_channels; i++) {
+            int j;
+            for (j = k+1; j<=10; j++) {// check the channel map bit by bit from lsb to msb, starting from were we left on the previous step
               if ((cur_channel_map >> j) & 0x01) {// if the bit in j position is set then we have the key for this channel
                 k = j;
                 break;

Be aware that I do not want to start any religious war about the proper use of. i just wanted to test your driver and this small change worked for me. :-)

Can't get the SHMEM version of scream working

When I'm using the multicast config, it works, but when I switch to SHMEM variant using the registry, no sound is picked up on the receiver (host) side. I quadruple-checked the registry key name, value and type (UseIVSHMEM, DWORD=2)

The Win10 guest has the virtual audio output device and the mixer is showing sound is played.

On the host side:

  • /dev/shm/scream-ivshmem is created, and is user-readable, but a quick hexdump shows only zeroes
  • scream-ivshmem-pulse attaches to pulseaudio, but no sound is coming through

I'm not using looking-glass, scream is the only shmem entry defined for the VM

Can't test with the scream-ivshmem-test.exe since the links I found to that executable are expired :(

Am I missing something?

IVSHMEM broken on windows 7

I'm sure this is really a bug with Qemu or the IVSHMEM driver, but when drying to use scream on Windows 7, either the OS hangs or I get no audio output. I'm not exactly sure why.

Pass sound into Windows VM and from it

Hello, I really don't know if this is correct place for my problem, but I really think that you guys can help me.

My situation:
I want to switch to Linux (I use Linux as server for long time), only problem is for some gaming but I made GPU Passthrough for it and I use Looking Glass too, only problem is that how to pass effectively sound from Windows VM back to Linux host as some source and pass from Linux host some sound source like microphone to Windows VM.

I have 2 sound cards, one internal on the motherboard and second is external where I have my headphones with microphone plugged. Second sound card (external) I want for Linux, but I don't use internal one, so that internal can be used for VM, if there is any use case for it.

I don't know if scream can help me, if yes, then I have some additional questions:

  • What is latency?
  • What is performance hit? For example CPU.
  • What is quality of it?

Thank you very much

'make' results in error. (fixed, see below)

gcc -Wall -O2 -o scream-alsa scream-alsa.c -lasound
scream-alsa.c:4:10: fatal error: alsa/asoundlib.h: No such file or directory
#include <alsa/asoundlib.h>
^~~~~~~~~~~~~~~~~~
compilation terminated.
Makefile:5: recipe for target 'scream-alsa' failed
make: *** [scream-alsa] Error 1

_____________-

gcc -Wall -o scream-pulse scream-pulse.c -lpulse-simple -lpulse
scream-pulse.c:4:10: fatal error: pulse/simple.h: No such file or directory
#include <pulse/simple.h>
^~~~~~~~~~~~~~~~
compilation terminated.
Makefile:5: recipe for target 'scream-pulse' failed
make: *** [scream-pulse] Error 1

Android reciver

Hi!
Nice project
I like the idea behind it.

I have a other problem: I need to output the audio to an Android device (old smartphone). I was found here a reciver for Windows and for Linux, both of them can't be used on my system.

Thanks for all,

Surround sound upmix - feature request

I am currently using a 5.1 to 5.1 configuration.
The destination computer supports "speaker fill" - however it needs a 2.1 input signal to engage.
But since the input signal for it is 5.1 - the 'upmixing' does not engage.

The work around is to fallback to a 2.1 to 5.1 configuration. Then upon restarting the audio stream - the 'upmixing' does engage as expected. But this requires switching between 2.1 and 5.1 from source depending on the media being played - which is very inconvenient.

It would be nice to have the upmix available in the virtual sound card driver itself.
I understand that this may be beyond the scope of what this project seeks to do.

Reference material: https://chunminchang.github.io/blog/post/audio-5-1

Can Receivers work on ARM?

In fact, my USB stereo can't save the volume configuration on Linux (reconnecting it to a very small initial volume after power failure)
I had to keep the USB sound working.
But fortunately, I bought a ARM development board before, though its Linux kernel has some minor problems.
Can I cross compile Receivers for the ARM development board?(I have no experience with that)

OpenWRT issue

Hi!
Great project! I have a (specific) problem. My main intention is to I want to use my OpenWRT router as a sound server. The possible way is the PulseAudio, so I installed it on my router, so the server is working. Howewer, the pulseaudio can't run at Windows, so I searched and found the Scream, what's an alternative way to use the PC as a "PulseAudio client".

Well, now I have some problems.

Unfortunately I can't understand how to use Scream to work with my OpenWRT router, that has the PulseAudio.

How to listen by local ScreamReader?

I installed Scream driver and started ScreamReader. Default device is hardware soundcard. I expexted listen sound when I press test button in properites tab of Scream device. But I can not hear anything. When I configure Scream device to unicast to another local PC, I hear test sound.

I have router with OpenWRT. How to configure my system?

Support mono streams

Great stuff by the way, even though I didn't manage to get it working via multicast, unicast is really good :)

Can you please support mono/mixed to mono streams as well ? It would reduce the throughput requirements when the output is mono - like most BT speakers for example.

My setup is a windows box, streaming to a raspi zero w, which in turn streams to ikea eneby 30 bluetooth speaker. Using a bluetooth dongle for the windows box would have worked as well, but it is no fun :)

Can't get the networked version of scream working

When I first download scream, I assumed that the IVSHMEM version would be faster (because there wouldn't be any networking involved) and it worked perfectly, but as I later found out the normal version has noticeably less latency. When I tried to switch back though, I couldn't get it to work. Here's what I tried:

  • Removing the IVSHMEM entry from regedit
  • Completely reinstalling driver with restarting VM multiple times in between

The guest is a windows 10 VM running in qemu, it's using a virtio networking interface.
The host in running linux mint 19.2 and I'm using the included pulseaudio receiver.
I can reach the guest from the host and also the host from the guest via a ping command.

What happens:
The receiver starts (no output, doesn't crash) but I can't hear any output. It does open a sound output though on the host.

Let me know if you need more information about this issue.

Investigate IVSHMEM or VirtIO support

As discussed on #35 and on Reddit I'm studying a way to have high quality, high performance audio from windows VMs to linux host with IVSHMEM or VirtIO.

The idea is to have a registry key to swith from the default networked mode to a SHM mode.

In practice I'll need to create something that mimic savedata.cpp

I have to find the documentation for IVSHMEM or VirtIO and see how much there is to do.

The receiver should be a piece of cacke. Read from an hypotetical /dev/scream-shm , write to pulse, done.

I'll start working on this after #35 is finished and merged upstream.

linux server possible?

From what I can tell, currently it's not possible to send linux audio to a windows receiver.
Would this be possible?

I basically need bidirectional audio between a windows and linux which I currently realize using
a usb-soundcard and cross-connecting headphones <-> line-in twice.

Choice of network adapter

Hi

Great project! Couldn't find any other software able to stream system audio to another computer without massive latency and/or complexity.

But i have one issue:
On my computer i have two active network adapters, one virtual adapter for VirtualBox and one real.

Scream appears to automatically talk with the former instead of the latter, and i could not find any way to configure this, so to use scream to cast to my other physical computer i have to disable the virtualbox network to make scream choose the real adapter.

Use RTP as protocol

Hi @duncanthrax ,
could we implement some kind of "standard way" of distributing the audio stream?
RTP comes to my mind here. Then we could check for dropped packets, do recovering and so on.
This should be fairly simple to implement (on sender side).

Thanks a lot for your nice project!

Scream IVSHMEM BSODs Windows 10 with invalid configuration

If the UseIVSHMEM DWORD in HKLM\SYSTEM\CurrentControlSet\Services\Scream\Options contains an invalid value (eg because that user didn't read the next paragraph and set it to 1 instead of the available shmem MBs whistles), the system BSODs on the first playback attempt w/ SYSTEM_SERVICE_EXCEPTION. OS is Windows 10 1903 (18362.86).

While BSODing is a very noticeable notification that the driver is misconfigured, it is also most likely not the best way to do so :)

No sound on Fedora Linux 31 host from Windows 10 guest with Scream with IVSHMEM and pulseaudio..

I follow the instructions as stated, and am not getting any sound from pulseaudio. /dev/shm/scream-ivshmem is created on VM boot, but is an empty file and remains so even during audio playback with the Scream WDM listed as speakers in windows.

I think something is preventing it from writing to the IVSHMEM file.

[korey@hydra a]$ cat /dev/shm/scream-ivshmem

The above gives me no output at all. However, in my Windows VM I tried Red Hat's "ivshmem-test.exe" in virtio-win10-prewhql-0.1-161 and catting again gave me expected garbage binary output.

Otherwise I'm too tired and completely stumped on this one.

[Suggestion] Renice scream-* players on launch

I was getting occasional crackling in my audio when CPU load was high. I was able to largely resolve this when I reniced scream-pulse to -11, same as Pulse was. As a suggestion this could be done by the clients themselves.

Scream 3.3 - cannot mute device in windows

Thanks for the mono fix for 3.3, I've confirmed that it works by switching it on and observing the throughput in my router go down in half as opposed to stereo.

In the volume mixer I cannot mute it now via the mute/unmute button. Even when muted scream continues to play.

Volume control works.

Volume control on playback device without function

When the Scream WDDM device is selected as output device, one cannot control the volume/loudness. More specifically, it is only possible to switch the sound on or off. If the fader is set to volume = 0, the sound is off; any other volume setting will only turn the sound on (i.e. there is no volume level adjustment possible).

This was tested on Windows 10 (1703) x64 with the latest signed drivers.

Scream: Server's (sub)system hangs 3 sec for every packet if unicast destination in LAN is unreachable.

I've set up a dev-test environment and want to solve the issue by myself, I just need some directions as I'm not familiar with Windows Driver development.

I found that if the unicast address is set to a nonexistent IP in the same LAN as the server, CSaveData::SendData will hang for 3 seconds before sending the next packet. The result is that everything related to sound (Sound Settings, Volume Control, etc) is inhibited from launching. Captured packets show that the system tries to find the host that has the IP through ARP every time it wants to send a UDP packet and gives up after 3 seconds.

How can I make Scream stop sending UDP packets if unicast address' ARP resolution fails?

Crackling and audio delays when multiple audio samples are played simultaneously

I was trying to play a game in a win7 VM with Scream in multicast mode (IVSHMEM is also busted, but I think this is known) as audio device (5.1 channels, 48k SR setup; though it happens with other configs too) and when multiple audio events occur in quick succession, as is common in games, (new ones start before the ones playing finish) there is crackling and noticeable breaks in the received audio. So while there is no crackling in the Windows audio test and 5.1 channel mappings work great, gaming is pretty much a bust (worse than qemu's ich6 for me in this case). Any way to fix this?

Edit: Also when I provoke many simultaneous sounds they get queued for a long time and some then play seconds after their intended playback time. Like they are queued one after the other instead of being mixed together.

Support more than 2 channels

I'm not sure if this would be possible but asking doesn't hurt I guess/hope.

I'm (again) searching for a way to transfer 5.1 audio from windows to linux (as close to real-time as possible).
As this is a VM Guest <-> Host setup, I should be able to bring network latency down quite a bit fingers crossed

Given that scream just dumps raw PCM data, and PCM can hold more than 2 channels it should be possible right?
It would be just a matter of the virtual device driver to support configuration of more than 2 channels.

I'm obviously just guessing though :)

Virtual sound card has a little noise

I installed the virtual machine sound card in the virtual machine equipped with windows7 system, and used the IVSHMEM to conduct sound test. Everything was normal, but occasionally there was a little noise.This is a real headache. I wonder what all about.
Thank you so much.

Microphone Input

Can scream be made to take in microphone input from the "receiver"?

.bat fails, .inf fails

The hash for the file is not present in the specified catalog file. The file is likely corrupt or the victum of tampering.

As for the bat,

devcon failed

ivshmem receivers getting stuck at "while (header->magic != 0x11112014)"

I am running the a Windows 10 as root through libvirt (kvm/qemu), pulseaudio server is ran as non-root user on the host (Fedora 30, kernel 5.0.8-201.acspatch.fc30.x86_64 from the jlay-kernel-acspatch copr repo), root is connecting to the server as a client. For hardware I'm running a Ryzen 1700 on a B450 motherboard.

/dev/shm/scream-ivshmem exists, with permissions rw-r--r--

I tried ivshmem-pulse as non-root but had errors opening the file. I thought this was odd since I had read permission, but now I know it's trying to open with read/write access so this makes sense.

I then tried running it as root, only to discover that it's getting stuck in the while loop at line 106

Thread 1 "scream-ivshmem-" hit Breakpoint 1, main (argc=2, argv=0x7fffffffd768) at scream-ivshmem-pulse.c:106
106	      while (header->magic != 0x11112014) {
(gdb) c
Continuing.

I had one breakpoint at 106 and another at 109, which was never reached.

I gave the non-root user write permission (for /dev/shm/scream-ivshmem) and tried to run the script again, but encountered the same problem.

I thought this might have been related to hugepages, so I tried running the VM without hugepages and got the same result.

I tested the raw receiver and also got stuck in the same place (line 97).

Need clear PCM stream

Nice driver. I have been looking for such a driver for a long time.
Is it possible to make an option to send just a clear PCM stream via UDP?
I use this kind of magic on the device.
socat -u udp-listen:4444,reuseaddr,fork stdio | aplay -q -f S16_BE -r 48000 -c 2
This works well, but the software that I use in Windows has limitations.
Some devices, it is difficult to cross-compile your receiver.

Multichannel above Stereo not working on Windows 10

Mono and Stereo works, but when I change to Multichannel configuration - there is no sound.
Data is received on the receiving computer though. Using latest release v3.3

If there is a channel mapping issue, how about having a mapping config file that user can edit to establish correct mapping.

Rocksmith 2014

First, thanks a lot for this great software!

When i start Rocksmith 2014, which needs the sound devices exclusive mode turned on, it starts to stutter greatly, like 0,7 seconds on and 0,7 seconds off over and over.
The sample rate and size doesn't change because they are set identically in windows and game.
If i turn off exclusive mode the sound works but the game is unplayable in that mode because it introduces too much audio lag. The game must be played with exclusive mode on, even on native systems, to be playable.

I have tried all transfer modes in scream, multicast, unicast and ivshmem and the results are the same.

I cant see any error messages in the log output.
I'm using git of today, jun 13, 2019. I have also tried earlier releases with the same result.

In all other cases it works perfectly.

iOS Client

Hi, I'd like to help you to build an iOS client for Scream.
Is it something that you plan on doing in the long run?

MAC OS X receiver

hi, I don't know where to put this, but I was able to brew install pulseaudio and use pulseaudio receiver on mac os x... hope that helps someone

Stereo channels end up reversed on Debian Sid

Not sure if this is distro/version specific but somehow sounds from Windows get the channels reversed, meanwhile sounds played within Debian are mapped correctly.

It's not clear to me where in the chain the channels get reversed, is there any known way to play the network stream with mpv or vlc for debugging?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.