private void MainWindow_Shown(object sender, EventArgs e) { // Create the \psi pipeline this.pipeline = Pipeline.Create(); // Create the webcam component var webcam = new MediaCapture(this.pipeline, 640, 480, "/dev/video0", PixelFormatId.YUYV); // Create the audio capture component var audio = new AudioCapture(this.pipeline, new AudioCaptureConfiguration { DeviceName = "plughw:0,0", Format = WaveFormat.Create16kHz1Channel16BitPcm() }); // Create an acoustic features extractor component and pipe the audio to it var acousticFeatures = new AcousticFeaturesExtractor(this.pipeline); audio.PipeTo(acousticFeatures); // Fuse the webcam images with the audio log energy level var webcamWithAudioEnergy = webcam.Join(acousticFeatures.LogEnergy, RelativeTimeInterval.Past()); // Overlay the audio energy on the webcam image and display it in the window. // The "Do" operator is executed on each fused webcam and audio energy sample. webcamWithAudioEnergy.Do( frame => { // Update the window with the latest frame this.DrawFrame(frame); }, DeliveryPolicy.LatestMessage); // Start the pipeline running this.pipeline.RunAsync(); }