今日の雑記

・前日。
運動なし。もうちょい性欲処理を早くできれば十分にいけたはずだが。
性欲処理あり。ちょっと時間がかかってしまった。
晩飯は牛肉炒め+マッシュポテト+フライドガーリック+飲むヨーグルト+コーヒーゼリー。ちょっと生寄りにしたせいか、その後のサーモンラン〜BBTAG中がちょっと気持ち悪かった。とりあえず明日からはミートソースオムレツで進める予定。
風呂は30分早く入浴。
鼻うがいあり。後述。


・鼻うがい。
初回はやはり怖さがあったが、慣れればなんか別の感覚が出てくるなぁ。痛みはないが、一番奥の壁を薄い鼻水が伝って落ちてくるような感覚があり、そのままだと喉に行きがち。
あと、容器の傾き加減と頭の傾き加減が重要か。
慣れれば少しだけ鼻から息を吸う感じで吸引しても良さそうだが、現段階では容器からの勢いでやらないとムリ。そして勢い任せだから前述の通り奥の壁にいきがち。慣れれば何か違ってくるのかもしれないが、現段階では使った後の感覚はそれほど変わらない感じかなぁ。
まぁ睡眠への影響を見たいので、ひとまずはこれで。


・睡眠時間7時間+α。
ちょっと特殊な夢を見てしまって二度寝できなかった。仕方なくしばらくグラブルして、脱力が再び深まったタイミングで二度寝した。
そういうわけで鼻うがいの効果はよくわからず。泣いてしまったのもあってそれで鼻づまりとかもなったしなー。それまでは普通に鼻呼吸できてたようにも思うが。


・朝からBBTAGの練習したりマイク→スピーカーのプログラミングをしたり。
マイク→スピーカーの方は少し手間取ったものの、まぁまぁ簡単にできた方か。もう12時なのでとっとと昼飯を買いに行かねばならぬが。
一応、コードだけメモしとくか。これと後はManifestで「マイク」のアクセス権を入れればOKだった。

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Media.Capture;
using Windows.Media.Capture.Frames;
using Windows.Media.Core;
using Windows.Media.Playback;
using Windows.Storage.Streams;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;

namespace Mic2Speaker
{
    /// <summary>
    /// マイクからの入力をスピーカーに出力するだけのプログラム
    /// </summary>
    public sealed partial class MainPage : Page
    {
        //マイク
        private MediaCapture mediaCapture { get; set; }

        //スピーカー
        private MediaPlayer mediaPlayer { get; set; }

        //コンストラクタ
        public MainPage()
        {
            this.InitializeComponent();
        }

        //初期化
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            //マイクのセットアップ
            MediaFrameSource frameSource;
            {
                this.mediaCapture = new MediaCapture();

                var settings = new MediaCaptureInitializationSettings
                {
                    StreamingCaptureMode = StreamingCaptureMode.Audio
                };

                await this.mediaCapture.InitializeAsync(settings);

                var audioFrameSources = mediaCapture.FrameSources.Where(x => x.Value.Info.MediaStreamType == MediaStreamType.Audio);

                if (audioFrameSources.Count() == 0) {
                    Debug.WriteLine("Err : No AudioFrameSources");
                    return;
                }

                frameSource = audioFrameSources.FirstOrDefault().Value;
            }

            //スピーカーのセットアップ
            {
                this.mediaPlayer = new MediaPlayer();
            }

            //マイク→スピーカーの接続
            {
                //接続
                //this.mediaPlayer.Source = this.mediaCapture;
                //this.mediaPlayer.Source = frameSource;
                this.mediaPlayer.Source = MediaSource.CreateFromMediaFrameSource(frameSource);

                //再生開始
                this.mediaPlayer.Play();
            }
        }

        //終了処理
        protected async override void OnNavigatedFrom(NavigationEventArgs e)
        {
            if (this.mediaPlayer != null) {
                this.mediaPlayer.Source = null;
                this.mediaPlayer = null;
            }

            if (this.mediaCapture != null) {
                await this.mediaCapture.StopPreviewAsync();

                this.mediaCapture.Dispose();
                this.mediaCapture = null;
            }

            base.OnNavigatedFrom(e);
        }
    }
}

そういやこの手のコードの埋め込みってブログの移行先でもちゃんと表示されるんかな。まぁそれほど重要ではないものしか書いてないと思うけども。そろそろQiitaなりGitHubなりをちゃんと使うべきかとも思うが、どうせ使うんならメインアカウントで使うしなー。
ともあれ、これでスピーカーからの音さえ録音すれば全員分の音が取れるようになった。やはり多少のディレイはあるものの、細かい息遣いとかまでちゃんと聞こえるのでWindows付属のとかで混ぜるよりはずっと良さそう?まぁ録音中に自分の声が聞こえ続けるのがなんだが、まぁそもそも少し低い音でもともと自分に聞こえてたんだから慣れるかな。


・録音部分まで自分で作るかなぁ。いちいち2つもプログラムを起動するのもなんだし。まぁバッチ作れば良いだけの話でもあるが、自作できた方が何かと都合は良いしなー。まぁ今日やるかは別として。今日はベッドの組み立てがあるからな。マットレスの移動とかも考えると結構手間はかかりそうだし。


・買い出し終了。
糖質0の麺が単品で売ってるのな。であれば、肉うどん風のものも作れるか。しかしセブンでは牛丼の具的なのが売ってなかったので、購入はしたけど試すのはまた今度。肉うどんレベルの脂質なら大丈夫だと思うし、米みたいな糖質なしで済むなら悪くなさそう。あとは食い心地だけか。


・上のやつについでに録音処理を付けようと調べてたが、あまり簡単にはできなさそうだなぁ。CoreAudioというやつを使う必要がありそうだが、少なくとも2年前くらいだと簡単には扱えなさそう。
そろそろ14時だし、早めにマットレスとか大きめの荷物はどかしておいた方が良さそうだから、今日は一旦ここまでかなぁ。


・ひとまず片付けはだいたい終わったか。あとはベッドが届けばいけそうかな?


・録音。
自作するんじゃなくて、DLLとかで扱えるものがあると良いのかなぁ。
しかしざっとググった程度では良さそうなのは見つからないか。コンソールから起動できるタイプのプログラムを探す方が良いか?


・ベッドが届いたのでまずはこっちを片付けよう。とりあえず2時間ほどかかるのを想定しているがどうなるか。14:30作業開始。
段ボールから一通り取り出すだけで10分か。まぁでもスペース的にはなんとかなりそうかな?一旦、段ボールとか梱包材とかを片付けた方が良いか。
足を付けるので30分か。しかしまぁ、あとは中央をくっつけて柵を付ければ終了だから想定より早く終わるかな?一番重そうな作業が終わったし。
合計1時間10分ほどで組み立ては完了。あとは色々と配置の調整をすれば終了かな。


・試しに早速ベッドに横になってみたが、寝返りがなんだなぁ。柵がないから横に落ちそうになるな。
やはりセミダブルじゃまだ狭いかぁ。肩幅がなぁ。
そこはなんとか慣れるしかないかぁ。あるいは何かしらフォローできるものがあると良いのかなぁ。


・仮配置まで完了。
スペース的にはだいたい想定通りか。トランクも安定して下に入る。まぁ2つ入れたらだいぶギリギリなのも想定通りだが。もうちょっと余裕があればなー。


・ダブルサイズかぁ。
理想的にはマットレスとベッドをダブルサイズに変えるのが望ましい。が、今の部屋ではとてもじゃないがダブルは置けない。
かといって引っ越すのもなー。どう考えても家賃は増えるし駅とかへのアクセスも遠くなる。スーパーとかへのアクセスも不便になるかもしれないしなー。なによりそこまでの金銭的な余裕はないし。そもそも金銭的な余裕が出るなら実家に戻りたいしなぁ。
とりあえず実家のはダブルサイズにすべきだってのは分かったので良しとしよう。それはそれとして、今のベッドまわりの運用はもう少し詰めたいところかな。


・ふーむ。ベッドの横のネジ止めのところに柵を挟み込めばいけるか?長さとかがちょっとギリギリになってしまうだろうか?強度まで考えると100均のはダメだろうなぁ。まぁ今日はもう買いに行く時間もないし、一旦今ので様子を見よう。


・なんとなく録音まわりを調べるなど。
あー。録音するやつをC++で作ってC#から呼び出すってのもあるかぁ。しかし、今はUWPからCOM APIを呼ぶ方法も用意されてるような書き方なんだよなー。だが、Microsoftの公式ページを見てもよくわからん。公式ページってだいたいこうだよなぁ。