研究

十二技音法を使ってみた

これはKCS AdventCalendar2019 18日目の記事です

←17日目 19日目→

どーも、まんたあにど です。

前回(13日目)はうちの子がいると人生楽しくなるよ、という趣旨の記事を書きましたが、今回は音楽班らしく音楽に関することを簡潔に書きたいと思います。

作曲というと、コード進行やスケールといったことを思い浮かべるかもしれません。よく耳にするような、現在主流でつくられている曲にはそういった技法のほかに転調やハ長調といった調が存在します。

この調に対するアンチテーゼとして挙げられた音楽の一つである十二技音法について紹介したいと思います。この方法はコード理論のように複雑なものではなく、単純明快で非常にわかりやすく、且つ簡素で実践しやすいという点で初心者にもとっつきやすいものであると思います。

この記事が何かの役に立てられれば幸いです。

背景

音楽への試みは古来から行われ、モーツァルトやベートーヴェンで有名な古典派、ワーグナーやブラームスで知られるロマン派など、歴史的に幾多もの形式が誕生した。そんな中、20世紀初頭になるとこれら調性音楽とは違う方法で作曲を試みる機運が生まれ、シェーンベルクらによって調性に基づかない音楽、「無調音楽」が生まれた。十二技音法は無調音楽への試みの中で、主にそのシェーンベルクによって提唱された技法であった。しかし、無調音楽からはいわゆる名曲が生まれず、現在でも愛好家たちによって様々な試みがなされている。

概要

そもそも十二技音法とは何ぞや、という話ですが、簡単に言えば鍵盤一オクターブ分にある白鍵と黒鍵を全部用いて曲を作るという方法です。半音も含めてドレミファソラシを好きなように全部並べて旋律を作るという感じです。背景にもある通り、調性音楽への試みが長年行われ続け、その果てに登場した音楽による作曲方法でもあるので、その雰囲気は調性音楽のそれとは全くの別物で、なんだかグチャグチャしたような不可解な印象を受けるかもしれません。このような特徴を持っているので、ゲームでいうラスボス戦やホラーな場面に利用されることがあります。例えば有名なところでは、ドラゴンクエストの『大魔王』や『悪の化身』があります。(かなりわかりやすく紹介してくれている動画があるので貼っておきます)

https://youtu.be/CilIcnF8crI

この記事でも十二技音法を用いてホラーな感じの曲をなるべく、より雰囲気が出るように作り直すことを試みたいと思います。

実践

音源は、著作権を考えないで済むため以前自分が作った曲の一部を用います。

Before

この曲を構成する音のうち、一番最後に加わってきた金属音に注目します。MIDI上では以下のように鳴っています。

アドベント1

これを十二技音法で改めます。先ほどの動画で紹介されていたドラクエの曲での使われ方を見ると、おおよそ順番に、且つ高低差をつけるように音が並べられているように見えます。これを参考にして同様に自作曲の音も順番に、且つ高低差がつくように並べていきます。他の音色とも親和するように気を付けていきます。

無題

早速聞いてみます。

After

おわかりいただけただろうか

この曲自体、他の音についてもコードや和声をあまり考えずに並べられているので、ある意味無調音楽としての特徴を元々備えていたのですが、「十二技音法」という先人たちが編み出した技術を用いたことで、微妙かもしれませんがより曲の不気味さが出たと思います。

終わりに

コードや調性、和声といった難しいと感じるであろう部分を全て取っ払って曲を作り直してみました。勿論、無調音楽だけでは作られる曲の種類がかなり限られてきますので、幅広く様々な曲を作っていきたいとなるとやはり、調性音楽を勉強していく必要があります。ただ、今回紹介した技は無調音楽だけでなく、調性音楽の旋律などにも用いることができます。適宜用いてみることで、調性音楽だけを学ぶ以上に作曲の幅が更に広がると思います。

ここまで読んで下さり、ありがとうございました。

では。

←17日目 19日目→

楽器を始めよう

この記事は、KCS AdventCalendar2019 9日目の記事です。

←8日目 10日目→

こんにちは。(最近Rinjuくんの専属ギターリストになった)kcsAI班のbesshyです。AI班に所属している訳なんですが、全く関係のない音楽系の記事を書きます。(技術系の記事を期待していた人がいたらごめんなさい)

 

この記事を書くことになった経緯

弊サークルでは◯anG ◯reamガ◯パが流行っていて、音ゲーのSlackチャンネルがあったり(先日ワークスペース化しましたね)、オタクたちが楽器を購入してスタジオに行ったりしました。(クラス#roselia)一応高校時代に実際にバンドを組んで活動をしていたこともあって、軽音系の楽器については一通り触ったことがあるので、楽器を最近始めた人、始めたいと思っている人に向けて記事を書きます。(ちなみに高校時代は「The Blanc Donuts」という名前のバンドを組んで高校の文化祭に出たりしていました。)

 

音楽理論、コード進行等を知らなくても曲を弾くことに関してはさほど問題ではない

作曲をする場合は別として、特に音楽理論を知らなくても楽器を始めることができます。キーボードをのぞいてドレミが読めなくても市販のバンドストアは読めるようになっています。なので「でも音楽って理論が難しくて敷居が高そう」と思っている人は安心してください。一曲800円楽譜を手に入れられる財力を持っていれば誰でも好きな曲を奏でることができます。(自分もドレミの対応表がないとろくに楽譜が読めません笑。)何かの曲をコピーする程度の段階では演奏者にとっては音楽理論はあってもなくても特に変わりはないです。(あくまで自論です。当の本人は今音楽理論をやりたくて仕方がないわけなんですが……)

 

KCSでDTMをやっている人たちへ

KCSで作曲活動をやっている人はソフトを使って楽譜を作って作曲活動を行っていると思いますが、もし時間があったら楽器を初めて見るのもいいと思います。はっきり言って楽器をやっているのとやっていないのでは見える世界が違います。KCSでは学校の勉強とインターンを行って実務を経験している人は多いですが、学校の勉強と実務経験の間にはある程度の乖離があると感じている人も多いと思います。 個人的な感覚としてはこれが近くて、音楽理論を勉強して作曲しているだけでは、実際にバンド等で演奏する曲のニュアンスを掴み切ることは難しいのではないかと思います。(例えばギターに特有の技によるニュアンスの付け方、特有のベースライン等)実際、ギターの打ち込みはとても困難で、泣く泣くギターが入ってない曲を作曲することになったという話も聞いています。作曲できるという能力は、バンド界隈ではかなり貴重な人材でもあるので、ぜひ始めてみるといいと思います。(個人の感想です)

 

注意

自分は音楽をトップダウンでやっている人間なので音楽理論に関しては全くの初心者です。理論的なことも多少話しますが間違いがあるかもしれないので話半分で読んでください。(ボトムアップで理論をしっかりと勉強している音楽班の皆さん、ごめんなさい)

 

予算について

bookoffで2万円以下で揃えたという事例もありましたが、楽器店とかに行くと楽器店の人がスタートセットをおすすめしてくるので、特にこれが欲しいという意志がない状態で楽器を買いに行く場合は7万円〜10万円くらいを想定しておきましょう(ちょっと高いですが)

 

Vocal

「マイクだって楽器だ」と指摘されてしまうと困るので一応書いておきます。自分は歌が下手なので何も言えませんが、最近はボイトレをしてくれるミュージックスクールが多く、誰でもある程度はうまくなれるみたいです。費用的にも必要なタイミングでマイクを買えばいいと思うのでバンドの中では一番初期費用が少ないと思います。またギター、ベースの人はギターボーカル、ベースボーカル等があったり、ボーカルが2人いない場合はハモりを頼まれたりするのでボーカル以外のパートも軽く練習しておいたほうがいいかもしれません。

カラオケでの歌のうまさと実際の歌唱力は全くの別物という考え方が一般的です。(実際の歌は人が聞くのに対してカラオケは機械が採点するのでそれはそう。)本物の歌唱力を手に入れたい人はカラオケではなくミュージックスクールに行きましょう。知人曰くまずは発声練習から始まるそうです。また自分の声の特徴を理解したり表現力を向上させたり、日々の腹筋等の筋トレ、呼吸法が大事だそうです。またこのパートのみ体の一部から音を発声することもあり、喉のケアや体調管理はめっちゃ気を使っていました。

 

Guiter(エレキ)

必要なもの

ギター、アンプ、シールド、ピック、チューナー、(エフェクター)

ギターと言えば、「コード弾き」というイメージが大半だと思いますが実際最初に身に着けるものは「パワーコード」というものです。パワーコードは、あるコードを弾くときにそのコードのルートの音(基準となる音)と5度の音を押さえる奏法のことです。音楽理論に深く踏み込めませんが、5度の音はルートの音からギターのボディ側に2フレット分ずらしたものになります。

iOS の画像 (2)

ざっくり言ってしまえば、一般的に言われているコードは たくさんの指を抑えるようになっていますが、実際は大事な音を2〜3音しか使っていません。なので自分はコードが読めません。(C,Eくらいはわかりますが。)高校の音楽の授業でギターをやったことがある人は「Fコードを押さえるのが難しい」という印象があると思いますが、そもそも実際のエレキギターではそもそもFコード全部を押さえるということがあまりないので特に問題になりません。あまりよくはないかもしれません(というか良くない)がコードの知識がなくてもギターを弾くことができます。

iOS の画像 (3)iOS の画像 (4)

逆に問題になるのは鳴らしてない弦をミュート(消音)することです。エレキギターはある弦を鳴らすとその振動によって押さえていない弦がなってしまうという現象が起こります。これを防ぐために弦を押さえている方の指を使ってうまくミュートしてあげないといけません。ギターを始めた人が部内で地味に多いので言っておくと、これが最初の挫折ポイントと言ってもいいと思います。パワーコードの場合は以下の図のようにして鳴らしていない弦をミュートしましょう。

iOS の画像 (5)

ちなみにこのパワーコードやFコードといったコードを指で素早く抑えられるようになるのに本当に時間がかかると思います。自分のギターの先生は「1年くらい通っている生徒さんになってこないと綺麗にポジションチェンジしてコードが弾けていない」といっていました。(もちろん大切なのは練習量なので練習の質と時間を担保すれば1ヵ月ですごくうまくなる人もいます。)ピアノとかは「猫が踏んでも綺麗な音が出る」とよくいって音を出すこと自体は簡単な楽器です(よく小さい頃にピアノをやっている人が多いのはそういう理由なのかもしれません。)が、ギターは逆で決められた音を出すことがとても難しい楽器です。それに加えて上手い人は結構涼しげな顔でギターを弾いているので、「自分にも以外できるのでは?」と思ってギターを買ったのは良いものの、いざ手にとってみれば「なんだこれ。音出ないやん。だる。めんどくさくなってきたw。」となってギターをやめてしまうケースが多いみたいです。初めて最初の頃はギターがつまらなくなることもあると思いますが、まずは継続することを第一目標にしましょう。(そのためにレッスンに通うのがいいと思うのですが….)

またギターにはとても多くの技が存在しています。代表的なものだけ名前をあげても以下のようにとても多いです。

パワーコード、オクターブ奏法、ブリッジミュート、ハンマリング、プリング、カッティング、ピッキングハーモニクス、アルペジオ、スウィープ、タッピング、ピックスクラッチ、トリル、チョーキング、ビブラート ……..

実際のエレキギターの演奏ではこれらの技を組み合わせて曲を弾きます。バカ真面目に「このコードはCで次はGで….」みたいなことはしていません。(アドリブを行うときはそういうコード進行や音楽理論が必要になりますが)

またこれらの技も楽譜で少し特殊な記載方法をしているので、作曲をしている人からこれらの記号について質問されることはよくあります。これらの技はフレーズのニュアンスを決め、奏法に関しては曲全体のニュアンスを決めたりするので、余裕があればギターをやらない人も覚えるのが良いと思います。

 

エフェクター(おまけ)

しばらくギターをやっているとエフェクターと音作りという沼が登場します。スタジオや実際のライブに出る場合、直アンだと心もとなくなる(というかつまらなく)なります。なんとなく使ってみたいとか、エフェクターボードの構成が決まってない人はマルチエフェクターとかがおすすめです。デイストーションをかけて歪んだ(ひずんだ)音がでるととても幸せな気分になれますが、普段の練習から使っているとギターがうまくなったと錯覚してしまうので、普段は直アンで運指等の基礎練に勤しみましょう

 

おすすめ基礎練習

基礎的な練習として「運指」の練習があります。はっきり言ってつまらないと思いますが、本当にうまくなりたい人はこの練習を毎日やりましょう。youtubeでみれる練習としては以下のようなものがあると思います。また教則本を買ってみるのも悪くないと思います。

 

 

また右手強化の練習も大事なので運指の練習とセットで行いましょう。

 

おすすめの曲

もちろん曲も弾いてみたいですよね。個人的におすすめな曲はこんな感じです。

『弱虫モンブラン』

THE 初心者曲です。4つのパワーコードしか出てきません。(ちなみに僕はこれからはじめました。)これはギター以外のパートもめっちゃ簡単な神曲なので、初心者バンドさんにも本当におすすめです。

 

これよりも難易度は結構高くなりますが(部内で今流行りの)roseliaの「Brack Shout」も簡単なほうだとは思います。

ちなみにアニソンギター最高難度には「God knows」や「Lost my music」があります。(後者に関しては一生弾ける気がしません)

(ちなみにこれらの原曲音源は著作者(レコード会社等)から現時点で使用許諾を受けてyoutube上で投稿されているものであるため違法ではありません(後述))

Bass

必要なもの

ベース、アンプ、シールド、(ピック)、チューナー、(エフェクター)

ベースには大きく分けて指弾きとピック弾きがあります。ピック弾きでとても有名なベーシストもいますが、指ならではの独特な響きやスラップ等のベース特有の技に指弾きが適している等の理由からほとんどのプレイヤーは指弾き(大体全体の8〜9割)です。ギターから転向した人はピック弾きをすることが多いですがベースしかやらないのであれば指弾きを選んだ方が無難でしょう。またよくネットで「ギターをやっている人はベースはできるのか」、「逆はあるのか」という議論が巻き起こっていますが、はっきりいうと「ギターがある程度できて入ればベースも弾けてしまいます」。しかしギターを弾く人のベースは特に意識をしていなければどこまで行っても「ギターリストのベース」です。(自分も実際に指摘されたことがあるので。)ベーシストらしいベースプレイを目指すのであればベースを実際に手に持ってある程度の期間の修練をすることが必要だと思います。また、ベースは一音一音の重みがギターと全然違います。ベースはドラムと合わせてリズム隊と呼ばれていてバントのいわば核のようなパートなので音の正確さやリズム感を意識して練習することが大事だと思います。(最近とある研究でバンドの中で一番重要なパートがベースであると証明されたそうです。また生音が一番かっこいいのはベースということも言われています。)メトロノームを用意して拍の頭を意識しながら練習しましょう。

 

おすすめ基礎練習

ベースもギター同様「運指」の練習が基本です。特にベースはコード弾きが存在しない代わりにベースラインによっては単音弾きで指板上を忙しく移動することが多いので特にこの練習は重要です。

 

スラップ奏法が気になるという人はこれも参考になると思います。(自分はスラップできないので偉そうなこと言えませんが…..)

 

おすすめ曲

「stand by me」は誰もが知る名曲+ベースが中心で簡単な曲なのでおすすめです。また米津玄師さんの「Lemon」もとても簡単なのでおすすめです。

ベースの高難度曲で有名なのはやはり「脳漿炸裂ガール」ではないでしょうか。(よくyoutubeでもネタにされて変態ベーシストたちがこれを弾き続ける耐久配信をしていますし。)個人的には「残念系隣人部星二つ半(はがない)」もスラップ多めでおしゃれなので好きです。(ドラムもリズムがとてもおしゃれです。THE リズム隊といったアニソンは意外と珍しいですよね)

 

 

 

Drum

必要なもの スティック、(練習パット)

家などにスペースがある人は電子ドラムセットを買うことがおすすめですがなかなかそういう環境を手に入れるのは難しいと思うのでまずはスティックと練習パットを買いましょう。どちらも5000円以内で買うことができます。また今はどこのスタジオでも個人練習ができて本物のドラムセットで練習することができるので少しお金がかかりますが行ってみるといいと思います。初めてスタジオを使う場合でもスタジオの人が親身に対応してくれて嬉しいです。

ドラムはレッスンに通ってたりすると基本的に8ビートから始める場合がやはり多いようです。(元も子もないような話ですが4ビートと8ビートができるとその曲の簡単バージョンと称してなんとなくいろんな曲を叩いてしまえるからという理由だからだそうです。)余談ですが、上手い人の話を聞いているとステイックの持ち方で一般的に正しいと言われている持ち方はあるものの、結構彼らも最初は持ち方が適当で、速い曲や難しい曲に取り組んでいるうちに正しい持ち方に近くなっていった、手が痛くなったので痛くない+早く叩ける持ち方を模索した結果今のものになったという話が多くて驚きました。(もちろん正しい持ち方を知っていた方がいいに越したことはありませんが。)

おすすめ基礎練習

ドラムにも色々な叩き方があります。

4,8,16ビート、シングル、ダブルストローク、各種フィルイン、ハイハットオープン、パラディドル、レガート、ゴーストノート、タム回し、アップダウン奏法…..

中でも一番基本的な練習は「チェンジアップ」です。(自分はドラム専門ではないですが流石にこれは毎日やっています。)

このシリーズはPart05くらいまであるので練習パットを使った毎日の基礎練となりそうなのはこんなところでしょうか。(他にもいいものがあれば教えてください)

他にもikewakidrumさんのレッスン動画もとても親切で素晴らしいのでおすすめです。よくお世話になっています。

https://www.youtube.com/channel/UCn3nsE-vIDHhfwHjS-gUhfg

 

おすすめの曲

簡単な8ビートの練習ができる曲は奥田民生さんの「野ばら」です。レッスン動画もあるのでおすすめです

 

 

高難度ドラム曲(アニソン)は、roseliaのfire birdや「GATEⅡ〜世界を超えて〜」でしょうか。

KeyBoard

これに関しては本当に初心者なので、ピアノが上手い人に聞いてください。(高校時代クラスの3分の1は経験者だったので、世間一般的にそのような分布をしていると勝手に思っています。)この前部室にあるキーボードを触ってとても楽しくてやってみたいなと思ったりしたのでキーボード、ピアノがお上手な方はぜひ教えてください。

 

素人目線でですがアニソンだと「this game」や「Ringing Bloom」とかを弾けたら格好良さそうですよね。

 

(なおこの動画に関して、原曲音源が使われていますが、この動画はレコード会社からの音源使用許諾を現時点で得ているものであるため後述するJASRACの規約に基づきリンクとして載せても問題はないと判断した上で掲載しました)

 

TAB譜について

ギターとベース専用の楽譜のことをTAB譜と言います。皆さんに馴染みのある楽譜は、五線譜と呼ばれる楽譜だと思いますがこのTAB譜は、ギターやベースの指板を図にしたような楽譜で、数字がフレット数、横線が弦に対応しています。なので少し見方に慣れれば五線譜よりも簡単に楽譜を読むことができます。

iOS の画像 (7)iOS の画像 (6)

 

しかし注意しなければならないことに、市販で売られているバンドスコアに収録されているTAB譜は「間違いではない間違い」が多く存在しています。こういうTAB譜は耳コピできる人がDTMで使うようなソフトを使って楽譜を打ち込んでいますが、大抵の人は楽器をやっていないためおかしな音配置をしてしまっている場合がとても多いです。ギターやベースの指版上では同じ音が複数箇所で鳴らせる構造をしているため、実際には指で移動することが物理的に不可能に近い位置の音が楽譜上で指定されていることがほとんどです(どの曲でも一箇所はそういう箇所があるイメージ)。これによって主に初心者が「こんなの弾けないよ」挫折してしまうケースが多いです(市販のバンドストアはクソ)。このことを頭にできるだけとどめておいて、実際に楽器を弾く人は「TAB譜を信じすぎないで押さえやすいポジションを探す」、楽譜を作る人は実際に楽器に触れたことがなくても、「あまり物理的に不可能に思われそうなものを書かない」ことを意識すべきです。

 

個人的な意見

部内で楽器を始めた人でミュージックスクールに行ってレッスンを受け始めたという人の話を聞きません。みなさん独学でやっていらっしゃると思うんですが、僕は楽器をやるならちゃんとした楽器のプロにレッスンをつけてもらった方がいいと思います。ここには書ききれないほど初心者が独学するとはまってしまうポイントがいくつもあってそれが長期的な成長を阻害してしまいます。(特に各楽器の持ち方や、構え方、姿勢、弦楽器ならオルタネイトピッキングやミュートなどなど。)勉強ならただ本と紙とペンを持ってペンの握り方さえ知っていれば独学でも脳にインプットすることができますが、楽器(あとスポーツとかも)はそうは行かないと思うので、他人(しかもその道のプロ)に自分の演奏を客観的に見てもらえる環境を構築しましょう。

 

著作権について

スクリーンショット 2019-12-08 18.21.20

上記画像はJASRAC公式ホームページからの引用です。今回リンクとして貼った動画は全てこれらの要件を満たしています。もし何か間違えて著作権法に触れてしまっている可能性がある場合はこの記事の著者までご一報お願いします。

最後に

趣味として始める程度ならいつ楽器をはじめても遅すぎることはないと思うので、音楽に興味のある人は実際に楽器を手にとってはじめて見るといいと思います。(この記事が参考になれば幸いです。)

p.s.  Rinjuくん、今度レコーディングを体験しに行きましょう。

 

 

「Twinkle Stars」の修辞学的考察【後編】

←5日目 7日目→

この記事は、KCS AdventCalendar2019 6日目の記事です。

こんにちは。KCS音楽班のRinjuです。これは、3日目の記事「「Twinkle Stars」の修辞学的考察【前編】」の続きです。「映画スター☆トゥインクルプリキュア 星のうたに想いをこめて」の挿入歌および主題歌である「Twinkle Stars」(作詞:大森祥子さん、作曲・編曲:高木洋さん)を修辞学的に考察します。

日吉代表supercellくんが「心で」わかったことは何か? ということで前編が終わりました。そこから始めます。

前回にプラスして、題材曲を紹介します。

Twinkle Stars CD音源版(2番のみ)

前回の動画とは何が違うのでしょうか。

イントロ・アウトロの違いはありますが、最も重要な違いは、サビにあります。シンセサイザー音色のメロディが加わっているのがわかると思います。

なぜこの音色なのか? なぜこのメロディなのか? なぜこの調で歌われているのか?

その理由が物語の中に見出せるのが、この曲のすごいところであると思います。

3.もう一つの旋律に表現された物語

「Twinkle Stars」の歌詞ラスト、「We’re Twinkle Stars!!!!!!」には感嘆符「!」が6個あります。一方で、クレジットには「歌:キュアスター(CV:成瀬瑛美)、キュアミルキー(CV:小原好美)、キュアソレイユ(CV:安野希世乃)、キュアセレーネ(CV:小松未可子)、キュアコスモ(CV:上坂すみれ)」の5人の名前、そして実際に聞こえる人の声も5人分です。

映画を観れば答えは明白です。6人目は映画に登場するキャラクターのユーマです。元になったのは、シンセサイザー音色とTwinkle Stars作曲者の高木洋さんの声です[1]。

ユーマはプリキュアと異なるメロディを歌っています。そのメロディは、曲が進行するにつれて次第に高度なものになっていきます。この遷移を、物語との結びつきから精査します。

「ながれぼしのうた」は「Twinkle Stars」に内包されていますが、ここではあえて分けて表記することにします。

1)「ながれぼしのうた」(0:49~1:04)

ユーマがひかるとララの歌声に反応して、ニ長調(:D)で「ながれぼしのうた」を歌っています。これはひかると海辺で歌ったときの調と一致しています。

2)「Twinkle Stars」2番サビ(3:55~4:21)

サビ直前にララの眼前にユーマの顔と同じ緑色の音符が現れます。TV ED版にはありませんが、映画ではこのとき遠方に魚のようなユーマの姿があります。

サビメロの裏で、ユーマはト長調(:G)で「ながれぼしのうた」を歌っています。このとき明確にユーマはララたちを認識していると考えられます。なぜなら、ユーマの記憶にある「ながれぼしのうた」はハ長調(:C)またはニ長調(:D)でしか演奏されたことがないからです。移調して歌うことができたのは、ララたちの歌声がはっきり認識できたからだと思います。

ここで、ユーマは既存のメロディを移調し、作曲行為はしていないことに注意します。

3)「Twinkle Stars」2番後間奏(4:34~4:47)

同様に伴奏に合わせてト長調(:G)で歌っています。物語では、星の生まれ変わりが始まります。

4)「Twinkle Stars」Cメロ(4:57~5:08)

星の生まれ変わりをバックに、ララとひかるが歌っています(CD音源ではプリキュア全員が歌っている一方で、映画では二人だけが歌っています)。

このときのユーマのメロディは、主旋律に寄り添うオリジナルの対旋律(オブリガート)です。つまり合いの手です。他者の声を聴いてそれに合わせることができています。

ここでユーマは初めて作曲行為(メロディを自ら作ること)をしました。メロディに着目すると、それは順次進行だけで構成されていることがわかります。順次進行とは、音階をなぞるような、隣の音に移動するメロディの動きのことです。聴けばわかると思いますが、簡単なメロディです。

5)「Twinkle Stars」Dメロ以降(5:26~5:41、5:52~5:58)

ユーマが魚から種々の動物の姿をとってヒトへ…と変化しながら歌っています。

旋律は初め「ながれぼしのうた」、その後オリジナルのメロディです。しかも、順次進行に留まらず跳躍進行(隣の音を飛び越えたメロディの動き)、細かい音符を交えた難しい動きをさらりとやってのけています。この後の映像では、生まれ変わりを終えたユーマの星の姿が現れています。

最後は、プリキュアが「We’re Twinkle Stars!!!!!!」と歌うときに一緒に歌っています。「!」の数の通り6人歌唱です。

 

「Twinkle Stars」は星の生まれ変わりと共に歌われています。ユーマのメロディは物語の進行に合わせて次第に高度なものになっています。主旋律が物語のテーマと結びついたマクロ視点のメロディである一方で、ユーマのそれは物語の進行自体と結びついたミクロ視点のメロディであると言えます。

4.ループ再生について

「Twinkle Stars」には音が上に上がったように聴こえる転調しかありません。歌メロに限って言えば、:C→:D→:F→:Gと上に向かうのみです。これは聴き手の気持ちを高揚させる効果があると同時に、ユーマが宇宙へ去ってしまう物語を反映しているように感じられます。

ここで「Twinkle Stars」のアウトロの音を確認します(図1)。

Twinkle

図1 Twinkle Starsラストと冒頭「ながれぼしのうた」は滑らかに接続する

ストリングスメロが、「シ」で終わった感を出したあとに、何故かもう一音「ソ」を弾いて終わっています。1曲ループ再生にするとわかりますが、この音は「ながれぼしのうた」の最初の音とピッチが一致します。さらに、このときのコード(和音)に着目すると、最後のコードはG、最初のコードはCです。G→Cは最も基本的な「自然に進行できる」コード進行です。「Twinkle Stars」を歌い終えたあと、何の支障もなく「ながれぼしのうた」を歌い始めることができるようになっています。調性はどんどん離れていくのに、その実歌い終えたあとまた「ながれぼしのうた」を歌えることは、終盤の歌詞「さよならはさよならじゃない」、ロケットに乗ってユーマに会いに行こうという物語の結論によく合っています。

5.映画における「ながれぼしのうた」の調性について

映画の中で、「ながれぼしのうた」はハ長調、ニ長調、ト長調(Twinkle Starsのみ)で流れました。以下、各場面各媒体で流れた「ながれぼしのうた」の調性をまとめました。()の中にあるのはその調の主音です(Cはド、Dはレ、…、Bはシ)

映画公式サイトhttps://www.precure-movie.com/pc/song/:ハ長調(:C)→ニ長調(:D)

映画冒頭(サントラ「ながれぼしのうた」オルゴール):ハ長調(:C) ※1

ユーマが再生していたオルゴール:ハ長調(:C)(途中まで)

ララがユーマに歌ったとき:ハ長調(:C)

ひかるがユーマに歌ったとき:ハ長調(:C)→ニ長調(:D)(なんで???)

Twinkle Stars:ハ長調(:C)→ニ長調(:D)、ト長調(:G)

映画ラスト:ニ長調(:D)(Twinkle Starsにおける「ながれぼしのうた」と同じ伴奏)

※1:フル尺だが「すべてハ長調」

童謡が途中で転調して、しかも調号が二つ増えるとかマジか? という感想を最初は抱きました。あの世界の音楽の水準がこちらの世界よりも高いと思えば納得できます。しかし、※1を付けた映画冒頭は、「ながれぼしのうた」がフル尺で流れているにも関わらず転調しません。その後も、「ながれぼしのうた」はハ長調で演奏され続け、ひかるがユーマに歌いかけたとき初めてニ長調が登場しました。映画は、「ながれぼしのうた」をユーマが歌っているところで終わりますが、その調はニ長調です。

ハ長調は童謡なので納得できます。しかし、それがニ長調に転化することにどんな意味があるのでしょうか?

その音響的な効果に着目するならば、音を上げることで、聴き手に上を向かせたいという意図が考えられます。ニ長調に転調したとき、確かにユーマはひかる・ララに対して上にいますし、映画の終わりでは空の彼方でユーマが歌っています。これは【前編】で言及した音楽の先生から頂いた意見です。

一方で、ニ長調という調性自体を物語と紐づけて考えることもできます。ニ長調はクラシックの書き方ではD-durです。そこからバロック期周辺で神(Deus)の調とされており、聖歌に好んで用いられたそうです[2]。

従って、「地球の童謡が新たな星の聖歌になった」と解釈することができます。

僕はこの結論が好きです。なぜかというと、同じ監督・脚本・作曲家の「映画魔法使いプリキュア! 奇跡の変身! キュアモフルン!」でモフルンが一度〇〇で〇〇するのを見て「モフルン、メシアじゃん」と思ったからです。ちょっとキリスト教の匂いがしたわけです。それに、今回の映画で「Twinkle Stars」が流れていた約7分間には、「神の7分間」とでも呼ぶべき、ある種宗教的な、説明し難い美しい現象(星の生まれ変わり)が起きていたので、宗教的な解釈を付けてみたくもなります。

実は、ニ長調の意味を調べて「神の調」に辿り着いたのではなく、別件で「神の調」を調べたらニ長調に辿り着きました。すごい廻り合わせですね。

12/09追記 6.声の位置関係について

アニメおよび映画での立ち位置は、悉くキュアスター(ひかる)が右、キュアミルキー(ララ)が左ですが、音の定位は逆(キュアスターが左、キュアミルキーが右)です。これはどうしてでしょうか? 新たな情報を求めて、12月8日(日)、僕は東映アニメーションミュージアムを訪れました。高木洋さんを初めとしたスタッフの皆さんのコメント色紙やキュアミルキー変身シーンの線画を見ることができて感無量でした(感想)。そこで、以下の文章を見つけました。

映画の物語と歌がリンクし、さらに、プリキュアが踊るダンスも加わることで、ライブのような一体感を感じる体験は、今作ならでは!劇中のプリキュアと一緒に歌って踊って、より、映画に参加しているような感覚を満喫していただける作品になっています![4]

(同様の文章を[4]で見つけたのでそちらを引用しました)

聴き手を舞台を見る側ではなく、舞台に共に立って歌う側にするために、CD音源ではこのような配置なのだろうと思います。一方で、劇中の位置関係はひかるが左ララが右だったので、映画で流れた音源では通常の定位なのではないかと思います。これについてはDVD & Blu-rayの発売が待たれます。

さいごに

「Twinkle Stars」が歌われた7分間は、監督曰くユーマの夢を言葉を介さず伝えるために「謎の感動」「『なんだかよく分からないけどすごいものを観た』というインパクト」で観ている人(子供たち)のイマジネーションに訴えかけることを狙ったそうです[3]。本当情動が揺さぶられるし理解を超えているしで言葉を失いますが間違いなく「美しい」とは断言できる、そんな最高の7分間でした。それもあって、映画1回目を観たあとの感想は「何か言うには美しすぎる」でした。人生で初めて複数回同じ映画を観に行きました(プロメアは未遂)。本当に素晴らしい作品ですし「Twinkle Stars」は神です。この記事を通して興味を持ってもらえたら、ぜひ観て欲しいし聴いて欲しいです。

もし観たくなった場合には、日吉周辺ですと、12月7日(土)、12月8日(日)は

イオンシネマ 港北ニュータウン:土11:05~ 日11:05~

渋谷TOEI:土14:10~ 日14:10~

などで観られます。Googleで「映画スター☆トゥインクルプリキュア」と調べるとすぐにわかります。少なくとも来週木曜まではどこかしらの映画館で上映されているようなので、この機会にどうでしょうか。

8u+4くんやsupercellくんは本編未試聴にも関わらず大変感動した様子で、僕と一緒に2回目を観に行くほどでした。また、大学外の友人も、本編未試聴と思われますが、映画の内容およびその魅力を十分に理解して楽しむことができたようでした。主要人物が少なく、初見でもわかりやすい作りをしているので、映画だけでもめっちゃくちゃ楽しめると思うのですが、いかがでしょうか。

さて、それでは、本日はここら辺でお暇致します。ここまでお読み頂き、ありがとうございました!

 

追記

ループ再生と調性のくだりは僕の考えすぎだったようです。

参考文献

[1]アニメージュ スター☆トゥインクルプリキュア特別増刊号 39ページ

[2]月刊クラシック音楽探偵事務所「ハレルヤコーラスはなぜニ長調なのか?」

[3]アニメージュ スター☆トゥインクルプリキュア特別増刊号 42, 43ページ

[4]PR TIMES『映画スター☆トゥインクルプリキュア 星のうたに想いをこめて』スペシャルダンスイベント開催!!成瀬瑛美&小原好美が映画のテーマ【うた】と【ダンス】を熱く語る♪

←5日目 7日目→

「Twinkle Stars」の修辞学的考察【前編】

この記事は、KCS AdventCalendar2019 3日目の記事です。

←2日目 4日目→

 

こんにちは。KCS音楽班のRinjuです。この記事では、「映画スター☆トゥインクルプリキュア 星のうたに想いをこめて」の挿入歌および主題歌である「Twinkle Stars」(作詞:大森祥子さん、作曲・編曲:高木洋さん)を修辞学的に考察します。音楽理論の話はしないので、音楽班以外の人にとっても面白く読んでもらえるのではないでしょうか。よろしくお願いします。

まずは題材曲を紹介します。

Twinkle Stars(TVED ver.)

余談ですが、イントロとアウトロをED用に作り、重要なメロディを抜くことで、映画で観るまでは普通の曲(言うまでもなく良い曲)に聴こえるようにしているのがスゴイと思います。

本記事で扱うのは上記Short ver.ではなくフルver.なので、この記事を読んで気になった人は音源を買うか、僕からCDを借りるかしてください。

原理

物語と音楽の繋がりと言えば、古きに目を向ければ古代ギリシャの劇(ドラーマ)まで遡れるのではないでしょうか。僕はそこら辺は未履修なので、現在履修中のバロック音楽(オペラ)の理屈で以って当該曲を考察します。しかしながら、「Twinkle Stars」作曲者の高木洋氏は音楽大学出身で、「ルパンレンジャーVSパトレンジャー」OPにて対位法による作曲を披露している(対位法はバロック時代に発達した作曲法です)ので、この仕方で得られる考察はまあまあ的を射ている可能性がなくもなくもなくもないかなと思います。

注目したいのは、「フィグーラ(音楽的修辞)」です。フィグーラとは、表現したいことを伝えるために用いられる特別な音の使い方を意味します。死を表現するときには音を下降させ、気持ちの悲痛さを伝えるために敢えて不協和音を鳴らす、といったことです。

なお、本記事で扱うフィグーラはバロック音楽に見られるそれと必ずしも同一ではなく、あくまでその考え方に当てはまる事柄をまとめたものです。バロックのフィグーラに興味がありましたら、一般教養科目の音楽を履修してください。先生の名前は、こういう場で言っていいかわからないので、リアルで聞かれたら答えます。また、この記事に書かれている内容は完全に僕の主張であって、今回の考察が見当違いだったとしてもそれは僕が勉強不足なだけということをここにことわっておきます。

以上をまとめると、「Twinkle Stars」に使われているフィグーラを発見し考察するのが、本記事の主題です。

 1.構成

「Twinkle Stars」は映画の内容に従った曲構成をしています。

まず、「Twinkle Stars」が劇中で歌われるに至る物語を書きます。

星の子ユーマは、成長して星になる生き物です。終盤、敵の強烈な悪意を受けて、ユーマは黒く禍々しい星になってしまいました。プリキュア(ひかる:キュアスター、ララ:キュアミルキー)はユーマを救うために、星の中に入っていきます。

星は、ユーマがひかる、ララ、フワ(妖精キャラ)と一緒に見たものの記憶で出来ていました。二人は星から雷を受けて、変身が解け、星のコアに落ちていきます。

海の中で、以前ユーマが混乱したときに「ながれぼしのうた」(劇中に登場するきらきら星に似た童謡)を歌ってあげたら落ち着いたことを思い出したララは、同じように「ながれぼしのうた」を歌います。ひかるがそれに続くと、どこからかユーマの声が聞こえてきました。二人は歌い続けます。そうして「Twinkle Stars」が始まります。

CD音源を聴くと、「Twinkle Stars」が、この曲が歌われた文脈までも内包していることに気が付きます。つまり、「Twinkle Stars」は「ながれぼしのうた」が歌われるところから始まります。

以降、物語に応じた曲展開・メロディが見られます。

構成をまとめます。

「ながれぼしのうた」(ハ長調(:C)→ニ長調(:D))

「Twinkle Stars」1番(ヘ長調(:F)→変ロ長調(Bb)→ト長調(:G))

「Twinkle Stars」2番(ト長調(:G))

「Twinkle Stars」Cメロ、Dメロ、Eメロ(ト長調) ※ラスサビはない(!)

この構成は、物語によって説明されます。1番ではひかるとララが変身し、2番ではユーマがプリキュアに気付き、その後は星の生まれ変わりを描いています。詳しくは以降で説明します。

作曲法はフィルムスコアリング(映像が先にあって音を付ける手法)ではありませんが、田中裕太監督、脚本の田中仁氏の考えに基づいて高木洋氏が映画と同時進行で作られたそうですので[1][2]、物語との結びつきの強さには説得力があります。

2.主旋律に散りばめられた律動

ベートーベンはバロックの作曲家ではありませんが、「運命」のダダダダーン!が、運命が扉を叩く音だというのはよく知られた話だと思います。

それに似た話をします。

ここに心音のリズムとでも呼ぶべきリズムがあります。

心音を模したリズム

図1 心音のリズム1

※図1はNotionというソフトウェアで作りました。今日初めて使ったので左端の謎休符コンボとか右端の黄色い長方形とかは是非温かい目でスルーしてください。

ド・クン、ド・クン…というリズムです。図1では、「ド」を弱拍に、「クン」を強拍に置く形で書いています。

これが用いられている曲としては、高取ヒデアキさん作曲「Alright! ハートキャッチプリキュア!」、Revoさん作曲「心臓を捧げよ!」が挙げられます(いずれもサビ)。

Alright! ハートキャッチプリキュア!(2:53~)

心臓を捧げよ!(5:32~)

TVの方のスター☆トゥインクルプリキュアでもこのリズムは登場しています。プルンスの推し・マオの歌「コズミック☆ミステリー☆ガール」(渡辺剛さん作曲)です。「盗んだハートは大切なコレクション」等と言った箇所です。恋して胸がドキドキ、ということでしょうか。

さて、Twinkle Starsのサビではこの心音のリズムが用いられています。

高木洋氏本人が書いた楽譜は、サビ冒頭のみ映画コメント色紙にて確認できました[3]ので、図2ではそれに基づいて楽譜を書きました。

心音を模したリズム

Twinkle Stars「わたしたちは星」

図2 Twinkle Starsに見られる心音のリズム1

煩雑さを避けるために約2小節分だけ書いていますが、この後は繰り返しなので結局心音のリズムが続きます。楽譜で確認しなくても、歌ってみればそれが同じリズムだとわかると思います。

次に、心音のリズムを1.5拍後ろにずらします。

心音のリズム2

図3 心音のリズム2

クン、ドクン、ドクン…という感じですね。これはTwinkle Stars Aメロ、「「わくわく」はどこから来るの? ときめく想いが連れてくる」の箇所等で部分的に使われています。初めに置いた「Twinkle Stars」の動画で、キュアスターが胸の高鳴りをジェスチャーで表現しながら「わくわく」と歌っているのがわかると思います。

さらに、心音のリズム1を0.5拍前にずらします。

心音のリズム3 (2)

図4 心音のリズム3

ド(強拍)クン(弱拍)、ドクン、…という感じです。

これはTwinkle Stars Cメロの「遥かなプレゼント きみとの記憶が 未来で希望、力になる」等の箇所で部分的に用いられています。

このように、Twinkle Starsには心音のリズムが散りばめられています。

ユーマというキャラクターは、「星もまた生き物である」ことを体現しています。星と「わたしたち」を結ぶモチーフとして、命を表現しようとして心音を用いたのだと僕は考えています。また、ユーマたちは劇中で地球の秘境巡りをしますが、その中には地球の心臓であるところのコアに繋がるヤスール火山もあります[4]。脚本の田中仁氏は、美しい大自然を巡る中であえて危険な火山を選んだことについて、

マグマの下には地球のコアがある。ユーマ自身も実は星のコアなので「同じ属性のものが直接触れ合える場所」という意味も込めてセッティングしました。[5]

と述べています。「ながれぼしのうた」を歌う前にひかるとララが落ちていくのはまさに星のコア(ヤスール火山の記憶)でした。そうして、Twinkle Starsが歌われたのは星の中心にあるオルゴールでした[6]。それが歌われる物語的意味から考えても、またそれが歌われる場所から考えても、Twinkle Starsで心音のリズムを使うのは最適で、最高に物語に寄り添った選択だったと思います。

これは感想ですが、星と「わたしたち」が同じだという歌で、断定形の歌詞が多い中で、Cメロの「きみも同じだといいな」が祈るような言い方なのが泣ける。ユーマとはいつかは会えるのだろうけれどユーマが「今」どう感じているかは想像して、そうだといいなと思うしかないんですね。でもその気持ちは弱くなくて、そうだよねって信じている。メロディで「同じだ」歌詞で「同じだといいな」って…………

次回予告

この曲については、現状あと4つ扱うべき事項があるんですが……。今回のように楽譜を作る必要があるのはあと1つだけなので、後編に回しても労力的には問題ないと思います。

「Twinkle Stars」には、フルにはあるがTV ED版にはない音色があります(実は映像にもあります)。フルにだけ入っている音を抽出してLINEに投げてみました。具体的には、TV ED版の位相を逆にして、ノイズキャンセルの要領でフルからTV ED版と同じ音を消して再生した動画を送りました。その際の反応がこちらです。

Reaction

日吉代表supercellくんは、いったい何が「「言葉」でなく「心」で理解できた!」のか? 続きは12月6日(金)のアドベントカレンダーにて。乞うご期待!

参考文献

[1]コミックナタリー 映画「スタプリ」ユーマの声を担当したのは…田中裕太監督らが制作秘話明かす

[2]アニメージュ スター☆トゥインクルプリキュア特別増刊号46ページ

[3]Twitter_映画スター☆トゥインクルプリキュア

[4]「映画スター☆トゥインクルプリキュア 星のうたに想いをこめて」パンフレット

[5]アニメージュ スター☆トゥインクルプリキュア特別増刊号47ページ

[6]アニメージュ スター☆トゥインクルプリキュア特別増刊号42ページ

←2日目 4日目→

メタボールパズルゲームを作る -メタボール編-

 unity1weekお疲れさまでした.今回は私は以下のようなゲームを作成したので遊んだことのない人は是非プレイしてみてください.

unityroomへ移動

 ちなみにツイートのいいね数が150を超えていて地味にうれしいです.

 本記事ではゲームで使用した主要な技術について軽く解説していきます.なお,サンプルプロジェクトも用意しておいたので気になる方は以下のリンクをどうぞ.

サンプルプロジェクトへ移動

2次元のメタボールを描画する

 さて,このゲームで最も特徴的なのはメタボールだと思います.メタボールとは,2次元のグラフィクスにおいては滑らかな曲線を描画するための技術です.ゲームキャラクター(メタボ~ル)はこの技術によってスライムのような滑らかな表現を表すことができるようになっています.

 以降はメタボールの数式的な理解,及びシェーダ上での実装を順に見ていきます.

メタボールを数式で表す

 まずは,数式を交えながらメタボールの表現方法を述べていきます.
メタボールは一言でいうと,あるピクセル上の点\((x,y)\)において,密度関数\(f_i(x,y)(i=0,…,N)\)の重ね合わせが閾値\(t\)を超えた際に色を塗り,そうでない場合は地の色を塗ると言った処理を全ピクセルに渡って行う操作によって有機的な形状を描画するグラフィクス技法のことです..

 具体例を見てみましょう.\(N=2\)とし,密度関数が次のように表されるとします.

$$
\begin{eqnarray}
f_0(x,y) &=& \exp(-(x^2+y^2)),
f_1(x,y) &=& \exp(-((x+2)^2+y^2))
\end{eqnarray}
$$

 \(f_0\)をグラフにすると次のようになります.なお,\(f_1\)に関しては単に\(f_0\)の中心位置を負の方向に2だけ移動したものになります.

 分かりやすいように等高線で表すと以下のようになります.

 例えば最も濃い部分から3つ目のオレンジ色の部分を閾値\(t\)とすれば,この\(f_0\)によって円形の画像が描画されることが分かります.

 そして,これらの密度関数を重ねあわせると次のようになります.

 等高線では以下のように表されます.

 もうメタボールが見えましたね.この場合,オレンジ色の部分は次の式を満たしていると言えます.

$$
f_0(x,y) + f_1(x,y) > t
$$

 『つながるメタボ~ル』ではキャラクターの位置を中心とした\(f_0\)のような関数を定義してやることで滑らかな表現を実現しているのです.

シェーダで実装する

 それでは具体的な実装を行っていきます.今回の実装では次の2ステップに分解ができます.

  1. スプライトの描画
  2. 全体にイメージエフェクトを適応する

 1.のスプライトの描画は前節で言う,密度関数の定義に当たります.スプライトの描画は4点の頂点で正方形を表しその内部に色を載せていきます.すなわち,頂点シェーダで中心位置を移動(実際にはtransformで調整しています)し,フラグメントシェーダで密度関数の本体を書くことになります.
 そして,2.の操作は閾値を超えているかどうか判定をする操作に当たります.

 それでは実際のプログラムを見ていきましょう.

 長々と書いてありますが,注目すべきは2点のみです.
 まずは23行目です.ここでは透明なオブジェクトをどのようにブレンドしていくかを決定します.今回はメタボールの密度値(密度関数からの出力)をα値に格納するため,適切にブレンド方法を決める必要があります.今回の描画では,地の値をそのまま保存しながら描画しなければならないため,One Oneで指定します.

 そしてもう一つの注目点はフラグメントシェーダです.58行目でスプライトの中心位置からの距離を計算し,59行目で計算した密度関数の出力結果をα値に書き込んでいます.なお,使用する密度関数の形式には特に規定がないため,前節のものとは異なる数式を使用しています(2の累乗数は,プロセッサによっては特殊関数が用意されているためですが,アセンブリが最適化されているかは確認していません).最後に60行目では色をうまくブレンドする際に利用に密度値を参照するために残しておきます.α値に直接密度値を書き込んでいるので必要ないように感じますが,α値は後で上書きしてしまうため,色もうまくブレンドするにはこのようにする必要があるのです.

 続いて,イメージエフェクト用のシェーダです.

 こちらはフラグメントシェーダにのみ注目してください.46行目が核となる部分です._Cutが閾値を表しこの値を超えないピクセルについては黒く塗りつぶします.

Unityで実装する上での注意

 以上でメタボールを描画することができるのですが,一つ注意が必要です.それはUnityは基本的に各色を8bitで表し,0~1を256段階に区切った色しか出力できないという点です.もしも1を超えてしまう場合は,1にクリップされて出力されます.今回算出する密度値は重なりが大きいと1を超えかねないため,何も対策をしないと以下のように一部分が白くなり,光ったような表現になってしまうのです.

Image from Gyazo

 これを防ぐためにはおそらくレンダーテクスチャに描画するしかありません(CameraのAllow HDRtrueにするだけで良さそうですがうまいこといきませんでした).レンダーテクスチャでは色のフォーマットを8bitだけではなく,16bitまたは32bitにすることができます.これによって,値がクリップされることをできるだけ防止することができます.したがって,実際に試してみたい方は次のようにレンダーテクスチャを作成し,カメラの描画先をレンダーテクスチャに設定してください.

Image from Gyazo

 レンダーテクスチャを表示するためにはuGUIのRawImageを使用します.

Image from Gyazo

 すると,次のようにきれいなメタボールを描画できるというわけです.

Image from Gyazo

最後に

 以上でUnity上でのメタボールの実装は完了です.『つながるメタボ~ル』の実装には他にも様々な要素がありますが,今回は疲れたのでここで終了にします.
最後まで読んでいただき,ありがとうございました.また,実装についてアドバイスをして頂いたchokopan先輩,ありがとうございました.
 気が向いたらphotonについての記事も書いていこうと思いますのでその時はまたよろしくお願いします.

画面情報でモデルを照らす:kcstuber開発日記

どうも,チョコです.

KCSTuberをn年ぶりに更新しました.古いChokoEngine(研究でforkして作業している)を使っているせいで,最適化が反映されていない.つらいさん.

さて,前々からやりたかった課題として,以下のようなものがある.

KCSちゃんは画面を見ているから,画面情報によって照明が変わるはず.と.

 

....

いや,ちょっと面倒すぎないか.

 

....

仕方ないので,実装を考えましょう.linuxはさておき,画面をキャプチャーするwinapi関数にない(と思う)し,どうやればいいか困りますね.

そこで,まず考えたのはこれ.

OBSで画面をキャプチャーしてストリーミングし,ffmpegで取得する.

おう.天才.(と思うじゃん?)

OBSで出力するのは簡単なので詳細は省いて,要はlocalhost:1234に映像データを吐くようにすればいい.

そして,悪夢のffmpeg.このようなクラスを作ろう.

実装はffmpegの仕様を見て自分で考えましょう.(ないんですよ最新の仕様がぁ.)

まあ,ストリームを取得するところはこんな感じですね.

はい,映像の配列を取得したとしましょう.あとはOpenGLに渡せば好きにし放題だね.

っと,その前に..

 

いやあ,さすがにこれはひどい.このやり方の問題点を考えてみよう.

1.OBSを立ち上げる必要がある

2.映像の質がわるい

3.OBSを立ち上げる必要がある

4.ユーザがいちいち設定する必要がある

5.OBSを立ち上げる必要があるため,配信するときはOBSが2つになっちゃう

 

だめじゃん.

 

そこで,もう一つの神のFOSS,VLCを思いついた.

そう,libVLCを使えばいいじゃん.と.

 

はい,解散解散.

 

libVLCを画面をキャプチャーするのは簡単.一応公式のサンプルもあるし,gistも落ちている.が,両方とも少しずれているので,我のものも見せよう.

ここで,transcode{vcodec=RV24}を指定すると,画素データがBGRの8ビットづつになるので,変換する必要性がない(!).神.

 

そして,この得たデータをOpenGLに渡せばいいね.

これを描画すると,こんな感じになりますね.

Screenshot (535)

いぇーい.ノイズもないし,すごいぬるぬる.

 

では,最後にこれを使ってKCSちゃんを照らそう.結局KCSちゃんはアニメ風なので,ちゃんとHDRIとして使うと不自然になっちゃう.そのため,適当に照らそう.

要するに,ぼかした背景をオーバーレイするだけ.

OpenGLコードは説明する必要ないでしょう.(勉強したい方はCG班に入ってね☆)

,,と言ったものの,色の組み合わせは一応こんな感じですね.

これの効果を一行一行見ていくと:

1:ぼかす

Screenshot (542)

2:KCSちゃんの元の色を下げる

Screenshot (543)

3:ぼかしたテクスチャを描く

Screenshot (544)

はい終了.割と簡単ですね.これを動画にするとエフェクトがはっきり分かりますね.

KCSちゃんかわいい.では.

Marloコンペ用の強化学習環境をサーバーに立てた話(おまけ:Google ColabでDQN)

はじめに

こんにちは、syuntoku14です。現在カリフォルニアでスマブラしてます。イカちゃん強いね。

 

スマブラのせいで時間がなくなってしまったので、本記事ではDavisで作成した無についてしゃべります。

 

皆さんMarloコンペというのをご存知ですか?OpenAIが主催しているMinecraft環境での強化学習の大会で、入賞するとカナダに行けたりするすごいやつです(もう終わっちゃいましたが、来年もあると思います)。

 

MarloコンペのチームにDavisで参加し、私は環境構築を担当したわけなんですが、この環境構築が鬼めんどくさかったのでスクリプト化しました。

 

一応公式ページにインストール方法などは書いてあるんですが、Minecraft環境非常に不親切で、ウィンドウがある環境でないと動きません。このままではGoogle Cloudなどクラウド上で学習させることが出来ません。困りましたね。

 

 やったこと

 

xvfbを使って仮想ウィンドウを作成し、Marloを走らせました。が、これだけではなぜか動かなかったので(OpenGL周りが原因?)、最終的に公式が配布しているDockerファイルを弄くり、中にあるlaunchClient.shをxvfb付きで実行したら動きました。

 

最終的に出来上がったDocker imageがこれです:

 

以下のコマンドで任意のポートにつなげて実行できます。

 

“`
docker run -it –rm -p [number of port]:10000 syuntoku/marlo_client
“`

 

ここまで自力で頑張ったあとで、これDocker Hubに既に存在していることに気がついてしまいました。圧倒的車輪の再発明だったんですね(悲しいね)。まあDockerについての知識が微妙についたので良いんじゃないでしょうか。

 

あとはこれをdocker-composeと–scaleオプションで並列化させて実行するだけです。(スクリプトにしました)

 

クラウド上で利用するにはDockerやCUDA、Anacondaのインストールもやらないといけないので、これもスクリプトにしました。

 

できたもの

Github:

https://github.com/syuntoku14/marlo_headless

使い方は一応READMEに書いてあります。

 

手順:
1. AWSでもGoogle Cloudでも何でも良いが、Ubuntu18.04環境を立ちあげる。
2. Jupyterの設定も勝手にしするので(ポート5000)、各クラウドのブラウザから5000番ポートを開けとく
2. 中でgit clone https://github.com/syuntoku14/marlo_headless.git
3. . ./marlo_headless/install/gcp/install.bash
4. . ./marlo_headless/docker/launch_multi_client.sh [number of environment]

 

私はVimmerなので、Jupyter-notebookのvim extensionをセットアップするスクリプトなども別でついてます。

 

肝心の学習ですが、まだやっていないです(無能)。学習させたらまた記事を書きます。おちまい。

 

おまけ

 

Courseraの課題でDQNを実装してGoogle Colab上で動かしました。

 

Gist:

 

先ほど紹介したMarlo用のスクリプトはついでにgym環境もインストールするので、上記のgistを参考にして適当にやればGoogle Cloudで簡単にAtariの学習も出来ます。やったね。

 

Vuexについて説明したい

※この記事は、KCSアドベントカレンダー12月23日の記事です。

はじめに

はじめまして、一年のsupercell(twitter: @undermountainafu)です。この記事では自分が学習しているvuexについて説明していきます。

vue.jsについて

vuexの説明に入る前に、まずはvue.jsについて簡潔に説明しようと思います。vue.jsとは、フロントエンドで用いられるJavaScriptのフレームワークです。他のフレームワークとしては、ReactやAngularがあります。vue.jsの面白いなと思った特徴は、コンポーネント指向です。この指向は、アプリケーションをコンポーネント機能ごとに分割することで、コードの再利用、保守を容易にすることができます。他にも色々な機能がありますが、詳しくはドキュメント見てください。
vuexドキュメント

vuexとは

お待たせしました(?)、vuexについて説明していきます。これは、vue.jsを用いたアプリケーション開発の際に用いられる開発フローです。要するに、データの流れを一方向に決めようってことです。vuexでは、stateをグローバル変数のように設定します。そのため、どのコンポーネントからでもstateの値を参照することができます。stateの状態を変更したい場合は、action->mutation->stateという流れで行います。下図は一連の流れの参考図です。

vuex
図. vuexの流れ

なぜ使う?

アプリケーションでは、view、action、stateで一方向の流れになっています。しかし、共通の値を共有するコンポーネントがある場合や、一つの値を複数のviewに表示させたい場合などでは、コードが複雑になってしまいますし、状態の管理が煩雑になってしまいます。具体的には、vuexを使わない場合propsとして状態を渡しますが、その状態は親から子にしか渡すことができません。
そこで、状態の管理を楽にするためにvuexを使うのです。
vuexがどんなもので、なぜ使うかを理解した後は、各機能について簡潔に説明していきます。

state

stateは、ストアで管理される状態であり、mutation以外では変更できません。

action

actionでは、mutationの登録(commit)や、データの加工などの非同期処理を行います。actionはdispatchにより呼び出されます。また、外部APIとの通信もここで行います。蛇足になりますが、APIとの通信は、axiosを用いることが公式により推奨されています。

mutation

mutationでは、stateを変更する処理や、同期的な処理を行います。commitメソッドによって呼び出すことができます。唯一stateを変更することができる機能となっています。

おわりに

余談ですが、この記事のためにvuexのサンプルコードを書いていたのですが、そのコードが動かなかったため、のせれませんでした(雑魚)。コードを直してくれる方募集しています->Missionapp
では、おつかれ三下~!

順列における二分探索木

二分探索木

とは、お金のなる木と同じようなものです(大いなるウソ)。

とまぁ、誰にもわからないウソをついたのですが。この記事では順列における二分探索木の同型問題について話そうと思います。また、文章だけで説明できるかチャレンジしてみようと思います(絶対ムリ)。二分探索木を知っている人は絵がある所から読んでください。

さて、二分探索木とは、データ構造というものらしいです。現実に植わっている訳ではありません。これはですね、二分木と呼ばれる各ノードが最大で2つの子を持つ木、かつ、すべてのノードが左の子<=親<右の子というルールを持つ木構造のことを指します。何言っているかわかりませんね。

想像してください、絵を一緒に書くと良いでしょう。あなたは数字の神様です。しかし、神様の癖に9,7,10,3,12,8の数字しか持っていません。悲しくなって、これを二分探索木という形で海の上にばら蒔きたくなります。ちなみにあなたは神の視点で海を上から見ています。

数字を海にばら蒔くと沈むので島を作りたくなります。一つ目に作った島を二分木用語ではルート(根)といいます。そして、その島に9を置きたくなり、置きます。

次に、作った島の斜め左右に二本の橋を建てたくなります。そして、あなたは7という数字を置きたくなります。しかし、二分探索木という形で置きたいので、必然的に左の橋の先に島を作って、置きます。なぜなら、7<9であり、左の子<=親<右の子というルールがあるからです。一つ目以外の島をノードといいます。また、ややこしいことに7の島ができたお陰で、9の島は7の島の親であり、7の島は9の島の子供という関係が発生します。親、子供というのも二分木用語です。この7の島にも二本の橋を架けたくなります。

次に10を置きたくなります。9<10なのでルールより、9の島の右橋先に島を作り10を置きます。二本の橋を作っておきます。今度は3を置きたくなります。3は3<9なので9の島から左橋先の島に置こうとしますが、7がいるので置けません。困ったときはルールを思い出します。左の子<=親<右の子です。3<7なので7の島の左橋先に島を作り、置きます。3と7には親子関係が発生します。

次に12を置きたくなります。12は9<12,10<12なので10の島の右橋先の島に置きます。これを繰り返して残り8を置くと

二分探索木
二分探索木

こんなのが出来上がるはずです。たぶん…。キーワードは、二分探索木はデータ構造ということです。あとはググってどうぞ…。

本題

本題はですね、二分探索木の同型問題なのですが。状況設定はですね、1からn番目までの数字列の順列を作りたくなります。このできた数字列1つ1つを二分探索木に収めたくなります。このとき、同じ木の形ができることがあるんですね。それを判断したいのですよ。

例えば、1から3の順列を考えます。123, 132, 213, 231, 312, 321の6通りの数字列ができるわけです。この各数字列を先頭から順に木に収めると、下の絵みたいに同じ木の形になるものがあるのですよ。入力の順番は異なっても。

同じ木の形の例
同じ木の形の例

で、絵を描けば一発でわかるのですが二分探索木を作るプログラム上ではわからんのですよ。ここで記事を書いてる人は考えました。順列においては!順列お・い・ては!ここ重要なので二回言いました。同じ木の形=各ノードの場所に同じ数字がある、この考えを用いると同じ木かどうか判断できるのです。

方針は、二分探索木を回るときに同じ道筋を辿るのですよ。数字は同じ場所にあるのだから、同じ木であれば同じ数字が回った先にはあるわけですね。で、二分探索木の巡回方法には前順、中順、後順があります。中順にまわり各ノードの数字を出力すると、数字の場合は昇順にソートされたものが出てきます。これではすべて123…となって意味がないので、前順または後順でまわり各ノードのを出力すると同じ木は同じ数字列になります。

というのはすぐに思いつきました。では、順列からできた木の異なる形の木だけ取り出して線形リストにしようと思いたちます…C言語で実装したのですが苦労しました。下記の絵のイメージをしていただければいいと思います。idとかは気にしないでください。よかったら実装してみてください。1からnまでの数字列の順列を二分探索木にして、異なる木だけを線形リストにするという実装を。プログラミングの練習になると思います。なんたって、かだi…ゲフンゲフンだもの。二分探索木の挿入や巡回、探索などは再帰呼出しを使うと短いコードで書けるのですが実装するにあたってわざわざ再帰呼出しなしで挿入したり巡回しましたね…

各木を線形リストにするというイメージ
各木を線形リストにするというイメージ

以上、お付き合いいただきありがとうございました。なにか間違っていたらご指摘ください。

学校の先生にクリスマスの予定がないと言ったら爆笑されました。みなさんもうすぐクリスマスですよ!