graphName "builtin_microphone_general" [def fs 48000] [def blockSize 480] [def numChansIn 2] [def numChansOut 1] [def numBeams 1] [def kAudioUnitProperty_MaximumFramesPerSlice 14] [def kAudioUnitProperty_BypassEffect 21] [def kAUNeuralNetProperty_HostIOCycleDuration_ms 104003] [def kAUNeuralNetProperty_HostIOCycleSelfBypassThreshold_ms 104004] ; ports in in out out ;Gain box preDSPGain gain 1 1 box userGain dbgn 1 1 ;fft box ANALY_MIC fft 1 1 box SYNTH_bfOut fft 1 1 ;Reblocker box reblocker reblocker 1 1 ;DCBlocker box dcBlocker (aufx dccb appl) 1 1 ; Beamformer box BF (aufx bmfd appl) 2 1 box DAS (aufx bmfd appl) 1 1 ; Noise Reduction box micSense (aufx sens appl) 1 1 box AULWB ( aufx lwbo appl ) 3 1 ; TP Mitigation nnet box TPSuppressor (aufx nnet appl) 1 1 box TPSuppressorDelay delay 1 1 box TPNoise adif 2 1 box TPNoiseAttenuation dbgn 1 1 box TPMitigatedMix asum 2 1 ; EQ box ToneMeister (aufx tmst appl) 1 1 box BrightnessCoexTM (aufx tmst appl) 1 1 ;------------------------------------- ; DSP ;------------------------------------- wire in BrightnessCoexTM ([fs] [numChansIn]) wire BrightnessCoexTM dcBlocker ([fs] [numChansIn]) wire dcBlocker reblocker ([fs] [numChansIn]) wire reblocker ANALY_MIC ([fs] [numChansIn] [blockSize]) wire ANALY_MIC micSense (freq [fs] [numChansIn] [blockSize]) wire micSense preDSPGain (freq [fs] [numChansIn] [blockSize]) wire preDSPGain (BF 0) (freq [fs] [numChansIn] [blockSize]) ;BeamItFD expects two input buses, thus we feed the same analytic mic data into its second bus. The EC beam output is not used, so there is no harm. ;Ideally we should be allowed to configure the BeamItFD with single intput bus count. See wire preDSPGain (BF 1) (freq [fs] [numChansIn] [blockSize]) wire preDSPGain DAS (freq [fs] [numChansIn] [blockSize]) wire (BF 0) (AULWB 0) (freq [fs] [numChansOut] [blockSize]) wire DAS (AULWB 1) (freq [fs] [numChansOut] [blockSize]) wire DAS (AULWB 2) (freq [fs] [numChansOut] [blockSize]) wire (AULWB 0) SYNTH_bfOut (freq [fs] [numChansOut] [blockSize]) ; Trackpad Suppression wire SYNTH_bfOut TPSuppressor ([fs] 1 [blockSize]) wire SYNTH_bfOut TPSuppressorDelay ([fs] 1 [blockSize]) wire TPSuppressorDelay (TPNoise 0) ([fs] 1 [blockSize]) wire TPSuppressor (TPNoise 1) ([fs] 1 [blockSize]) wire TPNoise TPNoiseAttenuation ([fs] 1 [blockSize]) wire TPSuppressor (TPMitigatedMix 0) ([fs] 1 [blockSize]) wire TPNoiseAttenuation (TPMitigatedMix 1) ([fs] 1 [blockSize]) wire TPMitigatedMix ToneMeister ([fs] 1 [blockSize]) wire ToneMeister userGain ([fs] 1 [blockSize]) wire userGain out ([fs] 1 [blockSize]) ; Wire the latency of the NN to the delay box to align signals wireParam (TPSuppressor 14 0 0) (TPSuppressorDelay 0 0 0) param mvol 0 wireGraphParam mvol (userGain 0) param mmut 0 wireGraphParam mmut (userGain 1) ;------------------------------------- ; Property wires ;------------------------------------- property mfrm out; Inform driver about the threshold wireGraphProperty mfrm (TPSuppressor [kAUNeuralNetProperty_HostIOCycleSelfBypassThreshold_ms]) property frsz in ; Property to be set by host to inform about the processing frame size requested. Default is set to 10ms wireGraphProperty frsz (TPSuppressor [kAUNeuralNetProperty_HostIOCycleDuration_ms])