Ejemplo n.º 1
0
        /// <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;
        }
Ejemplo n.º 2
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 );
            }
        }
Ejemplo n.º 3
0
        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 );
            }
        }
Ejemplo n.º 4
0
        /// <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;
        }