Made another self monitoring headset board. It only needed 1 bodge. There were no 1 meg pots in the apartment. They said 501 instead of 105. So a more easily sourced 100k pot was put in place of the 10k & a fixed 1 meg resistor was put in place of the pot. This too suffered from noise. It would need an active regulator & some spacing from the antenna. The generalpro has a lot going on to mitigate noise & it all has to be redone for anything else. It gets about as bulky as the 24 bit ADC. Fortunately, the new board can be used elsewhere.
So it went back to software monitoring. After further review, Jack uses mmap for audio buffering, so it might achieve lower latency. It came preinstalled on the pi. Start the server using:
jackd -P70 -p16 -t2000 -dalsa -dhw:1 -p128 -n3 -r48000 -s &
The key parameters are -p128 & -n3. -p128 creates 128 frames per period. -n3 creates 3 periods per buffer.
Run the following to configure the gain settings:
amixer -c 1 set 'Mic' playback mute 0 capture 100 cap
amixer -c 1 set 'Speaker' unmute 100
Then, run qjackctl to connect the microphone to the 2 speakers. The speakers successfully monitored the microphone using the software routing & the latency was low enough to be useful.
It doesn't render any text at all, but enough of the interface worked to get into the patch bay, drag & drop the microphone onto the 2 speakers. At least it proved a technique involving mmap could bring down the latency. There aren't enough examples to integrate Jack into the web app as easily as just calling the mmap routines. The only program which seems to use it is Ardour.