にじさんじライバーについて語るオタク(n+1) 幕間「にじ周辺のV編」

この記事はCCSアドベントカレンダー2020の22日目の記事です。
 
 前回の記事はにじさんじオタクのにじさんじ語りでした。
 
みなさんはろーぼー!
どうもこの1年VにドハマリしたT.C.です。
今回のこの記事ですが、(一部顔も知らない)後輩たちがにじさんじについて語りまくってくれました。
今回記事を考えるにあたってどーせにじさんじは前までのオタクが語りきっているだろうとは思ったので視点を変えてにじさんじ周辺のVについてにじさんじとのつながりも含めて紹介したいと思います。
 
 

そもそも最近のVTuber業界ってどんな感じなの

今回色々なVを語るに当たり、最近の企業V、個人Vなどについて簡単に図解したいと思います。

f:id:yoooomaruuuu:20201223092205p:plain

Vtuber及び周辺業界について
 
Vtuber初期、今で言う個人勢が基本だった時代には四天王と言われた今のVtuberブームの火付け役となったVtuberがいました。彼らは当時では珍しかった見た目で各々の個性の出た動画を出し、話題になっていきました。
そして中期になると、いくつかの企業が参入し始め、「企業所属V」という概念が現れました。また、動画中心だったVtuber業界で「配信中心」というVtuberが現れ始め、徐々に業界に浸透していきました。
 
そして現在、Vtuberは2つの企業所属グループが2大巨頭として存在しています。
  • にじさんじ(いちから株式会社運営)

  • hololive(Cover株式会社運営)

また、 上記の2大巨頭以外にも数多くの企業、個人勢が幅を利かせており、Vtuberは今やサブカル系コンテンツの一大ジャンルとなりました。それに目をかけてVtuber界隈外からも様々な接触が行われ始めました。

  • Esports業界(配信メインのVtuberによるゲームの広告、また大会などの参加)

  • 絵師界隈(バーチャル世界での体提供、絵師自体がVになる場合も)

  • 音屋・映像屋・歌い手界隈(歌ってみたなどのMix、動画制作など)

Vtuber業界は日々進化していっております。

 
 

本題

日々進化していっているVtuberの中でも、今までこのアドカレでは2大巨頭の一角である「にじさんじ」について3度語られてきました。自分もつづけてにじさんじについて語ったるか~くらいの気持ちでいました。しかし前項で述べたとおりVtuberにじさんじだけではないです。これだけの進化した界隈・文化、流石ににじさんじだけではもったいない、他のVも紹介したい。。。

ただせっかくにじさんじの流れを後輩たちが作ってくれたので、自分はにじさんじとコラボしたVに焦点をあてて紹介していきたいと思います。

 

(後輩が作った道筋)

note.com

note.com

 

 

ここでは企業ごとにできるだけ多く紹介していきたいと思います。

以下からはVtuberのことをVと言っていきます。

 

hololive(ホロライブ)

ホロライブはCover株式会社が運営しているVtuberグループになります。にじさんじとほぼ同時期にデビューしている「ときのそら」を中心に据え、アイドル路線を強めに押しています。にじさんじと似たように生配信を中心にしたVが多いです。にじさんじと似通っている部分は多いですが、リアルイベントよりも配信偏重な活動を重視しており、また総数が少ないこともあってメンバー間の結びつき、コラボがより強くなっているグループです。

 

大空スバル

www.youtube.com

主なコラボ相手:舞元啓介

ホロライブ2期生所属の元気系のJKです。アイドル路線を突き進むホロライブの中でもエンタメ性を重視するような配信を多く行う我が道を行くVtuberです。

ホロライブとにじさんじの繋がりにおいて、もっとも切っても切り離せないのが彼女です。彼女がデビューしたての時期に、同じくデビューしたてでまだ人気が出ていなかった頃の舞元に対してツイッター接触を図る、というのは有名です。其の接触から数々の地獄のようなコラボを行ってきており、最近でもスバルの担当絵師である「しぐれうい」とともに「大空家」というグループで配信を行うなど、良い関係を築き上げています。今でこそよく外部でのコラボを行っていたにじさんじとの交流の火蓋を切ったのは彼女とも言えなくもないです。

このあまりにも常軌を逸した行為によりそれぞれの名が轟いたようにも思えます。また、ホロライブとにじさんじが初めてコラボしたグッズはこの二人のグッズだったりします。

 

www.youtube.com

 

www.youtube.com

ロボ子さん

www.youtube.com

主なコラボ相手:樋口楓、ラトナプティなど

はろーぼー!バーチャルロボットYoutuber。元々はkuromaru9 (@kuromaru9) | Twitter氏制作によるオリジナルキャラクターとして作品を投稿されていた存在でした。後にホロライブからデビューすることが決定し、魂の募集をされた後にデビューしています。ゆったりとした喋り方、のほほんとしたトーク、ときにテンションの高いツッコミでの人気を博しています。Apexをよくやっており、エイムは定評あり。

にじさんじとの関わりとしては樋口楓と歌ってみたを投稿した経験があります。また、最近ではすもも、ラトナプティとともにApex配信をするなど交流が出来ています。

www.youtube.com

www.youtube.com

 

星街すいせい

www.youtube.com

主なコラボ相手:戌亥とこ

すいちゃんはー!?「今日もかわいい!!!!」 彗星の如く現れたスターの原石!ホロライブの代表するアイドルVtuber。元個人勢であり、活動を数ヶ月続けた後にホロライブ入が決定しています。とにかく歌がうまく、普段の高い喋り声からは想像がつかないくらい芯の通った力強い歌声が魅力です。

にじさんじ内のコラボ相手としては現状では戌亥とこのみです。しかし、戌亥とはあんスタつながりでとても中がよく、すいちゃんのラジオのパーソナリティとして定期的に参加しており、最近は二人でのYoutubeでの番組も定期配信しております。また、戌亥とこのライブにおいて、恐らく初めての「にじさんじ主催ライブでのホロライブ所属の参加者」として二人で歌を披露しました。

www.youtube.com

www.youtube.com

※すいちゃんが配信を休んでいるときに戌亥が立てているマイクラサーバー「いぬいキングダム」に唐突に現れて撮れ高を作って消えていった回の切り抜き

www.youtube.com

 

 

白上フブキ

www.youtube.com

主なコラボ相手:初期Seeds1期生、本間ひまわり、月ノ美兎など

ホロライブのバーチャルきーつねっ!ホロライブが誇るオタクVであり、登録者数も最近抜かれるまで1位を走り続けたきつねVです。ホロライブの外交担当とも言えるほどに外部のVとコラボなどで交流を数多く行っております。

そんな彼女はデビュー時期がにじさんじのSeeds一期生と近かったため、Seeds一期生と結構仲良くやっていたみたいです。

 

www.youtube.com

www.youtube.com

 

※先日行われた大規模コラボ宇宙人狼 参加者の全視点あるので探してみてね

www.youtube.com

 

夏色まつり

www.youtube.com

主なコラボ相手:星川サラ、黛灰、宇志海いちごなど

ホロライブ1期生のセンシティブモンスター。酒を飲んでも飲まなくても下ネタを繰り出す軽快なトークをすると思ったらステージでは正統派アイドルのような顔を見せてきたりします。貧乳なことを度々いじられるし自分でもいじったりしてます。

にじさんじでは星川サラとは特に仲がよく、3D配信でも祝に駆けつけてました。黛灰推し。いちごちゃんとは第2回CRカッブにてチームとして共闘していました。

www.youtube.com

www.youtube.com

www.youtube.com

 

百鬼あやめ

www.youtube.com

主なコラボ相手:戌亥とこ、笹木咲

ホロライブ所属、神と共に幽世からやってきた鬼神。かわ余。ホロライブ内ではトップクラスの天然であり、可愛らしい所作や発言が魅力です。3Dの所作が評判いいのかホロぐら出演率は高めだったりします。 

そんな天然鬼は戌亥とたまにコラボを行っています。また、一度笹木とも3Dでわちゃわちゃコラボをしていました。

www.youtube.com

※笹木とのコラボはアーカイブ非公開

www.youtube.com

 

湊あくあ

www.youtube.com

主なコラボ相手:椎名唯華、笹木咲など

ホロライブ2期生の陰キャメイド。その陰キャっぷりはオフコラボやプライベートの話のたびに新たな逸話が生まれるほど。ゲームの腕前はかなりのものであり、ApexLegendsではホロライブ内でも数少ないソロダイヤ到達者です。

椎名唯華と昔から多くの交流があり、椎名唯華のガチ恋勢です。其の関係で笹木とも何度かコラボをしています。椎名と中のいい猫又おかゆ(後述)も巻き込んで4人コラボなどを行っております。

www.youtube.com

www.youtube.com

 

癒月ちょこ

www.youtube.com

主なコラボ相手:緑仙など

ホロライブのエロセクシー保険医吸血鬼。大人な外見とに反して舌っ足らずな声が特徴的です。一時期はArk廃人であり、一日10時間近くやっていたとか。。。

彼女はVtuber身体測定という企画シリーズを定期的に行っており、身体測定と題して数多くの外部のVとコラボしてきています。コラボ数はホロライブ随一とも言えるかもしれないです。

www.youtube.com

www.youtube.com

 

宝鐘マリン

www.youtube.com

主なコラボ相手:アンジュ、早瀬走

ホロライブ3期生のコスプレ女女海賊。17歳でありながらサブカル系にものすごい深い知識があり、また其のハイテンショントークやお酒でふにゃふにゃなトークが魅力です。

アンジュと酒のんでドリクラをしたり、早瀬とBLトークを繰り広げたりコラボでも深いオタクを見せつけていっています。

www.youtube.com

www.youtube.com

 

.Live アイドル部

電脳少女シロ

www.youtube.com

主なコラボ相手:月ノ美兎、本間ひまわりなど

.Liveが運営するアイドル部が誇るアイドルを目指す女の子VtuberVtuber四天王の一角であり、Vtuber初期から活躍している存在。彼女を憧れてVtuberになりました、といったVtuberが数多く存在しています。(にじさんじ内では舞元が有名です。)

そんな彼女は自枠でコラボする際にアイドル部だけでなく個人勢やにじさんじ、ホロライブなどのVたちを呼んでおり、にじさんじでは比較的月ノ美兎、本間ひまわりが呼ばれていることが多い。

www.youtube.com

 

※舞元の3D配信にてコメントをよこしてくれたこともあります。

www.youtube.com

 

774inc

因幡はねる

www.youtube.com

主なコラボ相手:緑仙、郡道美玲、舞元啓介など

774incが運営する動物モチーフのVtuberユニット、「有閑喫茶あにまーれ」にてリーダー、店長、組長。Vtuber業界の中でも屈指の交友関係をもっており、同じ774内のブイアパやハニストだけでなくホロライブ、にじさんじ、アイドル部から個人勢に至るまでのVtuberとコラボ経験があります。彼女のシリーズ企画である「Vのから騒ぎ」は元番組をオマージュしたようなトーク番組であり、毎回様々なゲストを呼んでいます。

数多くのVとコラボした彼女ですが、にじさんじ内では比較的緑仙とのコラボが多いよう思えます。また、最近では雀魂関係で郡道美玲、舞元啓介とも交流が深いです。

www.youtube.com

www.youtube.com

www.youtube.com

 

周防パトラ

www.youtube.com

主なコラボ相手:でびでびでびる、鷹宮リオン、椎名唯華など

774incが運営する悪魔をモチーフとしたVtuberユニット、「ハニーストラップ」にて最も有名なVtuber。雑談、飲酒配信、ゲーム配信など幅広いが、中でもASMRが多いです。「周防パトラといえばASMR」という印象が強い人も多いかと思います。

そんな彼女は悪魔つながりででびでびでびるとのコラボを定期的にしています。お酒好きということで通ずるところがあるのかも。。。また、彼女は作詞作曲家としても活躍しており、にじさんじ内にも彼女に作曲してもらっているVがいたりするほどです。

www.youtube.com

www.youtube.com

 

※彼女が作曲やMixを手掛けた動画

www.youtube.com

(以下の配信内で新曲披露)

www.youtube.com

 

ブイアパ

杏戸ゆげ

www.youtube.com

主なコラボ相手:勇気ちひろ、エクスアルビオ、社築など

774incが運営する個人Vtuber、クリエイター支援プロジェクトに所属している、超高性能ヒューマノイドの少女。可愛い見た目にふわふわした声、それでいてゲームをするときは真剣です。最近よくプレイしているApexでもVtuber会では上位の実力を持っています。

そんな彼女はやはりApexでの関わりが多く、ご存知Apexジャンキー勇気ちひろと多くコラボを行っています。また、CRカップでは第2回でエクスアルビオと、第3回では社築とチームを組んでいます。

www.youtube.com

www.youtube.com

 

のりプロ

犬山たまき

www.youtube.com

主なコラボ相手:夢追翔、舞元啓介など

漫画家「佃煮のりお*1」が個人で運営するVtuber事務所、「のりプロ」にて1期生を務める男の娘Vtuber。司会進行に定評があり、本人が企画したコラボの進行役を務めることが多いです。また、比較的下ネタも多く、神楽めあ、夏色まつりとは波長が合っているのかもしれないです。(ん?なんか佃煮のりおと声g…?)

 そんな彼は同じ司会進行を務めることが多い夢追翔、夫婦ネタで一時期殴り合っていた舞元啓介とコラボすることが比較的多いです。ただ、交友関係自体は限りなく広いので、色んな人とどんどん関わっています。

www.youtube.com

www.youtube.com

 

ぶいすぽっ!

一ノ瀬うるは

www.youtube.com

主なコラボ相手:叶、ラトナプティなど

複数の女性Vtuberが所属しているe-sports活動を中心としたプロジェクト、「ぶいすぽっ!」内のLupinus Virtual Games(以下LVG)に所属しているVtuber。オタク友達の女の子、といった感じの気さくかつ遠慮のないキャラで名を轟かせていっています。オタクのことをぽたくと称し、部屋も汚いらしい彼女ですが、ゲームの腕前は一級品です。

PUBG時代では、主に叶と煽り合う関係でした。Apexに切り替わり、最近ではラトナプティとCRカップでチームを組み、日々研鑽しています。

www.youtube.com

www.youtube.com

 

花芽すみれ

www.youtube.com

主なコラボ相手:ヌンボラ

一ノ瀬うるはと同じくLVG所属の女の子Vtuber。LVG内では花芽なずなと姉妹関係です。妹のなずなちゃんが謎のテンショントークを行うのに対して、彼女は比較的静かなのかもしれないです。だからといってノリが悪いと言ったことはなく、LVGメンバーとコラボするときもワイワイ楽しそうに、ときに大声で叫んだりすることもあります。Vtuber最強決定戦で見せたトロールポータルは有名です。

 

そんな彼女ですが、にじさんじとの関わりは以前まであまり関わりはありませんでした。しかし最近NijisanjiKRのヌンボラと同じぶいすぽ所属の胡桃のあとともにApexをしている配信もあり、これから増えていくのかもしれません。

www.youtube.com

 

胡桃のあ

www.youtube.com

主なコラボ相手:勇気ちひろ、ヌンボラ

ぶいすぽっ!内のIris Black Gamesに所属しているボクっ娘Vtuber。可愛い見た目に可愛い声で可愛らしい喋り方が特徴的。可愛らしいなりをしておきながらガラの悪いのあパンチなどで荒っぽい一面を見せてくれたりします。ちなみにApexでは有名なApex配信を行っているVtuberでは数少ないマスター到達経験者です。

そんな彼女ですが、やはりApexジャンキーの勇気ちひろ、最近ではヌンボラとApexコラボを経験しています。

www.youtube.com

www.youtube.com

 

個人勢

12/23日現在Upd8*2所属してるVも個人勢とします。

天開司

www.youtube.com

主なコラボ相手:舞元啓介、椎名唯華、叶など

バーチャル債務者youtuber。微糖カイジの亡き後のBANsを支えた二代目筆頭。個人勢として攻めた企画*3を多く行い、企画ものとしても「Vtuber甲子園」などで大成功を収め、強い知名度を持っております。

彼は実は元にじさんじネットワーク所属であり、にじさんじメンバーとも交流が深いです。野球、麻雀などの趣味があう舞元啓介、「おはクズ」挨拶が被ったことを発端に主に殴り合っている椎名唯華、私生活でも家に行ったりなどしている叶などと交流が深いです。舞元とは自身のVtuber甲子園を舞元に引き継ぎ、開催された「にじさんじ甲子園」で大会公式アンバサダーを務めるなどお互いに認めあった関係と言えます。

www.youtube.com

www.youtube.com

 

ふぇありす

www.youtube.com

主なコラボ相手:叶、椎名唯華、リゼヘルエスタなど

両声類淫乱アキクサインコ系Vtuber。其の本質は「男」である、といった点です。なんかボイチャ使ってないらしいとも聞くけどマジですか?3Dモデル、配信環境などにとても力を入れており、個人勢とは思えないほどです。

彼女(彼?)も元にじさんじネットワークであり、にじさんじでは叶とコラボが多い。また、定期大型コラボである「いつめん人狼」にも参加して、活躍を見せています。

www.youtube.com

(ふぇありす視点のアーカイブなし)

www.youtube.com

 

MonsterZ MATE

www.youtube.com

主なコラボ相手:ドーラ、舞元啓介、ジョー力一など

狼男のアンジョー、吸血鬼のコーサカの音楽ユニットVtuber。個人勢として多くの女性ファンを抱えるイケメンデュオであり、3Dでバラエティのノリのような企画動画をメインで上げています。ロシアンシュー企画はあまりにも有名です。

彼らの動画にはドーラ、舞元、ジョー力一の出演率が高く、ドーラは準レギュラー並の参加率、舞元や力一は飲酒系だったり男だけの体力測定などの企画で参加しています。

www.youtube.com

www.youtube.com

 

朝ノ姉妹プロジェクト

www.youtube.com

主なコラボ相手:戌亥とこ、ルイス・キャミーなど

 忍者系Vtuber姉妹、歌とお芝居が大好きな姉の「瑠璃」と、ゲームとプリンが大好きな妹の「茜」の二人で活動しています。自分はあまり見れていませんが、歌ってみたの印象が強いです。

彼女はいろんなVとコラボしており、一概に誰と一番コラボしている、というのが決めにくいです。其の中でとりあえず自分が知っているものを上げるとして、戌亥とこや樋口楓とコラボした歌ってみた、最近だとAmongusでルイスと愛園とコラボしています。(瑠璃ちゃんのみで申し訳ない。。。)

www.youtube.com

www.youtube.com

 

ぴろぱる

www.youtube.com

主なコラボ相手:町田ちま、飛鳥ひななど

書道家Vtuber。書道を嗜んでおり、文字やデザインを歌ってみたなどに提供しております。音楽にも強く、歌うだけでなくMix、マスタリングなども手掛けているスーパーマルチクリエイターです。

彼のにじさんじコラボで最も印象深いのは町田ちまとの歌ってみたコラボ。また、飛鳥ひなや夢追翔などともコラボしております。グランドエスケープはまじで聞いてください。

www.youtube.com

www.youtube.com

 

渋谷ハル

www.youtube.com

主なコラボ相手:渋谷ハジメ、勇気ちひろ、イブラヒム

ゲーム配信で有名なVtuber。PUBG時代から猛威を奮っており、ApexではVtuberの中では本当に一握りしか居ないプレデター到達者の一人です。最近ではAepxのVtuber最強決定戦などを開催しています。

コラボとしては初期の頃は渋谷ハジメとともに「渋谷兄弟」としてよくコラボしていました。もちろん勇気ちひろともコラボしており、最近ではイブラヒムとCRカップでのチームを組んで練習をしております。

www.youtube.com

www.youtube.com

レンチ

www.youtube.com

主なコラボ相手:花畑チャイカなど

作曲系Vtuber。数多くのVtuberに曲を提供しています。

にじさんじとの関わりとしてはそこまで深くないが、初期の頃に仮想マイクラ部にて当時のSeeds1期とか変わっています。また、花畑チャイカの配信でよく後ろに流れる曲は何を隠そうレンチさん作曲だったりします。

www.youtube.com

www.youtube.com

 

名取さな

www.youtube.com

主なコラボ相手:でびでびでびる、リゼ・ヘルエスタ、安土桃など

バーチャルサナトリウムに住んでいるバーチャルナースYoutuber。サブカル系の知識がとんでもなく多く、ネットスラングを使いこなしています。また、絵も上手くお絵かき配信を定期的に行っています。「すまん○事件」はあまりにも有名ですね。(リンクは貼らないでおきます自分でググってね)

彼女は「にじさんじのオーディションに落ちた」という過去を持ってたりして、其の関連か走らないですがにじさんじとも結構関わっております。でびでびでびる、リゼ・ヘルエスタらだけでなく、月ノ美兎や椎名唯華ともコラボを行っております。また、最近では安土桃の凸待ちに現れたりしてます。

www.youtube.com

www.youtube.com


 

まとめ

疲れました。まだまだいるんですけどちょっと膨大なので一度止めておきます。*4

Vtuber業界は市場として既に大きなものになっており、様々な企業が参画し始めています。これからどんどん進化していっている業界にて、にじさんじだけでなく様々なVに目を向けて言ってもらえると幸いです。

 

*1:代表作:ひめゴト、双葉さん家の兄弟など

*2:2020/12/31に終了予定

*3:PUBGでドン勝生活など

*4:名前だけ挙げるとあっくん大魔王、ふくやマスター、伊東ライフ、などなど。。。 自分が把握しきれていないゾーンも多いです。

Unityで音を扱うということ

みなさんこんにちは
T.C.と申します。
  この記事はCCS裏アドベントカレンダー2020の21日目の記事です。
 

adventar.org

前回はいかろちゃんのGitトークでした。

hogespace.hatenablog.jp

 
  お久しぶりです。
今回は珍しく真面目な記事を書こうと思います。
ただ、例年通り当日になるまで書くのを忘れていたので突貫工事な記事になります。
 
この記事は以下の前提があります。
* Unityについてある程度理解している。
* 音を扱うとか言っておきながら扱うのは音声入力
以下よろしくおねがいします。
 

Unityの音声入力

突然ですがこちらのゲームを見てください。

github.com

これはこの秋冬に色々あって自分が作ったゲームです。
音声入力でキャラを操作します。
これはとあるゲームをインスパイアさせていただいたゲームになります。
 
今回はこちらを作成していたときにわかった知見になります。
 

Unityのデフォルト音声 操作コンポーネント「AudioSource」について

Unityにはデフォルトで音声を取り扱うコンポーネントAudioSourceが存在します。
こちらは取り扱うAudioClip(音声データのようなもの)を設定し、そのSourceの簡単なミキシングができるコンポーネントになります。

docs.unity3d.com

 
Unityで音声入力を行う際、こちらのAudioSourceのAudioClipにMicrophone.Start()関数の返り値を渡してやることになります。

docs.unity3d.com

 
ただ、こちらのMicrophoneには以下の欠点があります。
 

レイテンシがひどい

レイテンシーとは「遅延」になります。
音声系において、遅延というものは切っても切り離せない関係にあります。
これはどこかで聞いた話ですが、「マイクなどで録音した音声をスピーカーなどから出力する場合、0.5sec以上の遅延は人の耳に違和感を与える」という話があります。 リアルタイムな音声入出力を考えるときに必ず直面する問題であり、この問題により音声処理では重く、複雑な処理を簡単に行うことが出来ません。 そして問題のUnityデフォルトの音声入力系ですが、以前色々と試行錯誤したところレイテンシが猛烈に悪いです。
今回ブログを書くにあたって計測をかけた結果、以前レイテンシーがひどいように感じたのは自分が原因説が出てきました。以後調査します。。。
 

メインスレッド

これはそもそもUnity自体の問題になります。
Unityは元々の思想として、基本的に大体のコンポーネントをメインスレッドにて動作しています。
つまりフリーズの影響を大きく受けます。
複雑な処理・重い処理が発生し、メインスレッドが重くなると、この音声入力機構が影響を受けます。
ではそれらの複雑な処理を別スレッドで動かせば?という話になりますが、Unityのコンポーネントを利用したUI部分などで重くなってしまった場合アウトです。
 
ではこれらの問題をどう回避するか?ということについて考えます。
 
今回3パターン用意しました。

また、計測を行うためにこちらのページからSavWav.csをお借りして、改造したものを使っております。

twinklesmile.blog42.fc2.com

   

パターン1 : 普通にAudioSourceを用いた場合

まずこちらから行きましょう。

using System.Collections.Generic;
using UnityEngine;

public class AudioExample : MonoBehaviour
{
    public float volumeShiftSize = 2.0f;
    AudioSource aud;
    float[] samples;
    const int timeLength = 1;
    const int samplingRate = 48000;
    int currentPosition = 0;
    List<float> data;
    string deviceName;
    // Start is called before the first frame update
    async void Start()
    {
        data = new List<float>();
        aud = this.GetComponent<AudioSource>();
        string[] tmp = Microphone.devices;
        deviceName = tmp[0];
        // マイク名、ループするかどうか、AudioClipの秒数、サンプリングレート を指定する
        aud.clip = Microphone.Start(deviceName, true, timeLength, samplingRate);
        samples = new float[aud.clip.samples * aud.clip.channels * timeLength];
    }

    public void  FixedUpdate()
    {
        int pos = Microphone.GetPosition(deviceName);
        aud.clip.GetData(samples, 0);
        if (pos > currentPosition)
        {
            for(int i = currentPosition; i < pos; i++)
            {
                data.Add(samples[i]);
            }
        }
        else if(pos < currentPosition)
        {
            for(int i = currentPosition; i < aud.clip.samples * aud.clip.channels; i++)
            {
                data.Add(samples[i]);
            }
            for(int i=0; i<pos; i++)
            {
                data.Add(samples[i]);
            }
        }
        currentPosition = pos;
    }

    private void OnDestroy()
    {
        SavWav.Save("1.wav", data, aud.clip.samples, aud.clip.channels, data.Count / aud.clip.channels);
    }
}
  • メリット
      • 書く行数が少ないです。
      • Unity側で用意されているものなので
  • デメリット
    • スレッド分け
      • 前述のとおりです。
    • データの扱いについて
      • Microphone.Start()では指定した時間長分のバッファが作成され、内部でリングバッファのように音声データが格納されていく
      • 時系列に沿ってデータを取得する場合、バッファ内でのpositionを取得した上で定期的にデータを取得して別のバッファに入れるなどの工夫を行う必要がある。
    • レイテンシーが悪い

UDPにて別プロセスで録音した音をbyteデータにして送信する。

C#にはNAudioという.NETにて動作するオーディオライブラリが存在します。
https://github.com/naudio/NAudio
 
こちらのライブラリは、複雑な音声系のもろもろを使いやすくされたものになっており、非常に使いやすいです。
ただし、こちらのライブラリはUnityではサポートされていません。
調べたとき見つけた理由としては「Unityで禁止しているSystem.Windows.Formを利用しているため」などありました。
とにかくUnityでNAudioは正常に動作しません。
ではNAudioでをUnityと関係のないところで動かし、そこで取得したデータをUDPにて送ればいいのでは?といった発想にて用いられた方式になります。
  UDPを飛ばす側のコード

using System;
using NAudio.Wave;
using System.Net.Sockets;

namespace naudio_test
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(WasapiLoopbackCapture.GetDefaultCaptureDevice());
            var devCnt = WaveInEvent.DeviceCount;
            for(int i=0; i<devCnt; i++)
            {
                Console.WriteLine(i + ": " + WaveInEvent.GetCapabilities(i).ProductName);
            }

            Console.Write("inputDeviceNumber : ");
            var line = System.Console.ReadLine();
            var deviceNumber = Int32.Parse(line);

            var waveIn = new WaveInEvent();
            int samplingRate = 48000;
            waveIn.DeviceNumber = deviceNumber;
            //waveIn.WaveFormat = new WaveFormat(samplingRate, WaveIn.GetCapabilities(deviceNumber).Channels);
            waveIn.WaveFormat = new WaveFormat(samplingRate, 1);
            waveIn.BufferMilliseconds = 16;
            int bufferSize = (int)((waveIn.BufferMilliseconds / 1000.0f) * samplingRate);

            var waveBuffer1ch = new float[bufferSize];

            UdpClient udp = new UdpClient();
            string hostip = "127.0.0.1";
            int hostPort = 2222;
            waveIn.DataAvailable += (_, ee) =>
            {
                udp.Send(ee.Buffer, ee.BytesRecorded, hostip, hostPort);
            };
            waveIn.RecordingStopped += (_, __) =>
            {
            };

            waveIn.StartRecording();
            Console.Write("何らかの文字を入力したら終了");
            Console.ReadLine();
            waveIn?.StopRecording();
            waveIn?.Dispose();
            waveIn = null;
        }
    }
}

飛ばされる側のコード(Unity側)

using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using UnityEngine;
using System.Threading;

namespace Assets
{
    class audioManajor : MonoBehaviour
    {
        //入力デバイスの設定はここで入力 
        public int inputChannels = 1;
        public int samplingRate = 48000;
        public int udpTimeout = 1000;
        public enum BitRate 
        {
            Short = 16,
            Int = 32,
            Long = 64,
            Float = 32,
        } ;

        public BitRate inputBitRate = BitRate.Short;

        int LOCAL_PORT = 2222;
        static UdpClient udp;
        Thread rcv_wave_thread;
        int bufferSize;
        float[] dataSamples;
        const int timeLength = 1;
        List<byte> dataBuffer;
        
        public audioManajor()
        {
            bufferSize = 1024;
            dataSamples = new float[bufferSize];
        }

        void Start()
        {
            dataBuffer = new List<byte>();
            //udpスレッドスタート
            udp = new UdpClient(LOCAL_PORT);
            udp.Client.ReceiveTimeout = udpTimeout;
            rcv_wave_thread = new Thread(new ThreadStart(waveUdpRcv));
            rcv_wave_thread.Start();
        }

        private void OnApplicationQuit()
        {
            rcv_wave_thread.Abort();
            SavWav.Save("2.wav", dataBuffer, 48000, inputChannels, dataBuffer.Count);
        }

        private void waveUdpRcv()
        {
            while(true)
            {
                IPEndPoint remoteEP = null;
                if(udp.Available != 0)
                {
                    byte[] data = udp.Receive(ref remoteEP);
                    dataBuffer.AddRange(data);
                }
            }
        }

        public float[] getSamples()
        {
            return dataSamples;
        }

        public int getTimeLength()
        {
            return timeLength;
        }

        public int getSamplingRate()
        {
            return samplingRate;
        }
    }
}
  • メリット
    • レイテンシーがとてもいい
      • UDPのデータ送信自体には遅延はほぼないため
    • スレッドわけが容易
      • UDPの受信自体はC#の機能の範囲内で実装できるため、別スレッドにて行うことが可能
    • Unity自体が軽い
      • UDPを受信する口だけを用意すればいいため、Unity自体はとても軽くなる
  • デメリット
    • UDPの送信側を別実装、かつ別プロセスでの動作になる
      • 2プロセスにて動作させる必要があり、面倒
      • また、RPCなどによりきれいに録音開始、終了をハンドリングしないと起動時に無駄な手間がいる。

C++にてDirectSoundでの録音処理をDLL化し、C#側で読み込む

読んで字のごとくです。
これは説明するよりこちらに書いたほうがわかりやすいかと思います。
 
実際の処理コード

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using UnityEngine;
using lib_audio_analysis;
using System.Threading;

namespace audio_app
{
    class AudioManager : MonoBehaviour
    {
        InputCaptureFuncs inputCap;

        //入力デバイスの設定はここで入力 
        ushort inputChannels = 1;
        public uint SamplingRate { get; private set; } 
        public float[] DataSamples { get; private set; }
        int frameBufferSize = 512;

        int captureBufferSize;
        byte[] captureData;
        IntPtr captureDataPtr;

        List<float> waveBuffer;

        bool cap_now;

        Thread rcv_wave_thread;

        void Start()
        {
            inputCap = new InputCaptureFuncs();

            cap_now = false;
            //自環境で試した結果、8.0ms取得、512サンプル処理が一番遅延が少ないため、今回はこの設定で行う
            long hr = inputCap.initInputCapture(48000, inputChannels, 16, 8, 0);
            waveBuffer = new List<float>();
            DataSamples = new float[frameBufferSize];

            captureBufferSize = inputCap.getDataBufferSize();
            captureData = new byte[captureBufferSize];
            captureDataPtr = new IntPtr();
            captureDataPtr = Marshal.AllocCoTaskMem(captureBufferSize);
            inputCap.startCapture();
            rcv_wave_thread = new Thread(new ThreadStart(capture));
            rcv_wave_thread.Start();
            cap_now = true;
        }
        private async void capture()
        {
            while(true)
            {
                int size = 0;
                long hr = inputCap.getCaptureData(ref captureDataPtr, ref size);
                if (hr == 0)
                {
                    Marshal.Copy(captureDataPtr, captureData, 0, size);
                    inputSoundDataConvert(captureData, size);
                }
                else
                {
                    if(!cap_now) 
                        break;
                }
            }
        }

        private void OnDestroy()
        {
            cap_now = false;
            rcv_wave_thread.Join();
            rcv_wave_thread = null;
            inputCap.stopCapture();
            inputCap = null;
            SavWav.Save("3.wav", waveBuffer, 48000, inputChannels, waveBuffer.Count);
        }

        private void inputSoundDataConvert(byte[] captureData, int size)
        {
            int captureDataIncremation = 16 / 8 * inputChannels;
            for (int i = 0; i < size; i += captureDataIncremation)
            {
                byte[] tmp = new byte[] { captureData[i], captureData[i + 1] };
                waveBuffer.Add((float)BitConverter.ToInt16(tmp, 0) / 32767.0f);
            }
        }

    }
}

    DirectSoundによる音声キャプチャコード

using System;
using System.Text;
using System.Runtime.InteropServices;


namespace lib_audio_analysis
{
    public class InputCaptureFuncs
    {
        [DllImport("lib_audio_analysis", EntryPoint = "create_input_capture", CallingConvention = CallingConvention.StdCall)]
        static extern void create_input_capture(ref IntPtr func_object);

        [DllImport("lib_audio_analysis", EntryPoint = "delete_input_capture", CallingConvention = CallingConvention.StdCall)]
        static extern void delete_input_capture(ref IntPtr func_object);

        [DllImport("lib_audio_analysis", EntryPoint = "get_input_devices_list", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode)]
        static extern void get_input_devices_list(int index, StringBuilder tmp, IntPtr func_object);

        [DllImport("lib_audio_analysis", EntryPoint = "get_input_devices_list_size", CallingConvention = CallingConvention.StdCall)]
        static extern int get_input_devices_list_size(IntPtr func_object);

        [DllImport("lib_audio_analysis", EntryPoint = "init_input_capture", CallingConvention = CallingConvention.StdCall)]
        static extern long init_input_capture(UInt32 sample_rate, UInt16 channels, UInt16 bits_per_sample, Int32 frame_ms, int device_index, IntPtr func_object);

        [DllImport("lib_audio_analysis", EntryPoint = "get_buf_size", CallingConvention = CallingConvention.StdCall)]
        static extern int get_buf_size(IntPtr func_object);

        [DllImport("lib_audio_analysis", EntryPoint = "start", CallingConvention = CallingConvention.StdCall)]
        static extern long start(IntPtr func_object);

        [DllImport("lib_audio_analysis", EntryPoint = "caputre_data", CallingConvention = CallingConvention.StdCall)]
        static extern long caputre_data(ref IntPtr data, ref int capture_length, IntPtr func_object);

        [DllImport("lib_audio_analysis", EntryPoint = "stop", CallingConvention = CallingConvention.StdCall)]
        static extern long stop(IntPtr func_object);

        private IntPtr mInputCap;

        public InputCaptureFuncs()
        {
            mInputCap = new IntPtr();
            create_input_capture(ref mInputCap);
        }

        ~InputCaptureFuncs()
        {
            delete_input_capture(ref mInputCap);
        }

        public long initInputCapture(UInt32 sampleRate, UInt16 channels, UInt16 bitsPerSample, Int32 frameMs, int deviceIndex)
        {
            return init_input_capture(sampleRate, channels, bitsPerSample, frameMs, deviceIndex, mInputCap);
        }

        public long startCapture()
        {
            return start(mInputCap);
        }

        public long getCaptureData(ref IntPtr data, ref int capture_length)
        {
            return caputre_data(ref data, ref capture_length, mInputCap);
        }

        public long stopCapture()
        {
            return stop(mInputCap);
        }

        public int getDataBufferSize()
        {
            return get_buf_size(mInputCap);
        }

        public void getInputDevicesList(int index, StringBuilder tmp)
        {
            get_input_devices_list(index, tmp, mInputCap);
        }

        public int getInputDevicesListSize()
        {
            return get_input_devices_list_size(mInputCap);
        }
    }
}

 
こちらで用いているlib_audio_analysis.dllは以下のGithubにいて公開しています。
内部的にはworldによる音声解析処理とDirectSoundの音声キャプチャ機能のラッパーになっています。
単純に自分でここらへんの処理まとめて置きたいと思ったので作りました。
 
これはC++にて作成したDirectSoundの音声キャプチャ処理をDLL化し、C#にてDLLを読み込んで実行するものになっています。

  • メリット
    • レイテンシーがとてもいい
      • DirectSoundは遅延が少ないです。
    • スレッド分け
      • こちらもUnityのコンポーネントを使わず実装しているため、別スレッドにて動かすことが出来ます。
    • 無駄に処理が別れていない
      • 2つ目の方法と違い、レイテンシを維持したまま1プロセスで完結しているため、取り回しはいいです。
  • デメリット
    • DLL作成の手間
      • C++を用いることになるため、DLLを作成し、そこから読み込むなどの手間がかかってしまう。
    • win環境のみの動作
      • DirectXに依存しているため

それぞれのレイテンシーについて

レイテンシーを簡易計測しました。
こちらは厳密な計測を行ったわけではないです。適当に音声をスピーカー再生してUnity内で取得したデータを書き出しています。 上から
* リファレンス音
* AudioSourceによる録音
* UDPによる録音
* DirectSoundによる録音

f:id:yoooomaruuuu:20201221230144p:plain
それぞれのレイテンシ

まとめ

もともとAudioSourceによる録音はレイテンシーがひどい!!!みたいな記事書こうと思ったんですけどなんか計測している間に事情が変わってきたりしてとりあえず知見紹介記事となりました。このあともう少し調べてみようとは思います。
Unityの音声周りは触った感じではあまり強くはないです。例えばAudioSourceで取得した音はPlay()関数を叩くことで再生できますが、Microphone.Start()を用いて再生した場合、いくらか遅延が生じます。
そのため、色々と音声処理をやるのであればここらへんを参考にしてみてください。

JUCE 備忘録

この記事は↓の22日のやつです。
 
昨日はこれ
 
明日(今日)はこれ
 
 
JUCEについてはこちらを読んでください。
 
最近仕事でJUCEを使う機会があって、それから色々C++の勉強ついでに書いてます。
で、今回はこのJUCEを使ってボイチェンまがいのことしてみようかなぁとか適当に思ってアドカレの枠取ったんですが。。。
そのあたりから仕事が暗黒面に落ち始めて平日家に帰ると疲れきってついマイクラを無限にやってしまう生活続けていたら準備する暇がありませんでした。
他に記事ネタもないので、なんか無いかなぁとか色々考えて、Tips的なものを備忘録ついでに書くかぁとなりました。
なおこの記事はJUCEについてある程度知っている人向けです。
また、今のところAudioPluginでしかコード書いてないのでそれ以外の動作についてはサポートしません。
ただ、JUCEハンズオンの記事にはAudioPluginで初期から定義されている細かいクラスの動作など載ってなかったのでそこも含めて解説します。
 
 
準備
JUCEの入れ方などはハンズオンの記事見てください。
今回のTips関係の解説するにあたって以下の状態に持っていってくださいな
  1. ProjucerでFile→new Project選択(Ctrl+Nでも可)
  2. Audio Plug-In選択
  3. Project Name、Project Folder、TargetPlatformsなどを設定してCreate...を選択
  4. 作ったProject画面で左上のプロジェクト名歯車マークをクリック
  5. Plugin Formatsを確認、Standaloneが選択されていることを確認
  6. Selected exporterでIDEを選択
  7. File→Save Project and Open in IDEを選択(IDEのマークでも可)
 
 
AudioPluginについて
AudioPluginはその名の通りDAWに使えるプラグイン作成を行えるプロジェクト設定になります。
VSTAU、AAX、Unityなど対応しております。
また、Standaloneにした場合、単体で動くアプリができます。
 
AudioPluginのクラス構成について
AudioPluginでProjectを作った場合、以下の4ファイルが自動で作成されます。
・PluginProcessor.cpp
・PluginProcessor.h
・PluginEditor.cpp
・PluginEditor.h
それぞれのcpp/hの組み合わせに、
[Project名]Processorクラス(以下Processorクラス)
[Editor名]ProcessorEditorクラス(以下Editorクラス)
が作成されます。
 
クラス内の主な関数について解説

Processorクラス

コンストラク
inputバス、outputバス設定などの設定を行えます。
prepareToPlay
音声再生前に一度は必ず呼び出される関数、ホスト側のsample数、sampling rate、チャネル設定など変えた場合呼び出されます。
processBlock
オーディオスレッドにて再生中に毎フレーム叩かれる関数、引数のAudioBuffer<float>型の変数内に毎フレーム入力された音声データが格納されます。
ここで最重要なのは、processBlockにて取得できるAudioBuffer<float>内の音声データのサンプル数は一定であることを保証されていないということです。
よって、サンプル数に依存しない処理を書く必要があります。
isBusesLayoutSupported
バスのチャネル制限設定を行うことができます。
createEditor
エディタクラスを生成します。
エディタクラスはPluginEditor.hにて定義しているものです。
ちなみにEditorクラスは引数にあるようにProcessorクラスを見ることができますが、ProcessorクラスからはEditorクラスを見ることができません。
つまりProcessorからGUIに対してなにか行いたい場合は間接的なオブジェクトを経る必要があります。
getStateInfomation
プリセットデータ保存を行える関数です。
大体のDAWプラグインごとにpresetデータの保存を行うことができ、その際に叩かれる関数になります。
setStateInformation
プリセットデータ読み込みを行える関数です。
 

Editorクラス

コンストラク
Processorクラスの取得、GUI画面のサイズ設定などを行えます。
paint
GUI画面が描画される際に呼び出される関数です。
線や点の描画、フォント設定、色設定など描画に関することの処理を行うことができます。
resized
GUI画面サイズが変更された際に呼び出される関数です。
GUIにてスライダコンポーネントなど位置調整処理などを行うことができます。
 
↓からTips備忘録
 

リアルタイム録音

File
juceにおけるファイルの取り扱いをするクラス
OutputStream
juceにおけるstreamのbaseクラス
もちろんInputStreamも存在しております。
streamに対して書き込みを行う際にフォーマットを指定、エンディアンの指定などを行うことができます。
基本的にFileOutputStreamをよく使います。
 
AudioFormatWriter
音声フォーマットに関するクラス
こちらを使うことで音声形式ファイルに対してstreamを経てデータを送ることができます。
以下のクラスにて説明する関数にて作成することができます。
 
WavAudioFormat
wavフォーマットでファイル書き出すを行う際に利用するクラスになります。
こちらのクラス内のcreateWriterFor関数にOutputStreamやファイルクラスオブジェクトを渡すことでAudioFormatWriterクラスを作ることができます。
ここで注意するのが、createWriterFor関数にて作成されたAudioFormatWriterクラスは、渡したOutputStreamオブジェクトを自動で開放してくれるということです。
うっかりdelete処理を書いてしまうと2重deleteが発生して死にます。
 
これらを用いることでリアルタイム録音処理を簡単に行うことができます.
後日処理関係追記します。
 
 

AlertWindow

これ単体ではアラートウィンドウを制御するクラスでしか無いですが、こちら内部のstaticクラスであるshowMessageBox系の関数は好きなタイミングでアラートウィンドウを呼べます。
つまりGUI側を見ることができないProcessorクラスにてエラー処理を行う際にわざわざ各エラー情報をGUIに渡す、などの処理を行わずともこちらにてエラー情報をユーザーに渡すことができます。
エラー処理系で便利なものになります。
 
 
DEBUG
JUCEフレームワークではデフォルトで何故かDEBUGというマクロを奪っています。
動作を確認したところ「DEBUGビルド時にのみ定義されるマクロ」みたいなので、
デバッグビルド時の処理分けとして使えるようにしているみたいです。
これ、自分用に作ってた場合、JUCEが優先されるため、うまくいかなる時があります。
デバッグ動作のようなものを作る場合、別のマクロを定義したほうがいいです。
(フレームワーク側で割と使われそうなマクロ定義すんなカス) 
 
DBG
デバッグビルドの話をしたついでにこちらの備忘録も
DBGは「デバッグビルド時にのみ動作する標準出力」になります。
デバッグ時に動作中の変数の数値の確認などを行いたい場合に使えます。
 
やっべ、Tips思い出せない。。。
明日コード見て色々思い出して追記しよ。。。

XBOX360版 THE IDOLM@STER

この記事はCCS裏Advent Calendar 2019の8日目の記事です。

前:

fourseasons-shooter.hatenablog.com



次:

 

どうも、T.C.(https://twitter.com/yoooomaruuuu)です。

なんか数日前にカレンダー見たら埋まってたはずの場所が空いてたので埋めました。

 

この前買った箱マスの話します。*1

 

www.twitch.tv

www.twitch.tv

 

今回は天海春香ちゃんをプロデュースしていきたいと思います!!!!!!

萩原雪歩ちゃん、高槻やよいちゃんを含めた3人ユニット「スプラウト」でアイドル活動、始めます!*2

こちらの動画、一部録画ミスでバグってます。すんません。

 

dic.nicovideo.jp

dic.nicovideo.jp

dic.nicovideo.jp

 

アイマスとか箱マスとかの解説は以上の3つのリンク見てください。

ここでは箱マスの魅力についていくつか上げさせていただきます。

 

魅力について

①ゲームとしての面白さ

コンシューマー版にて、765プロデュースメインの作品は

が出ております。

どれもそれぞれの面白さがありますが、2以降はレッスンやオデの難易度がゆるくなっており、2以降のレッスンはパフェを逃すほうが難しいです。

 

その点、箱マスはレッスン難易度はとてもちょうどよく、レッスンはシステムを理解しないとパフェを目指すのは難しいです。一部のレッスンは人類には攻略不可能だとも言われております。

www.twitch.tv

オデも対戦相手のアピール動向を読み、いかにして☆を稼ぐかリアルタイムで考えていくのは楽しいですし、コミュも量が多いため、何度も同じコミュを見て選択肢を覚えてしまう、みたいなことは起きないです。

www.twitch.tv

www.twitch.tv

やってて全然飽きないです。

また、エンディングも1アイドルに付き、9種類あります(確か)ので、どこまでもやり尽くせるかと思います。

 

②プロデューサー体験

今作は基本的にメインでプロデュースするアイドルは1人であり、その一人とトップアイドルを目指していくストーリーになります。

朝のやり取りや営業でのコミュニケーション、またオデ前の励ましやオデ後のやり取り、夜のメールなどプロデュースアイドルと大量にやり取りをすることになります。

進めていくうちにアイドルをプロデュースしているという感覚が強くなります。…強くなるよね?

また、アイドルランクが上がった次の週でのみ見れるランクアップコミュはそのアイドルのメインストーリーとも言える話を見ることができます。

天海春香が夢のアイドルになるための頑張り、星井美希がアイドルとしての自覚を強くしていく過程…などそのアイドルの核とも言えるストーリーを見ることでより一層プロデューサー体験が強くなっていく…はずです。

 

clips.twitch.tv

 

 

③お別れコンサート

今作のプロデュースは52週たった後に、活動休止イベントが必ず発生いたします。

活動休止についてアイドルに伝え、休止前の一大イベント、「お別れコンサート」の開催に向けてアイドルとコミュニケーションを取ることになります。

この「お別れコンサート」、めっちゃ心にきます。

あれだけ苦労してプロデュースしてきたアイドルを活動休止させなければ行けない、活動休止をアイドルに伝えたときの悲しそうな反応、「お別れコンサート」直前のアイドルの葛藤、めっちゃ辛くなります。

また、このお別れコンサートは今までのオーディションと違うシステムでのライブとなり、難易度もとても高いです。これの成否によってこのあとのEDの内容も変わってくるため、負けられない勝負になります。

成功した場合は今までの苦労が報われたEDを見ることができます。

失敗した場合…お別れコンサートにて担当アイドルが悲しい傷を追ってしまい、悲しいEDを見ることになります。

美希お別れコンサート失敗後のEDを見たあとのスタッフロール(BGM:まっすぐ)で僕は泣きました。

これは他のシリーズにはないカタルシスがあります。

f:id:yoooomaruuuu:20191209022323j:plain

悲しい顔

④ライブ映像

これ見てください。


はい、オデ勝利後の成功ライブ映像になります。

2007年のゲームにしてはしっかりとしたMVですよね。

ちなみにポジティブのときとかそうなんですけどパート分けやカメラの制御とかも自分で決めれます。

www.twitch.tv

www.twitch.tv

⑤覚醒美希

個人的に一番やってほしい理由がこれです。

覚醒美希という存在をご存知でしょうか。

覚醒美希とは、箱マスでの星井美希プロデュース中に特定の条件下で発生するストーリー分岐での美希を指します。

そもそも星井美希というアイドルは

  • 小さい頃から豊かな家庭で愛されて育てられてきた
  • 顔、スタイルともに最高レベル
  • 物覚えもよく、ダンスや歌を覚えることを苦にしない
  • トップアイドルを目指しているものの、忙しい仕事やレッスンなどは面倒であり、できるだけ楽にトップアイドルになろうとしている。

という特徴のアイドルです。

覚醒美希ストーリーでは以下のようになります。

  • 早い段階でアイドルとして自覚を持ち、今までの楽に進みたいという態度を恥じて、一生懸命トップアイドルを目指すようになる。
  • ストーリーを進めるとプロデューサーに対して好意を持ち始め、「ハニー」と呼び始める。アプローチも積極的になる。
  • ランダムイベントでたまに短髪になる。

一応後発作品でも美希が覚醒する/そもそも覚醒しているということは多いですが、こちらのように明示的に覚醒するイベントは箱マスでしか存在しない要素です。

また、覚醒美希はPへのアプローチが積極的になる影響で、コミュが色んな意味ですごいです。覚醒美希ある日の風景7は伝説のコミュ…

f:id:yoooomaruuuu:20191209022503j:plain

有名な短髪な覚醒美希

こちらは覚醒美希ある日の風景7コミュ ネタバレです。

https://www.nicovideo.jp/watch

www.nicovideo.jp

 

 

終わり

箱マス、結構面白いのでみんなも箱ごと買いましょう。

春香のプロデュースはまたどっかで配信します。

長くなってしまった…早くねよ…

*1:秋葉原のTRADERでソフト+箱で10k以内に収まった

*2:アイマス2の漫画「The world is all one!」から取ってます。本物はやよいじゃなくて響だけどね。。。

Tom Clancy's Rainbow Six Siegeの世界 ~イベント編~

この記事はCCS †裏† Advent Calender 2018の4日目の記事です

 

昨日の記事↓

yoooomaruuuu.hatenablog.com

 

アドカレ↓

adventar.org

 

こんちはT.C.です

早速本題に入ります

 

 昨日の続き書きます。

昨日の記事にてシージはesportsとして人気が高く、プロリーグも存在するとお話しました。

なので今回はシージの各種イベントについてお話します。

 

とりあえず僕がプロリーグを意識し始めたSeason8くらいから書きますね

あ、動画が残ってる僕が把握できている範囲で書きます

 

9/13~9/14

レインボーシックス シージ Japan プロリーグ シーズン8 プレイオフ

 シージのプロリーグシーズン8におけるAPAC(AsiaPacific)日本代表2チームを決めるための大会です。

www.youtube.com

 

ここでプロリーグについて説明いたします。

シージのプロリーグはESLが運営しております。

プロリーグの地域として

の4地域からそれぞれチームを選出し、世界大会で1位の座を争います。

で、各地域の選出方法としてはそれぞれの地域の主要国より代表チームを選出して、世界大会出場チームを決めることになります。

で、このシーズン8ではAPACにおいて日本代表が2チーム選出することになっておりました。

よって日本で8つのチームが代表をかけて戦ったわけです。

実は僕はこの頃そんなに大会とか見てなかったのでもちろんこのときも大会の動画を見てません。

よってこの試合は見てなかったり

今度見まーす

 

ちなみに結果としては野良連合Sengoku GamingがAPAC大会への出場を決めました。

 

9/23

父ノ背中 vs 野良連合 R6S スペシャエキシビションマッチ(TOKYO GAME SHOW)

www.youtube.com

父ノ背中という日本でシージを広めた第一人者チームと前述の野良連合のエキシビションマッチです。

ちなみに野良連合のメンツは大会メンバーではない別のメンバーが出演してます。

 

確か野良連合が勝ったはず。

 

9/25

Rainbow Six Siege Open (PC) 2018 

www.youtube.com

シージのオープン大会です。

この大会は自由に参加登録することができ、登録したメンバーでチームを組んで優勝を目指すカジュアルな大会になっております。

今度のOpen登録してみようかな?

 

ちなみにやっぱり見てません。

 

10/13~10/14

レインボーシックス Pro League Season 8 APAC Finals - in TOKYO

www.youtube.com

www.youtube.com

APAC地域の代表決定戦です。

本大会は史上初、東京で開催された大会です。

秋葉原UDXかなんかでパブリックビューイングしてた気がする。

日本代表では野良連合Sengoku Gamingが出場しております。

 

この大会はとにかく野良連合がすごかった。

野良連合は前回のシーズン7にてFNATICに敗れ準優勝で終わっております。

このときからいくつかメンバーが変わり、新体制で今回の大会に挑んでおりましたが・・・

 

まさに圧倒的

 

FNATICにも普通に勝ってて初優勝を決めてました。

これまた最終戦は熱かった。

この大会も見てて大分楽しいので見てほしい。

個人的にAerowolfのルナメタルの盾さばきは強かった。

 

ちなみに世界大会出場は野良連合FNATICが決めております。

 

11/7~11/8

レインボーシックス シージ Japan チャレンジャーリーグ シーズン8プレイオフ

www.youtube.com

www.youtube.com

日本シージにはプロリーグと別にチャレンジャーリーグというものが存在します。

サッカーでのJ1をプロリーグだとするとチャレンジャーリーグはJ2に当たります。

このチャレンジャーリーグ上位2チームがプロリーグに昇格し、来シーズンの日本大会に出場することができます。

 

今回昇格したのはSCARZと父ノ背中になります。

父ノ背中は久しぶりにプロリーグ昇格を決めたため、話題になりました。

 

11/17~11/18

レインボーシックス Pro League Season 8 Finals

youtu.be

www.youtube.com

世界大会です。

前述の4地域から2チームずつの計8チームが出場しております。

APAC地域からも野良連合FNATICが出場。

ここで野良連合の初戦の相手は

前シーズンの世界大会で奇しくも初戦敗退したROGUEとなっております。

これは因縁の対決か・・・?と始まる前から話題になっておりました。

そして始まった野良連合 VS ROGUE

 

激熱だった

 

まじで最初から最後まで熱い試合を繰り広げ、奇跡の逆転劇!

勝ったのはなんと日本代表野良連合!!!!!!!!!!!

これにより史上初の日本チームが世界BEST4進出を決めたシージ史に残る名場面でした。

 

そして続く準決勝!

相手はゴリラチームと名高いラテンアメリカ代表FAZE CLAN

野良連合は惜しくも負けてしまいました。

次は頑張って決勝まで行ってほしい!

頑張れ野良連合!!!!!

 

ちなみに優勝は前大会の覇者G2Esports

このチームを倒せるチームは現れるのか・・・

 

11/23

AOC OPEN 2018 RAINBOW SIX SIEGE 秋の陣

www.youtube.com

オフラインで行われたトーナメント大会です。

野良連合だったり父ノ背中だったりよく知らないチームだったりが出てバトってます

これは確かリアルイベントだったんだっけかな

池袋あたりでなんかやってたらしい

 

ちなみに優勝はCrazyPapiyoNが率いる野良連合チーム

 

10/21~11/25

LEVEL∞ UP Quest#1 R6S

www.youtube.com

www.youtube.com

1ヶ月かけて行う大規模大会になります。

それぞれ最大64チーム参加可能な予選を3回行い、予選の結果からポイントが与えられ、それらの結果によりファイナルズに出場することができます。

この大会の最終戦はeiNs VS 父ノ背中というシージ日本プロリーグにおける古豪同士の対決になりました。

 

優勝はeiNs!

ちなみにリンクに関してはファイナルズだけ貼ってます。

 

 

 

 

 

このようにシージはすごい頻度で大会だったりイベントだったりが開催されているくらい熱いコンテンツです。

この動画を見てやってみたくなったら是非君もシージを始めよう!!!!

 

あ、始めたくなったら行ってくれれば色々教えます。

ちなみに買うときはスタンダードセットは絶対に買わないでください

それも含めて教えるので@yoooomaruuuuまで

 

 

 

明日は@ikaro1192おじさんです。

乞うご期待!!!

 

Tom Clancy's Rainbow Six Siegeの世界 ~ゲーム編~

この記事はCCS†裏†Advent Calender2018の3日目の記事です

昨日の記事↓

massoumen.hatenablog.jp

アドカレ↓

adventar.org

 

こんちはT.C.です

早速本題に入ります

 

皆さんはTom Clancy's Rainbow Six Siegeをご存知でしょうか

Tom Clancy's Rainbow Six Siegeとは

アメリカ、ドイツ、ロシア、フランス、イギリスの特殊部隊から構成された対テロ特殊部隊「レインボー」の活躍を描く『レインボーシックス』シリーズの最新作[1]。本作ではタイトルにもある通りシージ(包囲作戦)という立てこもったテロリスト達に対しての突入作戦を題材にした対戦型のオンラインシューティングゲームになっている。

キャッチコピーは「包囲(シージ)完了。-突入開始」。

Wikipedia引用 

レインボーシックス シージ - Wikipedia

らしいです

 

Tom Clancy's Rainbow Six Siege(以下略してシージ)はUbisoftが開発した対人FPSゲームです

攻撃と防衛それぞれ5人チームに別れ、

攻撃の目的は「建物内に設置された爆弾をディフューザーを用いて解除」

防衛の目的は「建物内に設置された爆弾を時間内守り抜く」

それぞれの目的を満たすために建物マップを舞台に戦うFPSです。

そんなシージに現在CCS関連者の一部がハマりまくっています。

今回はシージの魅力について語りたいと思います。

 

 

魅力① 特殊なゲームシステム

このゲーム他のFPSに比べて圧倒的に違う点が存在します。

それは

「基本的に何もしなければ防衛の勝ち」

という点です。

防衛は攻撃の爆弾解除からボムを守ればいいだけなので基本的に防御有利となっています。

また試合前には準備フューズとして45秒の自由時間が与えられております。

この間に防衛は以下のことができます。

  • 壁の強化
    建物の壁には銃で抜けたり壊せたりする壁が存在します。
    防衛はそれらの壁を強化して簡単には壊せないようにすることができます。

  • 罠などのオブジェクトの設置
    このゲームにはミニマップなどの敵の位置が常に分かるものが存在しません。
    そのため、敵がどこにいるのかを感知することができる罠などを設置することでゲームを有利にすることができます。

  • 工事
    銃で抜ける壁の大半はSGや爆発物で孔を開けることができます。
    そのため防衛陣が動きやすいようにマップを工事して改造することができます。

などの準備を行うことができます。

また、防衛には「マップカメラ」が存在し、それらを通してマップ内の様子を定期的に確認することができます。防衛は罠やカメラを使って敵がどこにいるか把握しつつ敵をキルしたり邪魔したりして時間を稼ぐことになります。

 

それに対して攻撃側

基本、状況的に攻撃は不利ですが、その代わりに攻撃は以下のような利点があります。

  • 銃が攻撃より基本的に強い
    攻撃はAR持ちが大半に比べて防衛はSMG持ちが大半です。
    つまり正面から打ち合った場合基本的に攻撃が有利です。

  • ドローン
    防衛にマップカメラがあるように攻撃にはドローンが存在します。
    ドローンはカメラがついており、遠隔操作して索敵を行うことができます。
    つまり攻撃側は防衛と違ってマップ全体を安全に索敵することができます。

といった感じになります。

攻撃も防衛もそれぞれ全く違った特徴が存在するため、攻撃も防御もかなりたくさんの戦略が存在します。

 

魅力② 理不尽要素が少ない

PUBGというゲームをご存知でしょうか

あのゲーム一時期だいぶ流行ってましたよね

かく言う僕も結構やってました。

詳しい解説はしませんが、あのゲームは多少実力の差はあるにせよ運ゲー要素がすごい高いです。

まず初期位置に降りたときに近くに敵がいて先に銃を奪われたらだいたい負けです。

車とかを先に奪われたら絶望的ですし家に入ってこっちはハンドガンしかないのに相手にAR拾われたらワンチャンしかありません。

 

ここでシージに戻りましょう。

まずシージは基本的に理不尽な運ゲーが少ないです。

そのため、スキルや実力差が明確に差として現れます。

また、実力を確かめるものとしてランクシステムが存在し、ランクは勝ち進むほど上がっていきます。

つまりランクを上げていくことで実力の上達を実感することができます。

唯一ある運ゲー要素として

ヘッドショットが確定1撃死

というくらいです。

なのでワンチャンショットでおみくじヘッドとかたまにあります。

しかしこれもまたエイムがいい人たちはきれいにヘッドにエイムを入れていくため結局実力差は出てくるわけです。

結局運ゲーとかは少ないのでPUBGと違ってカジュアルではないです。

ただカジュアルという多少気軽なモードはあるので初心者はそこで練習しよう

 

 

魅力③ 多彩なオペレーター

シージは攻撃22人 防衛22人の多彩なオペレーターが存在します。

つまり攻防合わせて44人の多彩な攻防が生まれます。

多彩なオペレーターの種類として

攻撃

  • 武器強い、足速い、凸性能最高のAsh
  • ロシア生まれの硬派スナイパー サーモサイトで煙の中もスケスケGlaz
  • 強化した壁を破壊可能! 凄まじいブリーチングをするThermite
  • 敵の足跡の痕跡を逃さない!スキャンして敵の位置を特定!Jackal
  • 携帯をかけて相手の位置を音で特定!? 死んだ相手からカメラにもハックできるぞDokkaebi

防衛

  • 敵に有毒smokeを投げてじわじわと殺せ!smoke
  • 強化した壁を電気でビリビリ!?これじゃThermiteも壊せない!Bandit
  • 敵が近づいたら爆発して視界が悪くなるコンカッションボムを設置!Ela
  • カメラを投げて相手を索敵!?外にも投げれて飛び出しキル!Valkyrie
  • ゲーム中最高性能を誇る最強LMGを設置可能!バランス崩壊の要因!Tachanka

のようにストレートな性能のやつもいれば一見何が強いのかわからないやつもいます。

これ以外にも色々変なやつがいっぱいいるので飽きないこと必須!

 

4. プロリーグや様々esportsコンテンツ

シージは前述のように戦略性が高くプロリーグも行われてます。

この前も世界大会で日本チームが史上初のbest4に輝きました。

マジであれは熱かった。

世界大会の動画置いとくので見といてください。詳細は明日の記事で詳しく書くのでよろしく。

www.youtube.com

www.youtube.com

 

 

 

まとめ

ここまで色々書いてきましたがとりあえずみんなシージやろう!

我々クランCCSもどきは皆様の参加をお待ちしております。

続きは明日

画像加工から考えるインスタ映え実験

この記事はCCSAdventCalender2018の3日目の記事です

 

昨日の記事↓

qiita.com

 

CCS Advent Calender 2018↓

adventar.org

 

えー皆さんお久しぶりです

T.C.です

 

さて, 皆さんはこちらのツイートをご覧になりましたでしょうか

 

さらにこの写真についてのツイートをご覧になりましたでしょうか

 

 

ちなみにこのあとコイツラに以下のように言われました

・写真が全然インスタ映えしてない

・汚い

・うまそうに見えない

・こいつインスタのことわかってないな?とか思った

 

悲しくなったしせっかくPhotoshopあるのでインスタを目指した画像加工をすることにしました

 

※ちなみに僕は画像加工そんな得意じゃないです※

インスタ映えについても理解してません※

※突貫工事に付き加工は適当です※

f:id:yoooomaruuuu:20181202232853p:plain

元画像

 

1. 汚い部分を消そう

f:id:yoooomaruuuu:20181202235833p:plain

なんかスープの縁汚くない?

と思ったので消してみました

適当に器の色を重ねました

まあなんか見た目は良くなったような良くなってないような

 

2. いらないオブジェクトを消そう

 

f:id:yoooomaruuuu:20181203002926p:plain

ふきんとか謎の棒とか見た目に悪くない?

というわけで消してみました

突貫工事だからやはり加工跡がひどいですねぇ

 

3. なじませよう

f:id:yoooomaruuuu:20181203003333p:plain

ちょっとなじませました

具体的には影をそれっぽく塗ったりお盆の面の他の部分をクリップして塗ったところの上においてオーバーレイみたいな感じです

 

4. サイズを小さくしよう

f:id:yoooomaruuuu:20181203011512p:plain

なんかこう余計なもの消したらお盆の面が余ってる感じがして嫌だったので空白を埋めました

コーヒーの部分切り取って右に寄せて隙間をなじませる感じです

 

5. ズームしよう

f:id:yoooomaruuuu:20181203011649p:plain

なんかカメラが離れてる感じしたので少し近づけました

ぶっちゃけコーヒーか端のパン削っても良かったかもしれない

ミネストローネが中心な感じがありますね

 

6. フィルターをかけよう

f:id:yoooomaruuuu:20181203011812p:plain

適当にフィルターかけました

なんかコントラスト上げたり暖色増やしたり

センスは別にないです

ここらへんから「インスタ映えとはなんだ?」と迷走し始めます

 

7. 奥行きをつけよう

f:id:yoooomaruuuu:20181203012022p:plain

こうピントを被写体に合わせて撮った感じにするための奥行き的なぼかしです

なんかもうミネストローネが中心っぽかったのでミネストローネ以外ぼかしました

 

8. 色を変えよう

f:id:yoooomaruuuu:20181203012346p:plain

ミネストローネの色が(撮り方が悪くて)あまり美味しそうじゃなかったので

色を少し鮮やかにしました

ちょっと赤を増やした感じ(適当)

※実際のミネストローネはめっちゃうまかったです

 

9. もっとぼかそう(完成!)

f:id:yoooomaruuuu:20181203012554p:plain

インスタとかFBの写真はぼかしがちです(偏見)

なのでもっと全体をぼかしました

ちなみにこのあたりでわからなくなって破れかぶれになり, めんどくさくなったので作業を終えました

 

 

というわけで元の写真と完成後の写真の比較をしてみましょう

f:id:yoooomaruuuu:20181202232853p:plain

f:id:yoooomaruuuu:20181203012554p:plain

完成後

 

なんか雰囲気それっぽくなった気がします

もうこれ以上の策は思いつかなかったです

 

 

 

君も画像加工からレッツインスタライフ!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Photoshopの使った機能一覧

  • スポット修復ツール
    ブラシみたいに使うことができ, これで選択した箇所の周りの画像情報からなじませることができる.
    最近のPhotoshopだと消したいオブジェクトをグリグリ選択するだけで割といい感じに消えます

  • 指先ツール
    ドラッグすると指先でぎゅーっとなぞったみたいな跡を作れます
    色の不自然な境目をぼかしたりするのに使いました
    これまたブラシみたいに使えてブラシの種類ごとに色々変わるので試してみよう

  • Camera Rawフィルター
    画像をいい感じに加工できる最近のPhotoshopで追加されたフィルターです
    彩度調整とか寒色暖色調整とかコントラスト調整とかトーンカーブ調整とか明瞭度調整とか霞除去とか色々できます
    適当にバーってやるとおしゃれになるぞ


  • ぼかしフィルター
    そのまんまぼかすためのフィルターです
    ちなみにめんどくさかったからガウスしか使ってない


 

あとは選択範囲とかいい感じにやったりしました

Photoshopの本とか買えばこーいう周りのことはたっぷり書いてあると思うから読もう
Adobe Photoshopを持ってない人はAdobe税を支払おうな

 

以上です

4日はおじょうくん(@o_joh4869)です

 

 

とりあえず今日はもう寝て明日帰ったら突貫で裏の記事も書きます

裏はシージについて書いちゃうぞ*1

 

*1:裏はなんか今日見たら開いてたので2日取ってやりました 後悔はしてます