yProcessingClub

すみません、許してください

matlab 信号の両端を滑らかに0にする場合はコサインテーパーを使う

 実験用に正弦信号を作成することがある.例として1~1.5秒部分に5kHzの正弦波,1.5~3秒部分に10kHzの正弦波が含まれる信号の時間-振幅グラフを図1に,スペクトログラムを図2に示す(スペクトログラムを表示する部分までのmatlabコードを下に示す).スペクトログラムを見ると信号の開始時点及び終了時点において,周波数の広い範囲に大きい値が出ている(図3).これは信号が突然0→1に立ち上がる(終了時点では1→0になる)ことから,その時点においてあらゆる周波数が反応するのは当然である.しかしA[Hz]の正弦信号を入力したらA[Hz]のところにだけ値が出て来て欲しいわけで,そういうときは普通ならばスペクトログラムのウィンドウ幅を長くするなど分析側のパラメータを調整する必要がある.今回は理想的な信号が入ってくる場合の分析器の挙動を見たいので,分析側のパラメータを変えずに,実験用の信号を理想的なものに調整して綺麗な結果を出してみる.

f:id:Yuri-Processing-Club:20181003162409p:plain:w400
図 1: 信号の時間-振幅グラフ

f:id:Yuri-Processing-Club:20181003161738p:plain:w400
図 2: 信号のスペクトログラム

f:id:Yuri-Processing-Club:20181003163917p:plain:w400
図 3: 信号のスペクトログラム(説明付)



% 
% 信号を生成してスペクトログラムを表示する
% 
clear all;
close all;
clc

Fs = 32000;
SNRdB = -10;

% 信号を生成する
t1 = 1.5;
f1 = 5000;
N = Fs * t1;
t = ((1:N)-1)/Fs;
s1 = sin(2*pi*f1*t);
t2 = 1.5;
f2 = 10000;
N = Fs * t2;
t = ((1:N)-1)/Fs;
s2 = sin(2*pi*f2*t);
s0 = horzcat(s1, s2);
% 信号の前後にpad_time秒間の無音部分をくっつける
pad_time = 1;
s = padarray(s0, [0 round(pad_time * Fs)], 0, 'both');

% 時間グラフを描く
N = length(s);
t = ((1:N)-1)/Fs;
figure
plot(t, s);
title('信号の時間-振幅グラフ');
xlabel('時間(sec)');
ylabel('振幅');

% 信号のスペクトログラムを描画
Nw = 1024;
Nol = Nw*3/4;
NFFT = Nw;
figure;
spectrogram(s, Nw, Nol, NFFT, Fs, 'yaxis'); %ハミング窓
title('信号のスペクトログラム');
xlabel('時間(sec)');
colormap 'jet'
caxis_max = -20;
caxis_min = -120;
caxis([caxis_min, caxis_max]);



つまりこういうことをしたいわけである.

f:id:Yuri-Processing-Club:20181003165529p:plain:w500
図 4: 立ち上がり立ち下りが滑らかな信号の時間-振幅グラフ

信号の最初と終わりの部分だけ窓関数を掛けたような形である.ネタバレするとコサインテーパーウィンドウを掛けてやればいいわけだが,最初はハンウィンドウを前半後半に分けて信号の最初と終わりにそれぞれ掛けるというやり方を取っていた.

f:id:Yuri-Processing-Club:20181003171032p:plain:w400
図 5: ハンウィンドウ

f:id:Yuri-Processing-Club:20181003171715p:plain
図 6: ハンウィンドウを分割して信号の前後とかけあわせるやつの説明

%
% 上のコードの「信号を生成する」 の部分を下に入れ替える
%
% 信号の両端に少しだけ窓関数をかける
single_sided_window_length_sec = 0.2;% 片側窓関数がかけられる時間
single_sided_window_length = single_sided_window_length_sec * Fs;% 窓関数の片側の長さ
w = hann(single_sided_window_length * 2);% ハン窓を作成
figure
N = length(w);
t = ((1:N)-1)/Fs;
plot(t, w);
title('ハンウィンドウ');
xlabel('時間(sec)');

% 信号を生成する
t1 = 1.5;
f1 = 5000;
N = Fs * t1;
t = ((1:N)-1)/Fs;
s1 = sin(2*pi*f1*t);
% 窓関数をかける
s1(1:single_sided_window_length) = w(1:single_sided_window_length)' .* s1(1:single_sided_window_length);% 左側
s1(end-single_sided_window_length+1:end) = w(single_sided_window_length+1:end)' .* s1(end-single_sided_window_length+1:end);% 右側

t2 = 1.5;
f2 = 10000;
N = Fs * t2;
t = ((1:N)-1)/Fs;
s2 = sin(2*pi*f2*t);
% 窓関数をかける
s2(1:single_sided_window_length) = w(1:single_sided_window_length)' .* s2(1:single_sided_window_length);% 左側
s2(end-single_sided_window_length+1:end) = w(single_sided_window_length+1:end)' .* s2(end-single_sided_window_length+1:end);% 右側

s0 = horzcat(s1, s2);

% 信号の前後にpad_time秒間の無音部分をくっつける
pad_time = 1;
s = padarray(s0, [0 round(pad_time * Fs)], 0, 'both');

ハンウィンドウを分割して信号の前後にかけたものの時間-振幅グラフを図7,スペクトログラムを図8にそれぞれ示す.0→1に滑らかに変化しているので,スペクトログラムで欲しいところだけに信号が表示されている.

f:id:Yuri-Processing-Club:20181003174159p:plain:w400
図 7: 立ち上がり立ち下りを滑らかにした信号の時間-振幅グラフ

f:id:Yuri-Processing-Club:20181003174145p:plain:w400
図 8: 立ち上がり立ち下りを滑らかにした信号のスペクトログラム



こんなめんどくさいこと,やる?と思い上司に上手いやり方は無いか相談したところ,そういう場合は普通はコサインテーパーを使うとのこと.jp.mathworks.com
コサインテーパーウィンドウは開始部分及び終了部分がコサインの形をしていて,真ん中あたりは値が1のウィンドウである.信号と同じ長さのコサインテーパーウィンドウを用意して,信号にかけてやればOKである.
f:id:Yuri-Processing-Club:20181003180521p:plain:w400
図 9: 立ち上がり立ち下りを滑らかにした信号の時間-振幅グラフ(コサインテーパー使用)

%
% 上のコードの「信号を生成する」 の部分を下に入れ替える
%
single_sided_window_length_sec = 0.2;% 片側窓関数がかけられる時間

% 信号を生成する
t1 = 1.5;
f1 = 5000;
N = Fs * t1;
t = ((1:N)-1)/Fs;
s1 = sin(2*pi*f1*t);
% 窓関数をかける
window_signal_length_ratio = (single_sided_window_length_sec*2)/t1;% 窓関数がかけられる時間の比
w = tukeywin(N, window_signal_length_ratio);
figure
plot(t, w);
title('コサインテーパーウィンドウ');
xlabel('時間(sec)');
s1 = w' .* s1;

t2 = 1.5;
f2 = 10000;
N = Fs * t2;
t = ((1:N)-1)/Fs;
s2 = sin(2*pi*f2*t);
% 窓関数をかける
window_signal_length_ratio = (single_sided_window_length_sec*2)/t2;% 窓関数がかけられる時間の比
w = tukeywin(N, window_signal_length_ratio);
% 5kHzのコサインテーパーウィンドウと同じなのでグラフは省略
s2 = w' .* s2;

s0 = horzcat(s1, s2);

% 信号の前後にpad_time秒間の無音部分をくっつける
pad_time = 1;
s = padarray(s0, [0 round(pad_time * Fs)], 0, 'both');

f:id:Yuri-Processing-Club:20181003180010p:plain:w400
図 10: コサインテーパーウィンドウ

f:id:Yuri-Processing-Club:20181003175920p:plain:w400
図 11: 立ち上がり立ち下りを滑らかにした信号の時間-振幅グラフ(コサインテーパー使用)

f:id:Yuri-Processing-Club:20181003180853p:plain:w400
図 12: 立ち上がり立ち下りを滑らかにした信号のスペクトログラム(コサインテーパー使用)



明かりを消して寝よう:スタンフォード式 最高の睡眠


スタンフォード式 最高の睡眠

より良い睡眠を取るための本。 このような本は書店で目立つ位置に置かれており、過労民族の日本人もどうやら睡眠や休息について意識し始めたっぽい。


私の睡眠スタイルはカスである。
・敷き布団が無い。タイルカーペットの上に寝ている。
・部屋の照明をつけたまま寝ている。(視覚への刺激がある)
・アニメや音楽を流したまま寝ている。(聴覚への刺激がある)
・寝る時間が不規則である。
というか寝落ちするギリギリまでアニメを見ていたりツイッターをやったりしていて、眠気が限界まで来たらその場でそのまま寝るというスタイルである。 起きている状態と寝ている状態がかなり曖昧なのである。


大学時代からこういう感じだったので別にいいやと思っていたが、
最近
・日中常に眠い
・足の痛みが取れない
メンタルをやらかした(病院に行った)
等の不調に悩まされるようになった。

これではまずいと思い、睡眠について真面目に考えるようになり、本を読んでみたわけである。


本で紹介されているTipsの中で簡単に実践できそうなものを探したところ、どうやら明かりを消して寝るというのが良いらしい。 寝ている人にライトを照らすと無意識に布団を頭まで被るなど光を遠ざける行動を取る。 睡眠時に体は明かりを拒んでいるというわけである。

さっそくアニメを垂れ流すのをやめて部屋を暗くして寝てみたところ、びっくりするほど目覚めが良くなった。 日中ほぼ眠気が訪れず、昼寝も必要無くなった。 (えっ、こんな簡単に日中のパフォーマンス向上するの?)と驚く限りである。 と同時に(なんでこんな簡単なことを今まで実践していなかったの?)と後悔した。


睡眠はどうやら大事っぽい。 私レベルに睡眠を軽く考えていた人(布団すら無い人)はそうそういらっしゃらないと思うが、 日ごろ眠い、ダルい、疲れが取れないと感じている人は睡眠の質を高めると解決するかもしれない。

以上





それにしても「明かりを消して部屋を暗くして寝るとよく眠れますよ」って異世界世界の主人公のセリフみたいだし、「マジか、知らんかったブログ書くわ」っていう私の反応も異世界の住人のそれだと思う。(もちろん本ではこのような基礎的なTipsだけでなく、もっと目からうろこな話も載っている)


マンガでぐっすり! スタンフォード式 最高の睡眠

メモ:SBI証券 口座開設 マイナンバーは住民票で代用可

メモ.

投資ではSBI証券を利用しており,引越に伴ってSBI証券上で住所変更手続きを行った.
住所変更をする場合は
マイナンバー確認書類
・個人情報確認書類
を再提出する必要がある.

口座開設の際はマイナンバー確認書類として通知カードを使用した.
しかし,通知カードが見当たらない.
マイナンバー入り住民票で代用できるとは思うが,
WEB上のマイナンバー確認書類の選択画面では
マイナンバーカードか通知カードの2通りしか選べない(マイナンバー入り住民票を選べない)

SBI証券に電話で確認したところ,
マイナンバー確認書類で通知カードを選択し,通知カードをアップロードする場所にマイナンバー入り住民票の画像をアップロードし,
個人情報確認書類にも同じ画像(マイナンバー入り住民票)をアップロードすればOKとのことだった.

 

おそらくどの証券口座でも同様だろう.(多分)

要はマイナンバーが確認出来れば何でも良いのである.

 

さっそくマイナンバー入り住民票をアップロードした.
手続きが成功したかについては結果が分かり次第追記する.

メモ:ダウンサンプリングの時のやつ

メモ書き.

音声ファイルなどをダウンサンプリングする際, エイリアシング防止のためローパスフィルタにかけるわけだが, これをデシメーションフィルタとも言うっぽい.

とりあえず単語だけ覚えておく.

ガルパンBDBOXを予約

ガルパンのBDBOXを予約。
amazonで2万円とアホみたいに安く売られていた。

単品BDは持っているのだが、今回のBDBOX化で
音声が5.1chにパワーアップ(単品BDでは2.1ch)
・キャスト、ミリタリースタッフのコメンタリ新録
・不肖・秋山優花里の戦車講座新録
と、単品BD持ちにも嬉しい仕様。

特に単品コンポでホームシアター組んでいる身としては音声5.1ch化が最高。
センター音声があるとなしではセリフの聞き取りやすさが段違いである。
後ろから音が聞こえるってのも良いけど、それよりセンターの良さを知って欲しい。
ということで、ホームシアター組んでいない人はサウンドバーを導入してみて欲しい。

話が脱線したので元に戻すが、
BDBOXはコメンタリが新録となり、単品BDにもともと入っていたコメンタリと置き換わるので、単品BDの完全上位互換にはなり得ない模様。

あと、単品BDに入っていた「不肖・秋山優花里の戦車講座」がBDBOXにも入るかは不明。

この点差し引いても買いだろう。

bvc.bandaivisual.co.jp

> ◆設定資料集
> 第63回戦車道全国高校生大会選手名鑑[復刻版]
> …各キャラクタ-のプロフィール、名シーン、美術設定等を収録
>
> 第63回戦車道全国高校生大会メカニック名鑑[復刻版]
> …大洗女子学園をはじめとする登場戦車のスペック、名シーンはもちろん戦車以外の車輛など細部にわたって収録
>
> ※2014.10.17発売「ガールズ&パンツァー 完全設定資料集」を一部修正し、復刻したものになります。

バンダイビジュアルのサイトでは設定資料集の復刻版が2冊ついてくるっぽい。
また、

> ●賞品
> ■AV賞
> 「ガールズ&パンツァー 最終章」コラボ・ヘッドフォン「SE-MHR5」 …5名様
> ■キャスト賞
> 渕上舞さん、茅野愛衣さん、尾崎真実さん、中上育実さん、井口裕香さんサイン入りB2告知ポスター …5名様
> ■スタッフ賞
> 水島努監督・杉本功サイン入りガルパン本A …3名様 / 水島努監督・杉本功サイン入りガルパン本B …3名様
> ■BNARTS賞
> B2告知ポスター …20名様

抽選で豪華景品が当たるキャンペーンも。

ただしamazonでの販売価格と比べると1.5倍も高いので、
私は迷うことなくamazonにした・・・。




Girls Und Panzer: TV Collection [Blu-ray] [Import]

ちなみにこっちは海外版BD。PS3とかPS4で再生できる。
音声は日本語/英語で切り替え可能。
字幕はおそらく音声を日本語にしている場合は英語字幕が強制的に入ると思う。
レビューを見ると、プラウダ戦の「カチューシャ」の歌が挿入されていない模様。
本編が放送版か国内BDに収録されてる作画修正版かは不明。
私は海外版BDを買って未開封で積んでいるので検証しようと思えば出来るが、たぶん先駆者がいると思うのでやらない。
この辺をもし検証して欲しい方がいたらコメント欄にて「検証して」など適当にコメントしてくれれば行う。

たいらんくんVTuber化計画 進捗報告3

yuri-processing-club.hatenablog.com

yuri-processing-club.hatenablog.com

 

3回目の進捗報告をさせていただく。

さっそくだが、動画を投稿した。

 

www.youtube.com

非常に稚拙な動画ではあるが、

VTuberとして動画を投稿できたので、とても達成感がある。

 

 

さて、前回の進捗報告の続きを報告させていただく。

 

 

 メタセコイア

PmxEditor_0222

blender

unity

という流れでモデルの変換作業を行い、なんとかunityにモデルデータを持ってこられた。

白目が濁っているなど、大至急対処すべき問題はあるが・・・

 

unityちゃんのアニメーションデータを使って歩かせたりポーズをとらせてみたところ、意外と普通に動いてくれた。

 

目や口の動きは未実装なので後日実装していく・・・

 

上の動画はテスト用のためキャラクターの大きさなどは考えていなかったが、

隣のunityちゃんと比較すると大きかった。

 

 そのため小さくしたわけだが、フォロワーさんから「小さくするな、戻せ」と言われてしまい、無事に巨女属性が付与されることとなった。

 

 

f:id:Yuri-Processing-Club:20180603112654p:plain

もはや逆切れ気味に大きくした図。

 

 

 スカートに物理演算を実装。

挙動が荒ぶったり足がスカートを貫通したりする問題はあるが、

まぁおおむね大丈夫だろう。

 

 

 

f:id:Yuri-Processing-Club:20180603115413p:plain

街を作成。

Simple Townというアセットを課金(5ドルくらい)して手に入れた。

そこからビルと道路を適当に置いて街っぽいものを作った。

 

f:id:Yuri-Processing-Club:20180603115657p:plain

たいらんくん(巨大)を人間目線で見られるように、操作キャラクターを別個に設けた。

f:id:Yuri-Processing-Club:20180603115903p:plain

ゲームを実行中、FPS視点で見たたいらんくんである。

巨大っぷりがよく分かる。

 

今後のunityゲーム作りの予定としては、

・たいらんくんを敵モンスターとして登場させ、街を破壊してもらう

こんなところか。

ネタについてはいくつか考えがあるが、ネタバレになるのでここでの報告は控えさせてもらう。

 

さて、unityゲーム作り進捗についてはカスであるが、

とりあえずyoutubeにて自己紹介動画を上げたいということで、

進捗0のスカスカゲームを撮影することにした。

 

f:id:Yuri-Processing-Club:20180603120720p:plain

Vegas Proというソニーの動画編集ソフトにて動画作成。

これは数万円もする個人で買うにはなかなかしんどい価格のソフトウェアなのだが、

なんかのセールで5千円で売っていたことがあり、

当時は動画編集なんてやるつもりはなかったが、安いから買ってみたのである。

今までインストールすらしていなかったのだが、

まさか自分がVTuberになり、そのために動画編集ソフトを使う日が来ようとは・・・

ここから何らかの教訓が得られるような気がしたが、気のせいであった。

 

f:id:Yuri-Processing-Club:20180603121637p:plain

動画の構成だが、表情モーションが無い、VRゴーグルが無いなどの無い無い尽くしのため、苦肉の策で顔+台詞窓を用意した。

本当はモーショントラッキングでわちゃわちゃ動かしたいのだがしょうがない。

 

 

f:id:Yuri-Processing-Club:20180603121250p:plain

音声については地声を収録した。

スーパーコミュ障で話すのがつらいので非常に厳しい作業であった。

音量がものすごい小さくなってしまい、

動画のコメントでも指摘されてしまった。

次回はもう少しがんばって大きい声でしゃべる・・・

 

BGMは「DOVA-SYNDROME」のフリーBGMを使用させていただいた。

dova-s.jp

 

f:id:Yuri-Processing-Club:20180603122043p:plain

サムネを作成。(Gimpにて)

こう見るとサムネ詐欺っぽさが無いでもない。

 

www.youtube.com

動画を投稿。

 

 

 

およそ一ヶ月でゼロから動画投稿までを終えることが出来た。

次回の動画作成に向け、主にunityのゲーム作りをがんばっていこうと思う。

 

 

そしてこれは干し芋リスト。

支援いただけるとほんとうに助かります。

http://amzn.asia/02wDgH2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

たいらんくんVTuber化計画 進捗報告2

前回に引き続き、たいらんくんVTuber計画の進捗報告をさせていただく。

f:id:Yuri-Processing-Club:20180516204919p:plain

5月16日時点での進捗はこんな感じ。

引き続きモデリングしていく。

 

 

f:id:Yuri-Processing-Club:20180525211126p:plain

ツインテ棒を消してみると、ツインテ棒の根元の部分、ヘッドパーツの穴の部分にお団子が入るのではないかと思いつく。

 

f:id:Yuri-Processing-Club:20180525211444p:plain

f:id:Yuri-Processing-Club:20180525211516p:plain

お団子を入れてみた結果。

かなりかわいくなったので、ツインテ棒をやめてお団子を装備することにした。

 

f:id:Yuri-Processing-Club:20180525211705p:plain

髪にテクスチャを貼り付け。

ピンク~青のグラデーションとした。

 

f:id:Yuri-Processing-Club:20180525212358p:plain

気分転換に、作成途中のモデルデータをunityで読み込ませてみた。

パースの違いで見え方に大きな差があった(顔がでかく見える)が、おおむね問題なく読み込めているので良しとする。

 

 

f:id:Yuri-Processing-Club:20180525211920p:plain

肌もテクスチャをつけた。

ほっぺたをほんの少し赤らめる。

洋服、ネクタイのモデリングを完了。

 

 

 

f:id:Yuri-Processing-Club:20180525212108p:plain

ツイッターのアイコン用に背景を変更し、輪郭線をつけ、画像を撮影した。

よく見ると首の根元が途切れていて植木鉢から生首が生えている感じがするが、

まぁツイッターのアイコンくらいの大きさならそんなに気にならないだろう。

 

 

 

 

f:id:Yuri-Processing-Club:20180525212655p:plain

ヘッドパーツにハッチを取り付けた(画像左)

だが予想以上に不評だったので撤回。

(マシュマロや直接リプライでフォロワーさんから「お団子丸出しのほうが良い」と言われた)

 

画像右のお団子丸出しスタイルで確定する。

 

 

f:id:Yuri-Processing-Club:20180525212906p:plain

ヘッドパーツ有りor無しと、お団子orツインテ棒で4パターンを実装できた。

 

 

f:id:Yuri-Processing-Club:20180525213259p:plain

直したい部分はたくさんあるが、とりあえずモデリングは完了とした。

 

 

 

 

 

 

次はボーンの作成である。

f:id:Yuri-Processing-Club:20180525214517p:plain

ボーンについてはメタセコイアに人体用のテンプレートが標準実装されているので、これをそのまま使った。

テンプレートは「MMD」を使用。

unityでも使えるかは知らないが、とりあえず暫定的にMMDにて進める。

 

テンプレートにモデルを合わせていく。

 

 

f:id:Yuri-Processing-Club:20180525225301p:plain

ボーンの調整が終わり、ポーズをつけてみた。

 

f:id:Yuri-Processing-Club:20180525214954p:plain

腕を高く上げると肩や脇がおかしい動きになるなど、まだまだ調整が必要である。

 

 

 

f:id:Yuri-Processing-Club:20180525215205p:plain

スカートも同様。

足を上げるとスカートを貫通してしまう。

 

この辺は物理演算でやったほうがいいっぽい???

 

 

 

 動作確認として、MMDにてマトリョシカというボカロ音楽のダンスを躍らせてみた。

予想以上に可愛く動いており、とても満足。

 

 

マトリョシカをテト、リツに踊らせてみた モーションファイル

マトリョシカをテト、リツに踊らせてみた モーションファイル - BowlRoll

 使用したモーションデータはこちら。

 

 

 

進捗報告は以上となる。

今月中に表情や口パク関係の実装を行う予定。

 

 

 

 

 

 

 

 

 

 

進捗報告ではないが、VTuberデビューもしてない内からファンアートを描いていただいたのでご紹介させていただく。

非常にありがたい限りである。

 

また、多くの方にモデルを「かわいい」と言っていただいて、とても励みになった。

 

早くVTuberデビュー出来るよう、頑張ろうと思う。

 

 

yuri-processing-club.hatenablog.com