====== jPC Audio Features ======
The jPC has an internal mono speaker and a stereo audio 1/8" jack for external speakers.
===== Adjusting Volume =====
Use the [[https://manpages.debian.org/stable/alsa-utils/alsamixer.1.en.html|alsamixer]] utility to adjust audio levels of each. The external speaker output is labeled "Headphone" and the internal speaker output is labeled "Line Out".
{{ https://downloads.comfiletech.com/jPC/videos/jpc-alsamixer.mp4?908x572 }}
===== Playing Audio from a Terminal Console =====
To test the left and right channels individually:
* Left channel: ffplay -autoexit /usr/share/sounds/alsa/Front_Left.wav -af "pan=stereo|c0=0*c0|c1=c0"
* Right channel: ffplay -autoexit /usr/share/sounds/alsa/Front_Right.wav -af "pan=stereo|c0=c0|c1=0*c0"
===== Playing Audio in a .NET Program =====
To play audio in a .NET program, consider using [[https://www.nuget.org/packages/Alsa.Net|Alsa.NET]]
#:package Alsa.Net@1.0.10
using System;
using Alsa.Net;
using System.Reflection;
using System.Runtime.InteropServices;
class Program
{
// This is needed to map the library name that Alsa.NET searches for to the exact library file
// on the jPC.
static IntPtr DllImportResolver(string libraryName, Assembly assembly, DllImportSearchPath? searchPath)
{
if (libraryName == "libasound")
{
return NativeLibrary.Load("/usr/lib/aarch64-linux-gnu/libasound.so.2");
}
// Otherwise, fallback to default import resolver.
return IntPtr.Zero;
}
static void Main(string[] args)
{
NativeLibrary.SetDllImportResolver(typeof(SoundDeviceSettings).Assembly, DllImportResolver);
var soundDeviceSettings = new SoundDeviceSettings();
using var alsaDevice = AlsaDeviceBuilder.Create(soundDeviceSettings);
alsaDevice.Play("/usr/share/sounds/alsa/Front_Center.wav");
}
}