|
|
|
@ -8,6 +8,7 @@ import (
|
|
|
|
|
"log"
|
|
|
|
|
"os"
|
|
|
|
|
"syscall"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
"github.com/aarzilli/nucular/font"
|
|
|
|
|
|
|
|
|
@ -66,42 +67,7 @@ func main() {
|
|
|
|
|
go updateCheck(&ui)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
paClient, err := pulseaudio.NewClient()
|
|
|
|
|
defer paClient.Close()
|
|
|
|
|
|
|
|
|
|
ui.paClient = paClient
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatalf("Couldn't create pulseaudio client: %v\n", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
go updateNoiseSupressorLoaded(paClient, &ui.noiseSupressorState)
|
|
|
|
|
|
|
|
|
|
sources, err := paClient.Sources()
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatalf("Couldn't fetch sources from pulseaudio\n")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
inputs := make([]input, 0)
|
|
|
|
|
for i := range sources {
|
|
|
|
|
if sources[i].Name == "nui_mic_remap" {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
log.Printf("Input %s, %+v\n", sources[i].Name, sources[i])
|
|
|
|
|
|
|
|
|
|
var inp input
|
|
|
|
|
|
|
|
|
|
inp.ID = sources[i].Name
|
|
|
|
|
inp.Name = sources[i].PropList["device.description"]
|
|
|
|
|
inp.isMonitor = (sources[i].MonitorSourceIndex != 0xffffffff)
|
|
|
|
|
|
|
|
|
|
//PA_SOURCE_DYNAMIC_LATENCY = 0x0040U
|
|
|
|
|
inp.dynamicLatency = sources[i].Flags&uint32(0x0040) != 0
|
|
|
|
|
|
|
|
|
|
inputs = append(inputs, inp)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ui.inputList = inputs
|
|
|
|
|
go paConnectionWatchdog(&ui)
|
|
|
|
|
|
|
|
|
|
wnd := nucular.NewMasterWindowSize(0, "NoiseTorch", image.Point{550, 300}, func(w *nucular.Window) {
|
|
|
|
|
updatefn(w, &ui)
|
|
|
|
@ -131,3 +97,48 @@ func removeLib(file string) {
|
|
|
|
|
}
|
|
|
|
|
log.Printf("Deleted temp librnnoise: %s\n", file)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func paConnectionWatchdog(ui *uistate) {
|
|
|
|
|
for {
|
|
|
|
|
if ui.paClient.Connected() {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
paClient, err := pulseaudio.NewClient()
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Printf("Couldn't create pulseaudio client: %v\n", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ui.paClient = paClient
|
|
|
|
|
go updateNoiseSupressorLoaded(paClient, &ui.noiseSupressorState)
|
|
|
|
|
|
|
|
|
|
sources, err := ui.paClient.Sources()
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Printf("Couldn't fetch sources from pulseaudio\n")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
inputs := make([]input, 0)
|
|
|
|
|
for i := range sources {
|
|
|
|
|
if sources[i].Name == "nui_mic_remap" {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
log.Printf("Input %s, %+v\n", sources[i].Name, sources[i])
|
|
|
|
|
|
|
|
|
|
var inp input
|
|
|
|
|
|
|
|
|
|
inp.ID = sources[i].Name
|
|
|
|
|
inp.Name = sources[i].PropList["device.description"]
|
|
|
|
|
inp.isMonitor = (sources[i].MonitorSourceIndex != 0xffffffff)
|
|
|
|
|
|
|
|
|
|
//PA_SOURCE_DYNAMIC_LATENCY = 0x0040U
|
|
|
|
|
inp.dynamicLatency = sources[i].Flags&uint32(0x0040) != 0
|
|
|
|
|
|
|
|
|
|
inputs = append(inputs, inp)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ui.inputList = inputs
|
|
|
|
|
|
|
|
|
|
time.Sleep(500 * time.Millisecond)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|