/// <summary> /// Kinectの動作を開始する /// </summary> /// <param name="kinect"></param> private void StartKinect(KinectSensor kinect) { // RGBカメラを有効にして、フレーム更新イベントを登録する kinect.ColorStream.Enable(); kinect.ColorFrameReady += new EventHandler <ColorImageFrameReadyEventArgs>(kinect_ColorFrameReady); // 距離カメラを有効にして、フレーム更新イベントを登録する kinect.DepthStream.Enable(); kinect.DepthFrameReady += new EventHandler <DepthImageFrameReadyEventArgs>(kinect_DepthFrameReady); // スケルトンを有効にして、フレーム更新イベントを登録する kinect.SkeletonFrameReady += new EventHandler <SkeletonFrameReadyEventArgs>(kinect_SkeletonFrameReady); kinect.SkeletonStream.Enable(); // Kinectの動作を開始する kinect.Start(); // 音源推定のビームと、音源方向が変更した際に通知されるイベントを登録する kinect.AudioSource.BeamAngleChanged += new EventHandler <BeamAngleChangedEventArgs>(AudioSource_BeamAngleChanged); kinect.AudioSource.SoundSourceAngleChanged += new EventHandler <SoundSourceAngleChangedEventArgs>(AudioSource_SoundSourceAngleChanged); // 音声入出力スレッド Thread thread = new Thread(new ThreadStart(() => { // ストリーミングプレイヤー StreamingWavePlayer player = new StreamingWavePlayer(16000, 16, 1, 100); // 音声入力用のバッファ byte[] buffer = new byte[1024]; // エコーのキャンセルと抑制を有効にする kinect.AudioSource.EchoCancellationMode = EchoCancellationMode.CancellationAndSuppression; // 音声の入力を開始する using (Stream stream = kinect.AudioSource.Start()) { while (isContinue) { // 音声を入力し、スピーカーに出力する stream.Read(buffer, 0, buffer.Length); player.Output(buffer); } } })); // スレッドの動作を開始する thread.Start(); // defaultモードとnearモードの切り替え comboBoxRange.Items.Clear(); foreach (var range in Enum.GetValues(typeof(DepthRange))) { comboBoxRange.Items.Add(range.ToString()); } comboBoxRange.SelectedIndex = 0; }
static void Main( string[] args ) { try { ScriptNode node; Context context = Context.CreateFromXmlFile( "../../SamplesConfig.xml", out node ); AudioGenerator audio = context.FindExistingNode( NodeType.Audio ) as AudioGenerator; Console.WriteLine( "SanpleRate : " + audio.WaveOutputMode.SampleRate ); Console.WriteLine( "Channels : " + audio.WaveOutputMode.Channels ); Console.WriteLine( "BitsPerSample : " + audio.WaveOutputMode.BitsPerSample ); Console.WriteLine( "Press any key" ); StreamingWavePlayer wavePlayer = new StreamingWavePlayer( audio.WaveOutputMode.SampleRate, audio.WaveOutputMode.BitsPerSample, audio.WaveOutputMode.Channels, 100 ); while ( !Console.KeyAvailable ) { context.WaitAndUpdateAll(); Console.WriteLine( "SanpleRate : " + audio.AudioBufferPtr + ", DataSize : " + audio.DataSize ); wavePlayer.Output( audio.AudioBufferPtr, audio.DataSize ); } } catch ( Exception ex ) { Console.WriteLine( ex.Message ); } }
public MainWindow() { InitializeComponent(); try { // ContextとImageGeneratorの作成 ScriptNode node; context = Context.CreateFromXmlFile( "../../SamplesConfig.xml", out node ); context.GlobalMirror = false; image = context.FindExistingNode( NodeType.Image ) as ImageGenerator; audio = context.FindExistingNode( NodeType.Audio ) as AudioGenerator; wavePlayer = new StreamingWavePlayer( audio.WaveOutputMode.SampleRate, audio.WaveOutputMode.BitsPerSample, audio.WaveOutputMode.Channels, 100 ); // 画像更新のためのスレッドを作成 shouldRun = true; readerThread = new Thread( new ThreadStart( () => { while ( shouldRun ) { context.WaitAndUpdateAll(); ImageMetaData imageMD = image.GetMetaData(); // WAVEデータの出力 wavePlayer.Output( audio.AudioBufferPtr, audio.DataSize ); // ImageMetaDataをBitmapSourceに変換する(unsafeにしなくてもOK!!) this.Dispatcher.BeginInvoke( DispatcherPriority.Background, new Action( () => { image1.Source = BitmapSource.Create( imageMD.XRes, imageMD.YRes, 96, 96, PixelFormats.Rgb24, null, imageMD.ImageMapPtr, imageMD.DataSize, imageMD.XRes * imageMD.BytesPerPixel ); } ) ); } } ) ); readerThread.Start(); } catch ( Exception ex ) { MessageBox.Show( ex.Message ); } }
/// <summary> /// Kinectの動作を開始する /// </summary> /// <param name="kinect"></param> private void StartKinect( KinectSensor kinect ) { // RGBカメラを有効にして、フレーム更新イベントを登録する kinect.ColorStream.Enable(); kinect.ColorFrameReady += new EventHandler<ColorImageFrameReadyEventArgs>( kinect_ColorFrameReady ); // 距離カメラを有効にして、フレーム更新イベントを登録する kinect.DepthStream.Enable(); kinect.DepthFrameReady += new EventHandler<DepthImageFrameReadyEventArgs>( kinect_DepthFrameReady ); // スケルトンを有効にして、フレーム更新イベントを登録する kinect.SkeletonFrameReady += new EventHandler<SkeletonFrameReadyEventArgs>( kinect_SkeletonFrameReady ); kinect.SkeletonStream.Enable(); // Kinectの動作を開始する kinect.Start(); // 音声入出力スレッド Thread thread = new Thread( new ThreadStart( () => { // ストリーミングプレイヤー StreamingWavePlayer player = new StreamingWavePlayer( 16000, 16, 1, 100 ); // 音声入力用のバッファ byte[] buffer = new byte[1024]; // エコーのキャンセルと抑制を有効にする kinect.AudioSource.EchoCancellationMode = EchoCancellationMode.CancellationAndSuppression; // 音声の入力を開始する using ( Stream stream = kinect.AudioSource.Start() ) { while ( isContinue ) { // 音声を入力し、スピーカーに出力する stream.Read( buffer, 0, buffer.Length ); player.Output( buffer ); } } } ) ); // スレッドの動作を開始する thread.Start(); // defaultモードとnearモードの切り替え comboBoxRange.Items.Clear(); foreach ( var range in Enum.GetValues( typeof( DepthRange ) ) ) { comboBoxRange.Items.Add( range.ToString() ); } comboBoxRange.SelectedIndex = 0; }