Scream adalah driver perangkat virtual untuk Windows yang menyediakan perangkat suara diskrit. Audio yang diputar melalui perangkat ini dipublikasikan di jaringan lokal Anda sebagai aliran multicast PCM.
Penerima di jaringan dapat mengambil streaming dan memutarnya melalui output audio mereka sendiri. Penerima tersedia untuk Unix/Linux (berinteraksi dengan PulseAudio atau ALSA) dan untuk Windows.
Untuk skenario khusus tamu Windows di host QEMU, @martinellimarco telah menyumbangkan dukungan untuk mentransfer audio melalui mekanisme driver IVSHEM, mirip dengan perangkat lunak pass-through GPU "Looking Glass". Lihat bagian IVSHEM di bawah.
Scream didasarkan pada kode sampel driver audio MSVAD Microsoft. Kode asli dilisensikan di bawah MS-PL, begitu pula perubahan dan penambahan saya. Lihat LISENSI untuk teks lisensi sebenarnya.
File ZIP berisi build yang ditandatangani untuk Windows 10 pada x64, x86 dan arm64 tersedia di halaman rilis GitHub. "Penginstal" adalah file batch yang perlu dijalankan dengan hak administrator.
Microsoft baru-baru ini memperketat aturan untuk menandatangani driver kernel. Aturan baru ini berlaku untuk instalasi Windows 10 baru yang tidak ditingkatkan dari versi sebelumnya. Jika instalasi Anda tunduk pada aturan ini, driver tidak akan diinstal.
Namun, driver kernel bertanda tangan silang masih diterima oleh Windows 10 versi 1607 (dan lebih tinggi) jika salah satu pengecualian berikut berlaku:
Solusi #1: Nonaktifkan boot aman di BIOS. Untuk informasi lebih lanjut, lihat masalah ini.
Solusi #2: Tambahkan nilai registri khusus ini:
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlCIPolicy]
"UpgradedSystem"=dword:00000001
Silakan tinjau sumber daya berikut untuk informasi lebih lanjut.
Metode instalasi di atas tidak akan berfungsi pada Windows 11, karena file batch instalasi bergantung pada devcon-x64
, yang tidak kompatibel dengan Windows 11. Anda dapat menginstal driver yang tidak ditandatangani untuk Windows 11 dengan metode alternatif, memanfaatkan penerus devcon, pnputil
dan bcdedit
untuk menempatkan Windows 11 dalam Mode Uji. Untuk menginstal Scream untuk Windows 11:
bcdedit /set testsigning on
. Nyalakan ulang mesin Anda, dan pastikan Anda melihat "Mode Uji" di sudut kanan bawah wallpaper Anda./Install/driver//
. Kemudian, terbitkan: pnputil /add-driver .Scream.inf /install
.bcdedit /set testsigning off
. Kemudian, restart komputer Anda. Pastikan Test Mode sekarang dinonaktifkan dengan memastikan tidak ada pesan "Test Mode" di sudut kanan bawah wallpaper Anda. Anda sekarang akan melihat perangkat audio Scream di perangkat audio Anda, dan dapat melanjutkan dengan pengaturan klien. Unix dengan Pulseaudio, JACK atau ALSA: Tidak termasuk dalam paket penginstal. Silakan lihat README di folder Receivers/unix. Berbagai kontributor telah menulis kode untuk receiver ini:
Windows: ScreamReader, disumbangkan oleh @MrShoenel. Termasuk dalam paket penginstal pada versi 1.2. Receiver ini tidak mendukung pemetaan posisi pengaturan multisaluran (lebih dari stereo) - artinya ketidakcocokan dalam pengaturan speaker dapat menyebabkan saluran diputar pada posisi yang salah.
Penerima pihak ketiga yang mendukung aliran Scream adalah https://github.com/mincequi/cornrow. Ini terutama ditujukan untuk perangkat yang tertanam.
@ Tomek-o menulis receiver untuk sistem tertanam berdaya rendah, bagus untuk membuat speaker aktif yang terhubung ke ethernet.
Penerima biasanya dapat dijalankan sebagai pengguna yang tidak memiliki hak istimewa. Sistem penerima yang memiliki firewall masukan perlu membuka port UDP 4010 , atau port khusus apa pun yang Anda gunakan.
Semua audio yang diputar melalui perangkat Scream akan dimasukkan ke LAN lokal sebagai aliran multicast (menggunakan unicast adalah opsional - lihat di bawah). Penundaannya minimal, karena semua pemrosesan dilakukan pada tingkat kernel. Tidak ada bagian ruang pengguna.
Alamat dan port target multicast adalah "239.255.77.77:4010". Audio adalah aliran PCM mentah. Kecepatan dan ukuran pengambilan sampel default dapat diatur sebagai "Format default" di halaman properti "Lanjutan" driver. Konfigurasi speaker/saluran default dapat diatur pada dialog "Konfigurasi" pada perangkat suara Scream.
Data ditransfer dalam frame UDP dengan ukuran payload maks. 1157 byte, terdiri dari 5 byte header dan 1152 byte data PCM. Angka terakhir habis dibagi 4, 6 dan 8, sehingga jumlah sampel lengkap untuk semua saluran akan selalu masuk ke dalam sebuah paket. Byte header pertama menunjukkan laju pengambilan sampel. Bit 7 menentukan kecepatan dasar: 0 untuk 48kHz, 1 untuk 44,1kHz. Bit lainnya menentukan pengali untuk tarif dasar. Byte header kedua menunjukkan lebar pengambilan sampel, dalam bit. Byte header ketiga menunjukkan jumlah saluran yang ditransfer. Byte header keempat dan kelima membentuk DWORD dwChannelMask dari struktur WAVEFORMATEXTENSIBLE Microsoft, yang menjelaskan pemetaan saluran ke posisi speaker.
Penerima hanya perlu membaca aliran dari jaringan dan memasukkannya ke dalam wastafel audio lokal. Kernel sistem penerima secara otomatis melakukan pensinyalan IGMP yang diperlukan, jadi biasanya cukup dengan membuka soket pendengaran multicast dan mulai membaca darinya. Buffer minimal (~ 4 kali ukuran payload UDP) harus dilakukan untuk memperhitungkan jitter.
Untuk memuaskan perasaan audiophile Anda, atau untuk mengurangi pengambilan sampel ulang yang tidak perlu, Anda mungkin ingin mengatur laju pengambilan sampel dan/atau lebar pengambilan sampel yang lebih tinggi. Anda dapat melakukannya di halaman properti driver "Lanjutan", seperti yang ditunjukkan di bawah ini. Peringatan: menggunakan frekuensi pengambilan sampel yang tinggi dengan lebar 24/32 bit yang dikombinasikan dengan multisaluran dapat menyebabkan kecepatan bit yang tinggi pada jaringan. Kami menyarankan untuk tetap menggunakan 48kHz/16 bit untuk mode saluran 5.1 atau lebih tinggi, atau 44.1kHz/16 jika Anda ingin mendengarkan musik dari CD.
lebar = "700"/>
Berkat kerja keras @martinellimarco, jika sistem target Anda memiliki pengaturan speaker multisaluran, Anda juga dapat memperluasnya ke Windows. Gunakan wizard "Konfigurasi" pada dialog driver perangkat suara, seperti yang ditunjukkan di bawah ini. Harap dicatat bahwa ini hanyalah default sistem, dan perangkat lunak aplikasi (seperti permainan) mungkin memerlukan pengaturannya sendiri.
Ini hanya disarankan jika multicast menimbulkan masalah. Sesuaikan registri seperti yang digambarkan dalam tangkapan layar ini (Anda harus membuat kunci "Opsi"), lalu reboot:
Penekanan senyap akan menghindari pengiriman data melalui jaringan jika terjadi keheningan. Setelah sejumlah sampel diam berturut-turut diproses, Scream akan berhenti mengirimkan data. Tambahkan kunci registri berikut - nilai yang disarankan adalah 10.000 sampel (~1/4 detik pada 44100Hz).
Sesuaikan registri seperti yang digambarkan dalam tangkapan layar ini (Anda harus membuat kunci "Opsi"), lalu reboot:
️ Catatan: Meskipun pengaturan ini dimungkinkan, umumnya hanya disarankan jika Anda tidak dapat menggunakan transfer jaringan melalui perangkat virtio-net standar. Scream on QEMU tidak mendapat manfaat dari penggunaan IVSHEM. Ini meningkatkan beban dan latensi CPU karena sifat implementasi polling.
Ini dapat digunakan sebagai alternatif transfer jaringan default saat menggunakan QEMU/KVM.
...
...
2
...
...
Alternatifnya, bagi mereka yang tidak menggunakan libvirt, berikut adalah contoh bagian baris perintah QEMU yang relevan:
...
-device ivshmem-plain,memdev=ivshmem_scream
-object memory-backend-file,id=ivshmem_scream,share=on,mem-path=/dev/shm/scream-ivshmem,size=2M
...
PCI standard RAM Controller
di node System Devices
harus diperbarui secara manual dengan yang diunduh di atas.HKLMSYSTEMCurrentControlSetServicesScreamOptionsUseIVSHMEM
, dengan nilai ukuran perangkat dalam MB (2, sesuai rekomendasi). Harap dicatat bahwa scream akan mengidentifikasi perangkat berdasarkan ukurannya, jadi Anda hanya boleh memiliki satu perangkat IVSHEM dengan ukuran spesifik tersebut. Perhatikan juga bahwa Anda mungkin harus membuat kunci Options
. Anda juga dapat menempelkan perintah ini ke shell CMD admin untuk membuat kunci dan DWORD: REG ADD HKLMSYSTEMCurrentControlSetServicesScreamOptions /v UseIVSHMEM /t REG_DWORD /d 2
scream -m /dev/shm/scream-ivshmem
Visual Studio dan WDK terbaru diperlukan. Semoga beruntung!