tag:blogger.com,1999:blog-87002835549630728322024-03-13T21:22:46.892+09:00テクノロジーと音楽の話。テクノロジーと音楽がライフワーク。技術ネタ、実験など。Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.comBlogger134125tag:blogger.com,1999:blog-8700283554963072832.post-30281530358278485842022-09-13T15:29:00.003+09:002022-09-13T15:32:07.244+09:00[箇条書き] AWSを見直して、円安に備えよう。<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh54ty5FOQaHo32Lx6jmQ1IhpLiEnprWTubVGxcbM1FccbcamQdtZ0px1-dyF5cwI12f2n6u7kl80zjMi8MUNGOGHZlQwXEgN4j8dtcrre-C0nak7zfTpjAS-yedNiO8bUEbXcf-roYAXWreSuyh2qPn6bfmKGrYF0qDm-21Xmvt2RQGNakZHN6IMMx/s1200/aws_logo_smile_1200x630.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="630" data-original-width="1200" height="168" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh54ty5FOQaHo32Lx6jmQ1IhpLiEnprWTubVGxcbM1FccbcamQdtZ0px1-dyF5cwI12f2n6u7kl80zjMi8MUNGOGHZlQwXEgN4j8dtcrre-C0nak7zfTpjAS-yedNiO8bUEbXcf-roYAXWreSuyh2qPn6bfmKGrYF0qDm-21Xmvt2RQGNakZHN6IMMx/s320/aws_logo_smile_1200x630.png" width="320" /></a></div><br /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span><p></p><p><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></p><p><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">円安の影響を直に受けているのが、AWSですね。</span></p><p><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">複数プロジェクトが同時に走っていると結構な費用がかさんでしまう。</span></p><p><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">しかし、本番環境はともかく開発サーバであれば、削れるところは削りたいもの。</span></p><p><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">特にAWSはとにかく設定項目が細かいので、間違った設定に気が付かずにうっかり無駄な料金を払っていたなんてことがしょっちゅうあります。</span></span></p><p><span style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">チェックすべき大きなポイントを列挙してみました。</span></span></p><p><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">細かい設定方法等は他のブログ等を参考にしてくださいませ。</span></span></p><h2 style="text-align: left;"><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></h2><h2 style="text-align: left;"><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">ALB(Application Load Balancer)は兼用が可能</span></h2><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div>プロジェクトやドメインごとにLoad Balancerを立てる必要などありません。</span><div>ALBのリスナーはドメインで判別して、別のポートに送ることができるので、</div><div><ul style="text-align: left;"><li>dev.example1.com -> localhost:8080</li><li>dev.example2.com -> localhost:8081</li></ul></div><div></div><div><br /></div><div>などの設定を行えば、複数のプロジェクトで一つのALBを使うことができます。</div><div><br /></div><div>しかしそもそも特に大きなアクセスがあるわけでないので、ロードバランサーなどいらないのでは?と思ったりするのですが、AWSはこれがないとドメインが固定できないので、一応最低一個のALBは必須になってしまいます。</div><div><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><h2 style="text-align: left;"><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">ECSなど従量課金製のものは使用しないときは停止する。</span></h2><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div>ECS等の従量課金制のサービスは使用しないときは停止すればそれだけ安くなります。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">しかしながら、ECS等自体</span><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">にはスケジュールによる停止機能などはついていません。</span></div><div><br /></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">ECSのタスク数を0/1に切り替えるLambdaを作成して、Event Bridgeで起動させるようにしましょう。</span><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><h2 style="text-align: left;"><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></h2><h2 style="text-align: left;"><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">NAT Gatewayは最小限に</span></h2><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div>AWSのサブネットにはPublic, Private with NAT, Privateがありますが、</span><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">Private with NATの場合のみ課金が必要になります(NAT Gatewayに対して課金されます)。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">これは本番サーバでも言えることですが、</span><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">本当にそのサービスがPrivate with NATである必要があるのか、Private/Publicで良いのか、より吟味して設定しましょう。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">もし外にアクセスしないRDSをPrivate with NATにしてしまっていたりしたら勿体無いです!</span></div><h2 style="text-align: left;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: #202124; font-family: "Hiragino Kaku Gothic ProN"; font-size: 16px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: none; font-weight: 400; letter-spacing: 0.1px; orphans: 2; text-align: left; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: pre-wrap; widows: 2; word-spacing: 0px;"></span></h2><h2 style="-webkit-text-stroke-width: 0px; font-family: "Hiragino Kaku Gothic ProN"; font-style: normal; font-variant-caps: normal; orphans: 2; text-align: left; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px;"><span style="color: #202124;"><span style="background-color: white; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></span></h2><h2 style="-webkit-text-stroke-width: 0px; font-family: "Hiragino Kaku Gothic ProN"; font-style: normal; font-variant-caps: normal; orphans: 2; text-align: left; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px;"><span style="color: #202124;"><span style="background-color: white; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">ECRのバックアップは必要数だけにとどめよう</span></span></h2><div><span style="color: #202124;"><span style="background-color: white; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></span></div><div>ECRレジストリのバックアップは50やそこらにしているのが標準という感じですが、大抵の場合別にgitにも保存されているわけですから、大量に置いておく必要はありません。これも適切な数にしてしまいましょう。</div><div><br /></div><h2><span style="color: #202124;"><span style="background-color: white; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">使われてないSecret Managerはないか</span></span></h2><div><br /></div><div>細かい話ですが、secret managerは1エントリにつき1ヶ月1$かかります。これも必要のないものは削除してしまいましょう。特に、cloud formationなどで作成後そのままになってしまっているなんてケースも多そうです。</div><div><br /></div><h2><span style="color: #202124;"><span style="background-color: white; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">その他</span></span></h2><div><br /></div><div>それ以外にも別リージョンで設定したままになっていて気が付かなかったなんてことも結構あります。RDSもプロジェクト終了時に手動で停止したつもりが7日後には自動で起動してしまっていたなんてこともよくあります。Cost Exploerer で時々チェックするようにしてみましょう。</div><div><br /></div><div><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /></div><div><br /></div>Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-85629205289546519122021-01-13T09:51:00.019+09:002021-01-13T10:31:08.780+09:00音楽をつまらなくするコード進行をディープラーニングしてみたらやっぱりつまらなかった
<p><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">音楽におけるコードはあんまり好きじゃない。</span></p><p><a href="https://lh3.googleusercontent.com/-F9t6ZGEKxzU/X_5DRXrjS2I/AAAAAAAACZY/2iUS8gNxVigvQDoRqJe2GPFBFJ_1L8UbQCLcBGAsYHQ/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%2B2021-01-13%2B9.47.43.png" style="background-color: white; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; margin-left: 1em; margin-right: 1em; text-align: center; white-space: pre-wrap;"><img alt="" data-original-height="234" data-original-width="1178" height="64" src="https://lh3.googleusercontent.com/-F9t6ZGEKxzU/X_5DRXrjS2I/AAAAAAAACZY/2iUS8gNxVigvQDoRqJe2GPFBFJ_1L8UbQCLcBGAsYHQ/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%2B2021-01-13%2B9.47.43.png" width="320" /></a></p><p><br /></p><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">かっちりしたコード進行なんてものが音楽をつまらなくするのだ、あんなものを覚えてしまうと型にはまった音楽しか作れなくなってしまう。</span><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">もっと自由な方がいいのだ。</span><div><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">と常々勝手に思っていたが、まあしかしなんだかんだ実作業の面では</span><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">便利だったりするので、結局学ばざるをえなかったりもする。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">自動音楽生成でもコードは使わないぞ、と頑張ってきたのだけど、やっぱりなんらかの進行のヒントになるかもしれないので、一応こちらも自動生成を試してみることにしました。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><h2 style="text-align: left;"><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><span style="font-size: large;">音楽のコード進行</span></span></h2><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">コード進行にはある程度の法則がある。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">一番教科書的なルールとしては、</span><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">C -> F -> Gのような</span><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">立ち上がり(トニック)、ちょっと盛り上がり(サブドミナント)、盛り上がり(ドミナント)、みたいな形が基本。</span><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">例外はあるにせよ、C F# Dm Abみたいな脈絡のない妙なコード進行がくることはあんまりない。</span><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">これはちょうど文章と同じような形で、主語があって文末がある、みたいなもの。</span></span></div><div><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></span></div><div><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">ということで、コード進行データは</span></span><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">「文章と同じ時系列のデータ」と捉えてしまって問題ないでしょう。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">となれば話は簡単、文章をディープラーニングさせる時と同じ手法が使えます。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><h2 style="text-align: left;"><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">コードのデジタル表現</span></span></h2><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">では、コード進行のデータをプログラム上でどうあらわすか。</span><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">これはドレミファソラシドを12bitのまとまりに置き換えて、</span><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">Cメジャーならば</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">
<pre class="prettyprint">[1,0,0,0,1,0,0,1,0,0,0,0]</pre></span></div><div><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">Cmならば </span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"> <pre class="prettyprint">[1,0,0,1,0,0,0,1,0,0,0,0]</pre> </span><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">C7ならば </span></div><div><br /></div><div><pre class="prettyprint">[1,0,0,0,1,0,0,1,0,0,1,0]</pre><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">とすることにする。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">この方式だとCー>Fー>Gのコード進行は以下の通りになる。</span></div><div><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><pre class="prettyprint">[1,0,0,0,1,0,0,1,0,0,0,0] [1,0,0,0,0,1,0,0,0,1,0,0] [0,0,1,0,0,0,0,1,0,0,0,1]</pre></span></div><div><br /></div><h2 style="text-align: left;"><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">学習データ</span></span></h2><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">学習データは邦楽洋楽とりまぜてコード譜10000曲ほどを用意した。</span></div><div><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">そのうちkeyがCと明記されているもの2000曲あまりを学習データとした。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">ちょっと数が心許ないけど仕方ない。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">というわけでモデルを組んで学習させてみる</span></span></div>
<pre class="prettyprint">Epoch 1/50
33/33 [==============================] - 1s 21ms/step - loss: 0.6694 - val_loss: 0.5621
Epoch 2/50
33/33 [==============================] - 0s 2ms/step - loss: 0.5366 - val_loss: 0.4543
Epoch 3/50
33/33 [==============================] - 0s 2ms/step - loss: 0.4366 - val_loss: 0.3682
Epoch 4/50
33/33 [==============================] - 0s 2ms/step - loss: 0.3468 - val_loss: 0.2882
.
.
Epoch 46/50
33/33 [==============================] - 0s 2ms/step - loss: 8.5190e-04 - val_loss: 8.1676e-04
Epoch 47/50
33/33 [==============================] - 0s 2ms/step - loss: 8.0641e-04 - val_loss: 7.7746e-04
Epoch 48/50
33/33 [==============================] - 0s 1ms/step - loss: 7.6571e-04 - val_loss: 7.4075e-04
Epoch 49/50
33/33 [==============================] - 0s 1ms/step - loss: 7.3260e-04 - val_loss: 7.0640e-04
Epoch 50/50
33/33 [==============================] - 0s 2ms/step - loss: 6.9866e-04 - val_loss: 6.7435e-04
</pre>
<div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><h2 style="text-align: left;">コード進行生成</h2><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">生成させるのは8小節。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">最初の2小節をこちらから与えることにする。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">まずは、C->F を与えたものと、C->Amを与えたもの</span></div><div><br /></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">とすると出てきた進行(例)はこんな感じ。</span></div>
<pre class="prettyprint">C, F , G , C, F, G, C, F
C, Am, F , G ,C ,F ,G ,C ,F
</pre>
<br />ありゃ、どちらも、C->F->Gに収束してしまった。 まあ基本だからしょうがないな。<div>というわけで、Cキーでありながら、Gから入るという進行G->Amを与えてみる。<br /><div>
<br /><pre class="prettyprint">G ,Am ,G ,C ,F ,G ,C
</pre>
<div><br /></div>おお、こちらもGに戻ってまた、C->F->Gに収束してしまう。それだけ、C->F->Gの進行が強いんだな。</div><div><br />では次は2小節目から転調してやれ、ということで、C->Eを与えてみる。<br /><pre class="prettyprint">C ,E ,G ,C ,F ,G ,C ,F
</pre>
<div><span style="background-color: white; color: #202124; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">あららららら、こちらも、Gに戻りまたC->F->Gに収束してしまった。。。。。</span></span></div><div><span style="background-color: white; color: #202124; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><br /></div><h3 style="text-align: left;">結論</h3><div><br /></div><div>冒頭の方でコード進行の教科書的な進行ということでC->F->Gを例にあげたけど、これだけ、C->F->Gにばかり収束するということは、実際の曲中でも、C->F->Gは結局それだけ例があるということか。</div><div><br /></div><div>本当は、RNNの予測に使う過去のデータ数を2(最初に与える小節)ではなくもっと増やせば少し変わってくるとは思うのだけど、文章と比較すると小節は生成する量が少ない(通常文章が数十単語の羅列を生成するのに対して、音楽は8小説とか、16小節とかのみ)ため、そのアプローチにも限界がありそう。</div><div><br /></div><div>それに、4・8小節でのまとまりがあるべきなのに、それを意識してないのも問題。</div><div><br /></div><div>しかし、結論としてはやっぱりコード進行はC->F->Gの基本がめちゃ強くて、それ以外のバリエーションが大量にある(使用されている)というわけではないということですね。</div><div><br /></div><div>こんな結論ですみませぬ。</div><div><br /></div><div><br /></div><div><br /></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><br /></div><div><br /></div><div><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></span></div><div><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div></div></div>Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-25457876753284695182021-01-03T01:15:00.008+09:002021-01-04T15:12:13.821+09:00AI作曲をコードと数式を使わず説明してみる、その3<h2 style="text-align: left;">
再帰型ニューラルネットワーク(RNN)とその発展系(LSTM) </h2><div style="text-align: left;"><span style="font-size: small;"><br /></span></div><div style="text-align: left;">前回出たのは、過去の時系列の並びから未来のことを予測するという再帰型ニューラルネットワーク。 </div><div><br /></div><div>今回はその中でもLong Short-Term Memory(以後LSTM)を使うことにします。</div><div><br /></div><div>LSTMは再帰型ニューラルネットワーク(以後RNN)の拡張、とでも言うべきもので、RNNもLSTMも過去の時系列の並びを手掛かりに未来の展開を予想すると言う意味では同じです。</div><div><br /></div><div>RNNは直前のいくつかの音の並びしか手掛かりにできないのに対して、LSTMの方がずっと昔の音の並びを手掛かりにすることができます。</div><div><br /></div><h2 style="text-align: left;">リフレインが音楽を作る</h2><div><br /></div><div>メロディは基本的に過去のフレーズを繰り返したり、展開したりすることで、構築されます。</div><div><br /></div><div>まったく関連性のない音の並びがずっと続くということはありえません。</div><div><br /></div><div> たとえば、「世界に一つだけの花」であれば
「世界にひとつだけの花〜ひとりひとり同じ種を持つ、その花をさかせることだけに〜」と展開しますが、
冒頭の「世界に〜」と途中の「その花〜」は全く同じフレーズですよね。 </div><div><br /></div><div>「世界に〜」を聞かせておいて「ひとりひとり〜」と違うフレーズを挟んでわすれたころにまた元に戻る。 </div><div><br /></div><div>これが「メロディ」を強く人間に意識させるのです。</div><div><br /></div><div>このような繰り返し、リフレインは至る所で使われます。</div><div><br /></div><div>このように音楽製作者は意図的に繰り返しを多用します。</div><div><br /></div><div>たとえば、音程を変えて、リズムだけリフレインしたり、コードをリフレインしたり、そもそもドラムパターンは基本リフレインですよね。</div><div><br /></div><div>こういったリフレインこそが単なる音の並びを「音楽」にしているものと言えるでしょう。</div><div><br /></div><h2 style="text-align: left;">リフレインを基本としたアプローチ</h2><div><br /></div><div>そこで「リフレイン」に強いアプローチとなると、前述LSTMのAIモデルを使用して、過去の音を学習して未来の音を予測させるという手法が意味をもってきます。</div><div><br /></div><div>この時にどれくらい昔まで参考にするのか、1秒前なのか、5秒前なのか、どれくらいの重みでそれらを重要視するか、などを考えて設計していきます。</div><div><br /></div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-ArI6k4BfSQA/X_CcFgvX1VI/AAAAAAAACYk/RgTVJoARQ40TXSsR824NfG_M1U8EQ-r6QCLcBGAsYHQ/Long_Short-Term_Memory.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="553" data-original-width="1179" height="150" src="https://lh3.googleusercontent.com/-ArI6k4BfSQA/X_CcFgvX1VI/AAAAAAAACYk/RgTVJoARQ40TXSsR824NfG_M1U8EQ-r6QCLcBGAsYHQ/Long_Short-Term_Memory.jpg" width="320" /></a></div><br /><br /></div><div>これらのパラメーターの設置次第で、様々な音を作ることができるわけです。</div><div><br /></div><div>これが最もシンプルなAI音楽の姿と言えるでしょう。
</div><div><br /></div><h2 style="text-align: left;">未来のAI音楽</h2><div><br /></div><div>ただ実際にはこれだけで、複雑な音楽を作れるわけではありません。
</div><div><br /></div><div>音楽にはもっともっと様々なレイヤーが存在しています。
</div><div><br /></div><div>調和した音程を作る「和音・コード」のレイヤー、AメロからBメロへ移り変わる「展開」のレイヤー、音色のレイヤー。
</div><div><br /></div><div>今回は波形の話をしましたが、これをMIDIで行うアプローチもあります。
</div><div><br /></div><div>今現在これらのレイヤーをすべて実用化のレベルで持っているというAIはほぼないでしょう。
</div><div><br /></div><div>それはそれだけそれぞれの組み合わせが難しいと言うことでもあります。
</div><div><br /></div><div>そうしてこういうアプローチを見ていくと、結局は人間の感覚、どうやって作品を生み出しているのか、聞く側はなぜこれを心地よいと感じるのか、を理解する必要があると言うところにぶつかります。 </div><div><br /></div><div> それだけ人間はいかに複雑なマシーンと言うことでもあるのですね。</div>Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-44581751162969709742020-12-31T16:51:00.015+09:002021-01-01T05:53:37.977+09:00AI音楽備忘録 どこまでが音楽か<h2 style="text-align: left;"> <span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">AI音楽備忘録</span></h2>
<span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">現状AIモデルにての11作品。</span><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><a href="https://www.youtube.com/channel/UCX514JhcB-HsCYC4dBLMC1Q" rel="nofollow" style="background-color: white; color: #6611cc; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; pointer-events: none; white-space: pre-wrap;" target="_blank">https://www.youtube.com/channel/UCX514JhcB-HsCYC4dBLMC1Q</a><br /><br /><iframe width="560" height="315" src="https://www.youtube.com/embed/DqJTyEzSaOM" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><div><div style="text-align: center;"><br /></div><div style="text-align: center;"><br /></div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">実際には同じモデルでなく、ずっと改良を加えているので、まあ途中経過がそのまま備忘録的にアップロードされているという感じです。</span><span style="letter-spacing: 0.1px;"><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /></span><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">当初は生成されたトラックサンプルをシーケンサ上で人力で選択し組み合わせていたのが、自動でミックス・フェードアウトまで作れるようになって、シーケンサを通さずに、コマンド一つで音楽が作成できるようにはなりました。</span><span style="letter-spacing: 0.1px;"><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /></span><br /><iframe width="560" height="315" src="https://www.youtube.com/embed/sp4pu_NASEo" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>><br /><br /><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">この例をみると、ドラムパターンはいい感じで繰り返されていますが、上物はどうも変化に乏しい。</span><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">現在のモデルは波形を直接学習しその続きを作っていくというもので、そしてその仮定でBPMや小節といったある程度の「音楽のルール」は正規化されています。</span><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">しかし、コードや、音楽の大枠での構造(4、8小節のまとまりなど)をいうものを理解しているわけじゃないので、はじめと終わりなどの展開、コードに沿った音の重ね合わせ、などができるようになるのが次の課題になるでしょう。</span></div><div><br /></div><div><span style="color: #202124;"><span style="font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">本当はリズムパターンだって1小節を繰り返してるだけじゃなく、4、8小節ごとにリフがあったり展開があるのが普通ですしね。</span></span><br style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><h2 style="text-align: left;"><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">何をもって音楽と呼ぶのだろう?</span></h2><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">しかし、作っていくうちに音楽の定義という物を考えないと何がゴールかさっぱりわからない、ということに気がついたのです。</span><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">「何を音楽とするか」のいわゆるAIでいうところのフレーム問題(使い方が違う気はするけど)的な物にぶつかってしまったわけである。</span><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">なにが音楽なんて曖昧な物で、とどのつまり、いってしまえばただ雑音を録音しただけでも、音楽と言えてしまうわけですしね。</span></div><div><br /></div><div>たとえばこれはリズムパターンを延々と生成するタイプの曲。</div><div>個人的にこれは音楽だと思うが、そうじゃないという人もいるかもしれない。</div><div><br /><iframe width="560" height="315" src="https://www.youtube.com/embed/ljC0QAA9umw" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div><div><div style="text-align: center;"><br /></div><h2 style="text-align: left;"><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">シュレーディンガーの作曲家</span></h2><div><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">このプログラムの目標は音楽が永遠とアップロードされていて、それが人の手によるかどうなのかわからなくなることです。</span></div><div><br /></div><div>これは昔からずっと考えていたことで、クリエイターの究極の姿ってそういうことなんじゃないかと思っているのです。</div><div><br style="background-color: white;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">自分が死んでもずっとアップロードされているので、周りからみたら生きてるか死んでるかわからない、みたいな形。</span></div><div><br /></div><div>いわば、シュレーディンガーの作曲家?</div><div><br /></div><div>おそらくそういうことはこれからたくさん出てくるでしょう。</div><div><br /></div><div>ずっと新作ドラマに登場してくる俳優、永遠にニュースを読み続けるアナウンサー、ずっと新作を発表し続ける絵描き、、、ずっと作曲をし続ける作曲家。。。</div><div><br /></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">しかし、まあそれは先の話なので、</span><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">とりあえずここでは音楽を</span><span style="letter-spacing: 0.1px;"><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /></span><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">「リズム」と「上物」とに分かれた繰り返しの拍子を持つ物</span><span style="letter-spacing: 0.1px;"><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /></span><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">に定義して進めてみることにしましょう。</span><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><br /></div></div><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><br /></div>Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-17859611370588496832020-11-16T15:18:00.004+09:002020-11-16T21:54:02.493+09:00AI作曲をコードと数式を使わず説明してみる、その2<h3 style="text-align: left;">特徴量の抽出</h3><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">代表的なものには以下のようなものがあり、それぞれ一長一短ありますが、</span><div><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></span><ul style="text-align: left;"><li>短時間フーリエ変換 (STFT)</li><li>メル周波数ケプストラムMFCC</li><li>ウェーブレット解析</li></ul><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">とりあえずここでは一番基本の短時間フーリエ変換(以下STFT)を使用することにします。</span></div><div><br /></div><div>といっても普段からおなじみの、音質を調整する<span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">イコライザのようなものだと思ってくれれば良いです。</span><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-5ikyoUnmnSA/X7H9B05rAVI/AAAAAAAACWE/Hj25BpMNuPUrcZ6gadS7Q95WP2MhI8fqACLcBGAsYHQ/wave.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="810" data-original-width="2022" height="164" src="https://lh3.googleusercontent.com/-5ikyoUnmnSA/X7H9B05rAVI/AAAAAAAACWE/Hj25BpMNuPUrcZ6gadS7Q95WP2MhI8fqACLcBGAsYHQ/w411-h164/wave.png" width="411" /></a></div><br />この状態のデータのグラフは、横軸に時間、縦軸に音量をとっていますね。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">このデータにSTFTをかけると。。。。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">以下のようなグラフになります。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">横軸時間、縦軸に周波数、さらに色の濃淡で、音の音量も表現することができます。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-OxQRJZ9mndI/X7H9JhyUytI/AAAAAAAACWI/XKIp-aD57-UVaeULmueVLZbbC1XTK2DywCLcBGAsYHQ/spectro.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="772" data-original-width="2078" height="164" src="https://lh3.googleusercontent.com/-OxQRJZ9mndI/X7H9JhyUytI/AAAAAAAACWI/XKIp-aD57-UVaeULmueVLZbbC1XTK2DywCLcBGAsYHQ/w440-h164/spectro.png" width="440" /></a></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div>(イコライザ なんかはこのデータを元に各音域を調整するのですね)<br /><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">このようにすると生のwaveデータの状態よりも音の構造がよりわかるようになります。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">そして、この状態のデータをAIに「学習」させることにします。</span></div><div><br /></div><h3 style="text-align: left;">時系列データを学習する</h3><div><br /></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">AIで学習するデータはざっくり大きく乱暴に分けると2種類あります。</span></div><div><br /></div><div><ul style="text-align: left;"><li><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">時系列のデータ</span></li><ul><li><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">時間によってデータ変わるもの、毎日の気温、文章(前から後ろへ書いていきますね)、映像、などなど。</span></li></ul><li><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">時系列ではないデータ</span></li><ul><li><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">文字認識、絵、などなど。</span></span></li></ul></ul></div><div><br /></div><div><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">それぞれによって使用するアプローチが変わってきます。</span></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">音楽は当然時系列のデータです。</span></div><div><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></span></div><div><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">たとえば、ピアノに座って「ミ」の音を出しただけではただの音です</span></span></div><div><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></span></div><div><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">前に「ド」をつけて、</span></span><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">「ド・ミ」と引くとその音はそれぞれ意味を持ってきます。</span></div><div><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></span></div><div><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">意味を持たないただの音だった「ミ」はドと並べることで「音程が上がったよ」「三度上がった調和する音程だよ」という意味をもつ音となり、それはメロディとなり、調性をも生み出します。ド・ミとつながったのだから多分ソがきてドミソの和音かな?、とその先の展開も想像できるわけです。</span></span></div><div><br /></div><div>AIでも同じ考え方をします。</div><div>前のデータを学習すれば、その先の音はわかるのではないかな?という仮定に立ちます。</div><div><br /></div><div>その考え方に立ったものがAI学習方法の一つ「再帰型ニューラルネットワーク」です。</div><div><br /></div><div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-3Z7cJD7S8zo/X7IYNqST2XI/AAAAAAAACWs/Wesfn4cYnTAwNoePjWAhTrGUA8elcZwMwCLcBGAsYHQ/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%2B2020-11-16%2B15.11.30.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="688" data-original-width="1210" height="289" src="https://lh3.googleusercontent.com/-3Z7cJD7S8zo/X7IYNqST2XI/AAAAAAAACWs/Wesfn4cYnTAwNoePjWAhTrGUA8elcZwMwCLcBGAsYHQ/w508-h289/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%2B2020-11-16%2B15.11.30.png" width="508" /></a></div></div><div><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></span></div><div><span face="Roboto, Arial, sans-serif" style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></span></div><div>これはそれより「過去に起きた情報」を保持し、次のステップに利用することができるというアルゴリズムです。</div><div><br /></div><div>時間の共に変化する分野、特に、「言語解析」や「音声認識」の世界では主流となっています。</div><div><br /></div><div>音楽も同じように「時間と共に変化する」性質をもつので、この考え方を利用することとします。</div><div><br /></div><div>というわけで次は、実際の楽曲生成です。</div><div><br /></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div></div>Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-64290819819743155932020-11-08T21:08:00.006+09:002020-11-16T16:22:37.276+09:00AI作曲をコードと数式を使わず説明してみる、その1<div><h2 style="text-align: left;"><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">Waveファイルで音楽をディープラーニングさせたい!!</span></h2></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">今現在、AIによる作曲の手段としてはgoogleのmagentaというライブラリが有名です。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><div class="separator" style="clear: both; color: black; font-size: medium; font-variant-ligatures: normal; letter-spacing: normal; text-align: center; white-space: normal;"><a href="https://magenta.tensorflow.org/" style="margin-left: 1em; margin-right: 1em;" target="_blank"><img alt="" data-original-height="600" data-original-width="1140" height="168" src="https://lh3.googleusercontent.com/-FF_UCrFlZkM/X6fJ9NB_k2I/AAAAAAAACUs/-1ai3s9jVAgBkVkvTDxGAGXYfPSWJUFdwCLcBGAsYHQ/magenta-logo-card.jpg" width="320" /></a></div><br style="color: black; font-size: medium; font-variant-ligatures: normal; letter-spacing: normal; white-space: normal;" /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">これを利用した作曲手順についてはこちらに記事を書いています。</span><div><a href="https://data.wingarc.com/ai-and-music-composition-daichi-hayakawa-13046"><span style="font-size: x-small;">作曲家兼プログラマー 早川大地がAIによる作曲について語る:「人工知能で作曲、ここまで来てた!!」</span></a><div><div><div><br /></div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">googleが作ってくれたんだからそりゃあ有能に違いない、</span><span style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">とmagenta を使って色々遊んではみたのですが、なにぶん残念なことに作曲については基本Midiがベースとなっているのです。</span></div><div>(ボーカル合成とかあるにはあるんだけど)</div><div><br /></div><div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: x-small; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">Midiファイルの例:「どの位置で何の音が鳴るか」が記録されたファイル</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-xaz9Io62iC4/X6fdAYAC8NI/AAAAAAAACVY/70y2ftzyTbgjoI2HRR7r1MZcOVLQnoCOQCLcBGAsYHQ/midifile.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="618" data-original-width="1276" height="155" src="https://lh3.googleusercontent.com/-xaz9Io62iC4/X6fdAYAC8NI/AAAAAAAACVY/70y2ftzyTbgjoI2HRR7r1MZcOVLQnoCOQCLcBGAsYHQ/midifile.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div></span></div></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">こうなってくると、作曲家の補助的な用法としては使えるかもしれないけど、リスニングの分野の実現性としてはどうなんだろうかと思うところなのです。</span></div><div><br /></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">ということで、やっぱりなんといっても普段聴き慣れているWavデータを使って、自動作曲したいと思うのですよね。</span></div><div><br /></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: x-small; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">Wav ファイルの例:普段PC上で耳にする音楽はほぼこれですね。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-tLOkCWvmANA/X6fdP2nN1GI/AAAAAAAACVc/ycsj17ivI_YI1NSLm4OF-wA4-6oon_bpACLcBGAsYHQ/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%2B2020-11-08%2B20.55.13.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="392" data-original-width="1048" height="120" src="https://lh3.googleusercontent.com/-tLOkCWvmANA/X6fdP2nN1GI/AAAAAAAACVc/ycsj17ivI_YI1NSLm4OF-wA4-6oon_bpACLcBGAsYHQ/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%2B2020-11-08%2B20.55.13.png" width="320" /></a></div><br /><br /></span></div><div><span style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">そこで、magentaに頼らずに1からモデルを作ってみることにしました、その過程で考えたことを通して、AI作曲についてなるべくわかりやすくまとめてみたいと思います。</span></span></div><div><span style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></span></div><div><span style="color: #202124;"><span style="background-color: white; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">AI作曲については</span></span><span style="background-color: white; color: #202124; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">なにが正解ということもないので、こんな考え方があるのだなあと思って思えれば。</span></div><div><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">もちろんこのアプローチですぐにまともな「作曲」ができるとは思えないけれど、リズムを変異させたりあらたな環境音を作りだしたり、と新たな作曲のヒント程度は作ることができるかもしれない。</span></div></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div>というわけで数回にわけて、Waveファイルを対象としてディープラーニング作曲・AI作曲にチャレンジしてみたいと思います。</div><div><br /></div><div>できるだけ、技術畑の人だけでなく音楽畑の人にプロセスを理解してもらいやすいようにかければなと思っております。</div><div><br /></div><h3 style="text-align: left;">音楽を分析する際のポイント</h3><div><br /></div><div>同じようにWaveファイルを分析するものとして、代表的なものに音声認識があります。</div><div><br /></div><div>音声認識は母音や子音の特徴量を認識して、これが「Ah あ」だとかこれが「kah か」だとか、分類していく作業です。</div><div><br /></div><div>ところが音楽の場合は単なる音声認識と違ってさらに考慮すべき構造がもっときっちりとあるのです。</div><div><br /></div><div><ul style="text-align: left;"><li>テンポの正規化</li><li>小節の構造</li><li>楽器の構造</li></ul></div><div><br /></div><div>構造があるということは手がかりがあるということです。</div><div><br /></div><div>これらの構造を利用してコンピュータが学習することができれば!!</div><div><br /></div><div>と期待できますよね。</div><div><br /></div><h3 style="text-align: left;">まずは音の「特徴」について考えよう。</h3><div><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">例えば誰かの歌声を覚えるとき、人は、無意識のうちにその特徴を覚えていると思います。</span></div><div><br style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">声色の雰囲気だったり、のどの使い方だったり、高さだったり、しゃくりあげや、語尾の発生の仕方だったり。</span><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><br />ちなみにものまねがうまいひとなんかはこれが上手なのですよね。</div><div>「特徴」となる部分を上手に掴み取ることができる、天性の学習能力がある、とも言えるでしょう。</div><div><br /></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">それに類することをコンピュータ上でも行い、データを整理し学習しやすくする、というのがデープラーニングのプロセスの第一歩です。</span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;"><br /></span></div><div><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">これを「特徴量の検出」という言い方をします。</span><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /><span face="Roboto, Arial, sans-serif" style="background-color: white; color: #202124; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;">ただしそれを人間がやるのと違う点は、音楽を物凄い短い時間の単位に区切り(0.001 秒ごと、などなど)そしてそれを、物凄い数やるということでしょうか。</span><br style="background-color: white; color: #202124; font-family: Roboto, Arial, sans-serif; font-size: 16px; font-variant-ligatures: none; letter-spacing: 0.1px; white-space: pre-wrap;" /></div><div><br /></div><h3 style="text-align: left;">音とは何か</h3><div>さて、いったん基本に立ち返って、音とは何か、という話。</div><div><br /></div><div>まずは以下二つの波形を見てみましょう。</div><div><br /></div><div><br /></div><div>4cos10πの波形</div><div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-qkFy_GIL1Fg/X6fcAnO4xAI/AAAAAAAACVI/HUn659dcbVw34u2Wz8ANiQjUqdagwSarACLcBGAsYHQ/fig1.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="484" data-original-width="1246" height="124" src="https://lh3.googleusercontent.com/-qkFy_GIL1Fg/X6fcAnO4xAI/AAAAAAAACVI/HUn659dcbVw34u2Wz8ANiQjUqdagwSarACLcBGAsYHQ/fig1.png" width="320" /></a></div><br /><br /></div><br /><br /></div><div>3cos6πの波形</div></div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-7MFzZJxwNis/X6fcCNaLSLI/AAAAAAAACVM/knCM5V13nZ89t65hvz5okB8VJQ9TTwtuwCLcBGAsYHQ/fig2.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="458" data-original-width="1242" height="118" src="https://lh3.googleusercontent.com/-7MFzZJxwNis/X6fcCNaLSLI/AAAAAAAACVM/knCM5V13nZ89t65hvz5okB8VJQ9TTwtuwCLcBGAsYHQ/fig2.png" width="320" /></a></div><br /><br /></div><div><br /></div><div>横軸に1(秒)をとり縦軸に大さ(振れ幅)をとったグラフです。</div><div><br /></div><div>ずいぶん単純なグラフ(波形)ですね。</div><div><br /></div><div>さて、この周波数と、振幅(振り幅)はいくつでしょうか。</div><div><br /></div><div>そして、周波数=1秒ごとに揺れ動く(グラフと山と谷の数)とですので、最初のグラフは周波数が「5」です。(数えてみましょう、いち、にー、さん〜、し〜、ご〜・・)</div><div><div><br /></div><div>そして、下のグラフの方も数えてみると周波数が「3」となりますね。</div></div><div><br /></div><div>加えて振幅の大さがそれぞれ、4、3となっているのは見て取れますよね。(グラフの山のてっぺんをが縦軸のどこに来ているか、を見れば良いでしょう。)</div><div><br /></div><div>そして、どちらの式もXcosYπという形で表されます。</div><div><br /></div><div>上のグラフは、4cos10πで下のグラフは3cos6πですので、XとYに入る数字が変わっているだけですね。</div><div><br /></div><div>ちなみにこの場合Xが振幅となり、Y の二分の一が周波数となりますので、グラフを見ずとも、式をみるだけで、振幅と周波数がわかります。</div><div><br /></div><div>これは「コサイン波」と呼ばれる波形、これも立派な「音」になります。(シンセサイザにも入ってますので、ご存知の方も多いかと。)</div></div><div><br /></div><div>この音は非常にシンプルな「プー」とか「ポー」とかいう素朴な音。</div><div><br /></div><h3 style="text-align: left;">コサイン波同士を足し算して音を作る</h3><div><br /></div><div><div>そして、これら波形は足算・引き算、四則演算をすることができます。</div><div><br /></div><div>たとえば、最初の二つの波形を足し合わせると、以下のような波形になります。</div><div><br /></div><div>4cos10π+3cos3π</div><div><br /></div></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-7GapDQyHJxk/X6fG-yVMseI/AAAAAAAACUQ/sb5WrU0FZwAudjhu0QmLmrISq3158JnygCLcBGAsYHQ/fig3.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="444" data-original-width="1254" height="160" src="https://lh3.googleusercontent.com/-7GapDQyHJxk/X6fG-yVMseI/AAAAAAAACUQ/sb5WrU0FZwAudjhu0QmLmrISq3158JnygCLcBGAsYHQ/w451-h160/fig3.png" width="451" /></a></div><div><br /></div></div><div>足し方は簡単です。</div><div><br /></div><div>上のグラフでは横軸(時間)が0.0の時に縦軸(振幅)は4となっていて、下のグラフでは横軸が0.0の時に縦軸は3となっています。</div><div><br /></div><div>ですので、足算したグラフでは0.0のところに4+3=7が入ります。</div><div><br /></div><div>この要領で順次足していけば良いのです。</div><div><br /></div><div>とまあ二つの単純な波形を足算しただけですが、ずいぶんと複雑な形になりましたね。</div><div><br /></div><div>実際にはこれ以上に無数の波形が足し合わせられることで、様々な複雑な音が生成されます。</div><div><br /></div><div>鳥の声も人の声も、楽器の音も、もちろんシンセサイザも、すべて単純な波形の重ね合わせです。</div><div><br /></div><div>となると、それぞれ重なり合った波形を分析していけば、必要な音の「特徴量」が掴めるのでは・・・・なんて気がしてくるのではないでしょうか。</div><div><br /></div><div>この技術の延長に「イコライザ」のようなみなさんお馴染みのものがあり、まずは特徴量の学習はそこからのスタートということになります。</div><div><br /></div></div><div>次回以降は特徴量の抽出方法について試行錯誤していく話となります。</div>Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-80733631776695862542020-09-20T10:44:00.006+09:002020-09-20T11:05:09.415+09:00絶対音感がある人は3%、音大生では30%、アプリによれば5%?<p> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-RMAG2nRDGMU/UThwyZPYnXI/AAAAAAAABJ0/ykAu6DYp5oMA1ZVKgspVpecA0eOKlTwzwCPcBGAYYCw/s615/piano.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="409" data-original-width="615" src="https://1.bp.blogspot.com/-RMAG2nRDGMU/UThwyZPYnXI/AAAAAAAABJ0/ykAu6DYp5oMA1ZVKgspVpecA0eOKlTwzwCPcBGAYYCw/s320/piano.jpg" width="320" /></a></div><br /><p></p><p>新潟大学の宮崎謙一教授らチームによる<a href="https://www.niigata-u.ac.jp/wp-content/uploads/2018/11/301112re_topi.pdf">研究</a>によれば、日本人で絶対音感がある人は全体の3%ほどなんだそうです。</p><p>それが音大生だとぐんと跳ね上がって30%ほどになるそう。</p><p>ちなみに宮崎教授らのチームのテスト方法はピアノの音を聞かせて90%以上当てられることを基準としているそうです。</p><p>というわけでその結果を踏まえて、「絶対音感トレーニング」</p><div class="separator" style="clear: both; text-align: center;"><a href="https://apps.apple.com/jp/app/%E3%81%8B%E3%82%93%E3%81%9F%E3%82%93%E7%B5%B6%E5%AF%BE%E9%9F%B3%E6%84%9F%E3%83%88%E3%83%AC%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0/id570550369" style="margin-left: 1em; margin-right: 1em;" target="_blank"><img border="0" data-original-height="81" data-original-width="234" height="52" src="https://1.bp.blogspot.com/-GHbOSSS03vw/X2atqWZzX4I/AAAAAAAACSI/p8wb4eE7g647xqUS1VDaWp9r59dO3o2OACLcBGAsYHQ/w151-h52/btn_appstore.png" width="151" /></a><a href="https://play.google.com/store/apps/details?id=jp.viralworks.perfectpitch&hl=ja" style="margin-left: 1em; margin-right: 1em;" target="_blank"><img border="0" data-original-height="161" data-original-width="469" height="53" src="https://1.bp.blogspot.com/-o1Gk61aFk6g/X2atqSVJiwI/AAAAAAAACSM/n06Itv8BIBU_T3QBzRhb-4AnJ3HOOrlOQCLcBGAsYHQ/w157-h53/btn_playstore.png" width="157" /></a></div><p>アプリの結果からそのデータを独自に計算してみました。 </p><p>このアプリはビギナーモードだと単音だけでのテストとなりますので、だいたい、850~900点以上、図の中の青い線より下のスコアが出た場合絶対音感がある、と考えて良いでしょう。</p><p>ビギナー意外のノーマル、ハード、スーパーハード、モードでは複数音当てなども含んでいるので、ちょっと比較しづらいので除外します。</p><p>こちらがその点数のグラフです。</p><p><br /></p><p style="text-align: center;"><img border="0" data-original-height="549" data-original-width="1106" height="270" src="https://1.bp.blogspot.com/-IByEy5U8VNs/X2YRB2PBRFI/AAAAAAAACRE/sT__bVOqPCgzonrnrYgoyxjNa8rIuSYAQCLcBGAsYHQ/w543-h270/line.png" width="543" /></p><p>縦軸が得点(1000点満点)、横軸がその人数です。</p><p>そして、実際に850点以上記録している人の割合を計算してみると、5.67% = <b>5%強</b>となりました。</p><p>日本人全体の3%よりは多いですが、テストしてみようという時点で既に音楽への興味はある程度強いと考えられますから、5%というのは妥当な数字とも思えますね。</p><p><br /></p><p>その他のデータは<a href="https://commonapi.viralworks.jp/">こちら</a></p><p></p><div class="separator" style="clear: both; text-align: center;">ハード</div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-KuUYeXL2Orc/X2aqWmEVXNI/AAAAAAAACRg/-4FA5phtBTAo8jhx1qJZ-G33V_YsKBBTgCLcBGAsYHQ/s1108/pp_hard.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="534" data-original-width="1108" src="https://1.bp.blogspot.com/-KuUYeXL2Orc/X2aqWmEVXNI/AAAAAAAACRg/-4FA5phtBTAo8jhx1qJZ-G33V_YsKBBTgCLcBGAsYHQ/s320/pp_hard.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;">ノーマル</div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/--z2qNNnJIbE/X2aqWv2dTEI/AAAAAAAACRk/FGEJ8kFQXjkyjVvEi-TTKXsoQE6rOgbcQCLcBGAsYHQ/s1098/pp_normal.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="534" data-original-width="1098" src="https://1.bp.blogspot.com/--z2qNNnJIbE/X2aqWv2dTEI/AAAAAAAACRk/FGEJ8kFQXjkyjVvEi-TTKXsoQE6rOgbcQCLcBGAsYHQ/s320/pp_normal.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;">スーパーハード</div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-lUWbnhq76JA/X2aqWj2btlI/AAAAAAAACRo/IRCm20GDteUBgkC1LBXuogSDXDpe45-aACLcBGAsYHQ/s1086/pp_Superhard.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="534" data-original-width="1086" src="https://1.bp.blogspot.com/-lUWbnhq76JA/X2aqWj2btlI/AAAAAAAACRo/IRCm20GDteUBgkC1LBXuogSDXDpe45-aACLcBGAsYHQ/s320/pp_Superhard.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div>かなり複雑な複数の音を当てるハード、スーパーハードとなると、逆に900点超えがたくさんいるのも面白いところです。<div><br /></div><div>900点を超えるには、4つの音が同時になっているのを即座に判別して、正確に答えられないといけませんが、スーパーハードに限っては半数近くが達成している模様。</div><div><p></p><p>できる人はとことんできるということなのでしょうか。</p><p><br /></p><p><br /></p><p><br /></p><p><br /></p></div>Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-47714867925842870852020-09-16T11:53:00.009+09:002020-09-17T13:51:34.805+09:00FlutterによるiOS/Androidアプリ開発が良い理由<p>最近使用頻度の高いAndroid/iOS 両対応フレームワーク <a href="https://flutter.dev/">Flutter</a></p><p>数本アプリ開発を通じて少し知見も貯まったと思うので、思うところを記載します。</p><p><br /></p><h2 style="text-align: left;">結論から言うと</h2><p>そのアプリに必要なライブラリがあることが予め確認(重要)できるのなら、導入ゴーで良いと思う。</p><p>フレームワーク自体の開発速度も早いし、バージョン管理ツールも出た。いまアツい。</p><p>個人的には今年ARライブラリのWikitudeが対応したことで、さらに幅が広がりそう。</p><p><br /></p><h2 style="text-align: left;">箇条書きで理由を述べます</h2><h3 style="text-align: left;"> </h3><h3 style="text-align: left;"><span> </span>Google開発・オープンソースなのでなんとなく安心感がある。</h3><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px;"><p style="text-align: left;">フレームワーク自体の開発ペースが早い。そのため複数バージョンを使用したりする機会も多い。以前は複数インストールして手動でパスを変えるという方法しかなかったが、バージョン管理ツールfvmが出てからだいぶ楽になった。</p></blockquote><h3 style="text-align: left;"><span> </span>ネイティブコードで動作する。</h3><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px;"><p style="text-align: left;">アプリの動作・UIの部分だけ両対応することに集中した設計。細かい設定はXcodeやAndroidManifestを直接いじることになるが、正直その方が楽。両OSのバージョンアップや仕様変更にも対応しやすい。したがってバグも少ない。(Titaniumなどはbuild時にXcodeのプロジェクト自体を作り直していたので、いろいろ大変だった。。。)</p></blockquote><h3 style="text-align: left;"><span> </span>ホットリロード機能がすごい。</h3><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px;"><p style="text-align: left;">動作中に少しコードを変更し、Rキーを押すだけで、リロードされる。再コンパイルが必要なしで、HTMLのような感覚でデザインを作れる。開発速度がとてもあがる。</p></blockquote>
<p style="text-align: center;">
<img src="https://1.bp.blogspot.com/-ksCkS5sbYLY/WC8rHBMHJXI/AAAAAAAAE_U/RmPnToBc7kwQB1IoPvv58HGt6E1ujabwgCLcB/s1600/hot-reload.gif" width="400" /></p>
<h3 style="text-align: left;"><span><br /></span></h3><h3 style="text-align: left;"><span> </span>アプリをDartで開発できる。</h3><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px;"><p style="text-align: left;">Javascriptのゆるさとオブジェクト志向言語のかっちり感を程よく組み込んだ良い言語だと思う。個人的には ” ) ” が多くなりすぎるので視認性はどうかな、とは思う。一部わかりづらい書き方があるがそれは慣れ。</p></blockquote><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px;"><p style="text-align: left;">嫌なコードの例</p></blockquote><p></p>
<pre class="prettyprint"> Container(
padding: EdgeInsets.only(left:100,right:100),
child:rows,
alignment: Alignment(0,0),
)
]), //この辺の括弧が多い。。。
),
]
);
</pre>
<h3 style="text-align: left;"><span> </span>ライブラリ充実度がかなり上がってきた</h3><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px;"><div><p style="text-align: left;">2019年初頭くらいには、videoのプレイヤーやXMLのパースなどライブラリによってはまだまだ足りないところがあった印象だけど、ここにきて通常の使用には困らなくなった印象。このあたりは今後dartがどれくらい伸びるかにかかっている。。。</p></div></blockquote><div><p><br /></p><p><br /></p><p><br /></p><p><br /></p></div>
Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-80696463094395461382017-08-04T10:49:00.004+09:002017-08-04T10:52:04.697+09:00人工知能演奏のダイナミクス(強弱)、タイミング演奏のダイナミクス(強弱)・タイミングを人工知能(ディープラーニング)で作成<br />
する実験が <a href="https://magenta.tensorflow.org/performance-rnn">magenta</a>で発表されていました。<br />
<br />
<a href="https://magenta.tensorflow.org/assets/performance_rnn/good.mp3">Mp3ファイル - クリックで再生されます。</a><br />
<br />
今度のモデルは音のピッチだけじゃなく、強弱やタイミングも考慮してくれます。<br />
<br />
仕組みはシンプルでMIDI鍵盤128通りのノートオフとノートオンに加えて、どれくらい前後にずれているか(100パターン)、どれくらいのボリュームの強弱があるか(32パターン)を、学習させています。<br />
<br />
デモサウンドを聞く限りではかなりピアノ演奏としてのリアル感さが感じられるのではないでしょうか。<br />
<br />
(しかし同じモデルを使っても筆者はこんないい感じに作曲できない!!!、細かいパラメーターの設定か、、学習モデルか、、個人的にもまだ研究が必要のようです。。。。)<br />
<br />
Magentaは「MIDI」をベースに作曲するので、どうしてもそのままだとダイナミクスや、揺らぎについても考慮してやらないと、「観賞用」としてはベタベタの”人工的なサウンド”になってしまう傾向にあります。(反面、作曲補助という意味では、問題ないのですが、、、)<br />
<br />
今回の発表はその解決に一石を投じたと言えます。<br />
<br />
<br />
参考資料:<br />
<br />
<pre class="highlight" style="background: rgb(238, 238, 255); border-radius: 3px; border: 1px solid rgb(232, 232, 232); color: #111111; font-size: 15px; margin-bottom: 15px; overflow-x: auto; padding: 8px 12px;"><pre class="highlight" style="border-radius: 3px; border: 1px solid rgb(232, 232, 232); margin-bottom: 15px; overflow-x: auto; padding: 8px 12px;"><code style="border-radius: 3px; border: 0px; padding: 1px 0px;">
Ian Simon and Sageev Oore. "Performance RNN: Generating Music with Expressive
Timing and Dynamics." Magenta Blog, 2017.
https://magenta.tensorflow.org/performance-rnn</code></pre>
</pre>
<br />
<br />
<br />
<br />
<br />
<br />Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-60793890308322755482017-06-21T18:32:00.000+09:002017-06-27T22:29:29.801+09:00作曲家の視点から人工知能の生徒たちに授業をしてみたよ以前の記事→ <a href="https://musicedutainment.blogspot.com/2016/11/blog-post_88.html">人工知能(Tensorflow Magenta)で作曲してみた</a><br />
<br />
さて、今日は音楽講師になって、かわいい三人の人工知能の生徒たちに、音楽指導をしてみようと思います。<br />
<br />
どんな作品が上がって来るでしょうか。。。。。。<br />
<br />
<h3>
<b>[授業をはじめる!!]</b></h3>
<br />
「さあ、今日の授業は、<b>メロディを続けて作ってみよう!!</b>です。<br />
<br />
まずメロディの一部を挙げるので、そこから曲の続きを作ってみよう。<br />
<br />
課題曲は、どらえもんのテーマ曲!<br />
<br />
『あんなこといいな〜できたらいいな〜、あんな夢こんな夢いっぱいあるけど〜』<br />
<br />
のお馴染みの曲です。<br />
<br />
その最初の部分「あんなこといいな」(ソードドーミラーミソー)を参考に、そこから曲の続きを作ってみましょう。」<br />
<br />
---------------0.01秒後----------------<br />
<br />
「おお、もうできたのね、さすが人工知能たちは、<b>作曲が早い</b>。<br />
こんだけ早いと、コーヒーを飲む暇もない。」<br />
<br />
まずは生徒Aの作品から聞いてみよう。<br />
<br />
<iframe frameborder="no" height="100" scrolling="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/329253954&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&visual=true" width="100%"></iframe>
<br />
<br />
「うーん、なんだこりゃ、まるでまとまりがないじゃないか。<br />
『あんなこといいな』から先はまるで酔っ払いの千鳥足だ。」<br />
<br />
<br />
生徒Bの作品<br />
<br />
<iframe frameborder="no" height="100" scrolling="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/329254203&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&visual=true" width="100%"></iframe>
<br />
<br />
「ふむ。まあだいぶ良くはなっているな、『あんなこといいな』の繰り返しが増えて、メロディが覚えやすい。<br />
ただ、少しシンプルすぎる感じがありますねえ。」<br />
<br />
<br />
生徒Cの作品<br />
<br />
<iframe frameborder="no" height="100" scrolling="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/329254348&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&visual=true" width="100%"></iframe>
<br />
<br />
「おお、かなりよくなっているね、エンディングの感じも出ているし!!!これを0.01秒で作ってしまうとは!さすが君は優秀な生徒だ!!」<br />
<br />
<br />
<h3>
<b>[メロディのコツは繰り返し]</b></h3>
<br />
さて、というわけで、後の方の生徒になると、それぞれ、曲の「それっぽさ」がしっかりしてきたのがわかるでしょうか。<br />
<br />
ですが、果たして、その違いはなんでしょう。。。??<br />
<br />
音楽が得意な人ならもう気づいたかもしれません。この違いはざっくりといえば、「<b>繰り返し」</b>の扱いの違いになります<br />
<br />
課題曲として与えられたドラえもんのテーマ曲の「あんなこといいな」の部分。<br />
<br />
この部分はのリズムは<b>付点8分音符</b>でスキップする様にはねており、それが、「<b>あんーな」</b>、<b>「こーと」</b>、<b>「いーな」</b>と3つ繰り返すことで、「フレーズらしさ」、を作り出しています。<br />
<br />
このリズムや、音形をいかに上手に繰り返し使うかが、メロディ作りのコツなのです。<br />
<br />
<br />
その観点でいうと、生徒Aはフレーズにどうも統一性がなく、全く印象に残りません。<br />
<br />
生徒Bは繰り返しが多く使われることで、かなり統一性が出てきましたね。<br />
ただ、短い組み合わせすぎるので、ちょっと単純に感じるかもしれませんね。<br />
(テクノミュージックなどにはむいているかも?)<br />
<br />
生徒Cは一回「あんなこといいな」が入った後、そのリズムを受けて「EDECAG」と旋律が入り、その後また「あんなこといいな」の旋律に戻っています。<br />
<br />
これは実際の人間の作曲でも非常によくみられるパターンです。<br />
<br />
<h3>
<b>[3つのニューラルネットワークのモデルの違い]</b></h3>
<br />
今回の実験はgoogle magenta/tensorflowの提唱する <b>Basic RNN</b>, <b>Loopback RNN</b>, <b>Attention RNN</b>という3つのニューラルネットワークのモデルを使いました。<br />
<br />
エンジニア方面からより詳しく知りたい方は<a href="https://github.com/tensorflow/magenta">こちら</a>にソースコードがあります。(オープンソース)<br />
<br />
それぞれのモデルは生徒A・B・Cに対応しています。<br />
<br />
この3つは「繰り返し」の扱いが違うところが、キモになっています。<br />
<br />
<h4>
<b>Basic RNN</b> -- 生徒A</h4>
<br />
一番最初の生徒AはLSTM(Long short-term memory)を使った最もシンプルなモデルで基本となるものです。LSTMは主に自然言語解析の分野なんかでよく使われる、再帰型ニューラルネットワークの一部になります。<br />
<br />
(たとえば、自然言語の世界では、「私は音楽が好きです」の文の様に「私」の後には「は」が来る可能性が高いですよね。同様に、「私が」と来る可能性も高いですね。でも、「私にゃ」、「私ば」なんていう文はほとんどないですよね。そういったことを予測するのに使用されます。)<br />
<br />
繰り返しなどは考慮していない、あくまでもシンプルなモデル。<br />
<br />
<h4>
<b>Lookback RNN</b> -- (生徒B)</h4>
<br />
小節の単位の中でのメロディパターンとある音の小節の中での「相対的な位置」を理解しながら、それを繰り返すかどうかを学習していく。通常のニューラルネットワークの場合は、それぞれのセルの中に学習した情報を格納していくのですが、それとは別に、1、ないし、2小節前の情報をインプットしていきます。<br />
<br />
<h4>
<b>Attention RNN</b> -- 生徒C</h4>
<br />
Lookback RNNと同じく繰り返しを重要視しますが、1,2小節ではなく、より大きなまとまりで繰り返しを捉え、メロディを生成していく方法。<br />
<br />
<br />
とこのようにそれぞれのモデルには特徴があります。<br />
後の方に行くに従って、「繰り返し」の要素が、変わっていきそれらしさが変わって行くのです。<br />
(LoopbackとAttentionのどっちが効果的かはケースバイケースでしょう)<br />
<br />
<h3>
<b>[より音楽らしくなるためには]</b></h3>
<br />
繰り返しが入ったことで、随分と音楽らしくなりました。<br />
<br />
あとは、コード進行やコード進行とは別の起承転結も考慮に入れたいところ。<br />
<br />
音楽に精通した方なら、うなずけるところと思いますが、コードなどは、昔のAI(ルールベース)のAIなどで描くとシンプルに表すことができます。<br />
<br />
そのため、ディープラーニングに適した分野かどうかは実は疑問が付くと思っています。<br />
<br />
アートの分野では、ある程度、ディープラーニングとルールベースの組み合わせが必要になって来るのでしょうか、なんて思ってます。<br />
<br />
(そもそもコード進行が音楽に必要か?なんて話もありますが)<br />
<br />
<br />
<br />
<br />Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-55541391470302901292017-06-09T19:52:00.002+09:002017-06-09T19:52:57.419+09:00Mac os X上のtensorflow GPU でImage not foundエラーが出る時PCの計算量の多い時には必須のGPU<br />
<br />
Mac os X(el captain 以降)で、tensorflowのGPU版を動かそうとすると、<br />
<br />
image not found エラーになることがあります。<br />
<br />
<br />
<pre style="background-color: #eff0f1; border: 0px; color: #242729; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-size: 13px; font-stretch: inherit; font-variant-numeric: inherit; line-height: inherit; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;">ImportError: dlopen(/Users/daichi/.pyenv/versions/3.5.2/lib/python3.5/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so, 10): Library not loaded: @rpath/libcublas.8.0.dylib
Referenced from: /Users/daichi/.pyenv/versions/3.5.2/lib/python3.5/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so
Reason: image not found
Failed to load the native TensorFlow runtime.
See https://www.tensorflow.org/install/install_sources#common_installation_problems
for some common reasons and solutions. Include the entire stack trace
above this error message when asking for help.</code></pre>
<br />
これは環境変数 LD_LIBRARY_PATHかCUDA_HOMEが通ってない時に起こりがちですが、まずそれを確認します。通っていなければパスを通す。<br />
<br />
<pre style="background-color: #eff0f1; border: 0px; color: #242729; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-size: 13px; font-stretch: inherit; font-variant-numeric: inherit; line-height: inherit; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;">(tensorflow) koala:tensorWorkspace daichi$ echo $LD_LIBRARY_PATH
/usr/local/cuda/lib:
(tensorflow) koala:tensorWorkspace daichi$ echo $CUDA_HOME
/usr/local/cuda</code></pre>
<br />
両方とも通っているのにエラーが出る時はSIPというセキュリティ関係のサービスが原因のことがあります。<br />
こちらの<a href="http://www.macworld.com/article/2986118/security/how-to-modify-system-integrity-protection-in-el-capitan.html">記事</a>を参考に停止しましょう。<br />
<br />
GPUをオンにすると<br />
筆者の場合は シンプルな画像分析で、615秒->383秒と90%高速化されました。<br />
最新モデルだともっともっと早くなるでしょう。<br />
<br />
<div class="p1">
name: GeForce GT 650M</div>
<div class="p1">
major: 3 minor: 0 memoryClockRate (GHz) 0.9</div>
<div class="p1">
<br /></div>
<div class="p2">
# GPUなし場合</div>
<div class="p2">
'start train with eval'</div>
<div class="p2">
Epoch 1: ./data/data_batch_1.bin</div>
<div class="p2">
Epoch 1: ./data/data_batch_2.bin</div>
<div class="p2">
Epoch 1: ./data/data_batch_3.bin</div>
<div class="p2">
Epoch 1: ./data/data_batch_4.bin</div>
<div class="p2">
Epoch 1: ./data/data_batch_5.bin</div>
<div class="p2">
epoch 1 duration = 615 sec, prediction = 0.359</div>
<div class="p1">
<br /></div>
<div class="p1">
<br /></div>
<div class="p2">
#GPU ありの場合</div>
<div class="p2">
Epoch 1: ./data/data_batch_1.bin</div>
<div class="p2">
Epoch 1: ./data/data_batch_2.bin</div>
<div class="p2">
Epoch 1: ./data/data_batch_3.bin</div>
<div class="p2">
Epoch 1: ./data/data_batch_4.bin</div>
<div class="p2">
Epoch 1: ./data/data_batch_5.bin</div>
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
</style>
<br />
<div class="p2">
epoch 1 duration = 383 sec, prediction = 0.359</div>
<br />
<br />
<br />
しかし新型Mac book proはなぜ、NvidiaじゃなくてAMDのGPUを積んだんだろうか。。。。<br />
<br />Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-76400586906829430612017-06-09T19:20:00.004+09:002017-06-09T19:30:59.306+09:00NSynth - Googleが生み出した人工知能シンセ!!以前の記事でも触れた<br />
<br />
<a href="https://musicedutainment.blogspot.jp/2016/11/blog-post_88.html" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;">人工知能(Tensorflow Magenta)で作曲してみた</a><br />
<br />
にも関わりますが、Googleのプロジェクト magentaに新しいプロジェクト<br />
<br />
<a href="https://aiexperiments.withgoogle.com/sound-maker/view/">NSynth</a>が発表されてました。<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-vxIfdtjjTxY/WTp2DBHn-QI/AAAAAAAABpk/aT1iSYglyRc37WDog8C1s9aF903eldCTwCLcB/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%2B2017-06-09%2B19.18.30.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1130" data-original-width="1600" height="226" src="https://4.bp.blogspot.com/-vxIfdtjjTxY/WTp2DBHn-QI/AAAAAAAABpk/aT1iSYglyRc37WDog8C1s9aF903eldCTwCLcB/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%2B2017-06-09%2B19.18.30.png" width="320" /></a></div>
<br />
普通のシンセサイザーといえば、発振器とサンプリングされたwave波形を使って音を合成していくものでした。<br />
<br />
こちらは、ニューラルネットワークを使って、大量のデータから特徴量を抽出して、サウンドを作っていくのが特徴。<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://magenta.tensorflow.org/assets/nsynth_04_05_17/NSynth_blog_figs_WaveNetAE_diagram.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="303" data-original-width="800" height="121" src="https://magenta.tensorflow.org/assets/nsynth_04_05_17/NSynth_blog_figs_WaveNetAE_diagram.png" width="320" /></a></div>
<br />
<br />
<div>
<br /></div>
<div>
そして「特徴量を抽出」する方法が、ディープラーニングの肝なのですが、今回のシンセは同じく昨年googleが昨年開発した音声入出力技術の<a href="https://deepmind.com/blog/wavenet-generative-model-raw-audio/">WaveNet</a>がベースになっています。</div>
<div>
<br /></div>
サンプリング型のシンセサイザーだと、音がある程度以上(3秒以上)伸びると、波形が不自然になっり、単調になったりしやすかったですが、今回はそのあたりの「間」や「息遣い」なども、ある程度表現してくれるようです。<br />
<br />
しかし、これをどう使ったらいいかというのは、まだまだ??の世界。<br />
magentaの自動作曲と組み合わせるともっと面白い効果を生み出せるかもしれません。<br />
<br />
本来人の脳を模倣するために生まれたニューラルネットワーク、いつしか人の脳を飛び越して、人類が聞いたことのないような音を生み出していってほしいですね。<br />
<br />
<br />
<br />
<br />
<br />Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-76576997877835964612017-04-13T16:10:00.002+09:002017-04-13T16:10:37.757+09:00携帯用洗濯袋Scrubbaが超便利だった話。旅先で、出張で困るのが洗濯。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
ホテルで洗濯に出したとき、kg単位で洗濯してくれるなら良いですが、クリーニング扱いになって、H&Mの千円くらいのTシャツ一枚をご丁寧に、うやうやしく畳んだ上で数百円取られたりすることもあります。<br />
<br />
それもなんだか馬鹿馬鹿しいので、こんなの買ってみました。<br />
<br />
<br />
<div style="text-align: center;">
<a href="https://www.amazon.co.jp/gp/product/B01N68XF0O/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B01N68XF0O&linkCode=as2&tag=hajiwaru-22&linkId=b667e02e4387938f654b8b75c86c7153" target="_blank"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=B01N68XF0O&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=hajiwaru-22" /></a><img alt="" border="0" height="1" src="//ir-jp.amazon-adsystem.com/e/ir?t=hajiwaru-22&l=am2&o=9&a=B01N68XF0O" style="border: none !important; margin: 0px !important;" width="1" />
</div>
<a href="https://www.amazon.co.jp/gp/product/B01N68XF0O/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B01N68XF0O&linkCode=as2&tag=hajiwaru-22&linkId=494a2fb13d5a2e4259b85ab3d9ed4e73" target="_blank">Scrubba Washbag スクラバ ウォッシュバッグ 携帯用洗濯袋 2017年モデル</a><img alt="" border="0" height="1" src="//ir-jp.amazon-adsystem.com/e/ir?t=hajiwaru-22&l=am2&o=9&a=B01N68XF0O" style="border: none !important; margin: 0px !important;" width="1" /><br />
<br />
要は防水の袋+洗濯板というアイディア商品のようですが、かなりおすすめです。<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-3vJ-5skbVhU/WO8gRSAfPgI/AAAAAAAABmg/p5sNtUpcmfwHSoWjPcvR-rFjGQhq0cL3QCLcB/s1600/2017-04-13%2B13.39.12.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://1.bp.blogspot.com/-3vJ-5skbVhU/WO8gRSAfPgI/AAAAAAAABmg/p5sNtUpcmfwHSoWjPcvR-rFjGQhq0cL3QCLcB/s320/2017-04-13%2B13.39.12.jpg" width="320" /></a></div>
<br />
洗濯物と、洗剤を入れ蓋をして、上から揉む(自分は足でふんでます)<br />
<br />
その後、また、水を入れて、ゆすぐ。<br />
<br />
この突起の部分が、洗濯板の役割をするんですね。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-DQTTsk1s0gw/WO8gQq7ickI/AAAAAAAABmc/JMqNgTgGnJwHbB49H0bJEQH-ubcVLOK6ACLcB/s1600/2017-04-13%2B13.40.01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://3.bp.blogspot.com/-DQTTsk1s0gw/WO8gQq7ickI/AAAAAAAABmc/JMqNgTgGnJwHbB49H0bJEQH-ubcVLOK6ACLcB/s320/2017-04-13%2B13.40.01.jpg" width="240" /></a></div>
<br />
ビーチなんかでたまに見かける防水かばんと同じ、仕組みを取り入れているので、防水性は極めて高いです。都合30回ほどつかっていますが、全く水漏れしていません。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-XOWdj5qsGfQ/WO8gZvVCzeI/AAAAAAAABmo/GcdCgzcuy6cqv5gruXM9hdf3Xl_NjK-LwCLcB/s1600/2017-04-13%2B13.40.32.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://3.bp.blogspot.com/-XOWdj5qsGfQ/WO8gZvVCzeI/AAAAAAAABmo/GcdCgzcuy6cqv5gruXM9hdf3Xl_NjK-LwCLcB/s320/2017-04-13%2B13.40.32.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
ここは余分な空気を抜く穴。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-kTU2CwjINuo/WO8gbsz23AI/AAAAAAAABmw/EVO3kSg0X8kDXDUaqXPT6W9n7HMx1jrngCLcB/s1600/2017-04-13%2B13.40.56.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://3.bp.blogspot.com/-kTU2CwjINuo/WO8gbsz23AI/AAAAAAAABmw/EVO3kSg0X8kDXDUaqXPT6W9n7HMx1jrngCLcB/s320/2017-04-13%2B13.40.56.jpg" width="320" /></a></div>
<br />
気に入ったポイントは。<br />
<br />
<ul>
<li>袋状なので、水をあまり使わない。</li>
<li>手が濡れない</li>
<li>デザイン</li>
<li>小さく、軽い。</li>
</ul>
<div>
ただ、大きくはないので1日程度の洗濯物しかできません。</div>
<div>
<br /></div>
<br />
長期の外出に洗濯って結構厄介なものですよね。<br />
<br />
洗濯って、もっともっとイノベーションができそうな分野です。<br />
<br />
<br />
<br />
ちなみにこの手のUSB型小型充電器もあって、悩んだのですが、、、、<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.amazon.co.jp/gp/product/B01N6CM7KV/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B01N6CM7KV&linkCode=as2&tag=hajiwaru-22&linkId=c3ee4b651ea390740461e8250f72f255" style="margin-left: 1em; margin-right: 1em; text-align: center;" target="_blank"><img border="0" src="https://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=B01N6CM7KV&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=hajiwaru-22" /></a></div>
<br />
<br />
<a href="https://www.amazon.co.jp/gp/product/B01N6CM7KV/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B01N6CM7KV&linkCode=as2&tag=hajiwaru-22&linkId=df351b9903de1af6df13efcc7db57ecb" target="_blank">Konomise 超音波 多機能ミニ洗浄器 洗濯機 USB充電式 携帯型 節水 子供衣類/タオル/下着/野菜/果物などのもの洗浄 出張/旅行/ホームにピッタリ</a><img alt="" border="0" height="1" src="//ir-jp.amazon-adsystem.com/e/ir?t=hajiwaru-22&l=am2&o=9&a=B01N6CM7KV" style="border: none !important; margin: 0px !important;" width="1" />
<br />
<br />
<div style="text-align: center;">
<img alt="" border="0" height="1" src="//ir-jp.amazon-adsystem.com/e/ir?t=hajiwaru-22&l=am2&o=9&a=B01N6CM7KV" style="border: none !important; margin: 0px !important;" width="1" />
</div>
「超音波」というのに、いまいち期待がモテないのと、<br />
一度にあらえる洗濯量が少なそうなので、やめにしました。<br />
<br />
洗濯袋タイプとこのUSBタイプが組み合わせたものが出ると、よりいいかもだけど。。。<br />
<br />
<br />
<br />
<br />Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-91473597227357182312017-03-08T15:51:00.001+09:002017-03-08T15:53:19.980+09:00人間と人工知能同じテーマで作曲勝負!してみた<div>
<br />
今回使ったのは、人工知能音楽作成サービス<a href="https://www.ampermusic.com/">Amper</a><br />
<br />
テーマは、サントラ風楽曲で、「2012」的なパニック映画、世界が滅亡するような、ダークで重い、でも、ビートの激しい感じ。。。。<br />
<br />
さあ、人間のミュージシャン(僕)が作ったものと比べて見てください!!!<br />
<br />
<br />
<br /></div>
<div>
<iframe frameborder="no" height="150" scrolling="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/311312096&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&visual=true" width="100%"></iframe>
</div>
<div>
<br /></div>
<div>
<iframe frameborder="no" height="150" scrolling="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/308979200&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&visual=true" width="100%"></iframe>
</div>
<div>
<br />
ほら、人間の方がいいでしょ!!!と<br />
といいかったのですが、これ、もうわかんないよね。。。。<br />
<br />
というか、人工知能版の方が、楽器が多かったり、リッチな印象すらあります。<br />
<br />
人間版はタイトに削ぎ落としたとも言えるのですが。<br />
<br />
反面、すこしマンネリしがちな人工知能版に対して、ブレイク的な空白があったりと、人間版の方が、メリハリがある構成になっています。<br />
<br />
まあ、どっちがいいかはもう好みとしか言いようがありません。(これがすでにすごいのですが)<br />
<br />
とはいえ、人間が1曲作る間に、AIは100曲でも1000曲でも生み出せますから、生産性においては、全く叶いそうにありません。<br />
<br />
Amperはアルゴリズムが公開されていませんが、おそらく、ある程度のプリセット楽器のパターンに沿って、MIDIを生成し、音に変えているのでしょう。</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
以前の、<span style="background-color: white; color: #222222; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><a href="https://musicedutainment.blogspot.jp/2016/11/blog-post_88.html">人工知能で作曲してみた</a> のときはgoogle tensorflowとmagentaを使って、メロディMIDIだけ生成したのですが、それと同じようなことを各楽器ごとに行い、またコード進行などもチューニングしているような感じがします。</span><br />
<span style="background-color: white; color: #222222; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><br /></span>
<span style="color: #222222; font-family: arial, tahoma, helvetica, freesans, sans-serif;"><br /></span>
<span style="color: #222222; font-family: arial, tahoma, helvetica, freesans, sans-serif;">ちなみに人工知能作成の方は、人工知能マスタリングのLANDRで音圧調整もしています。一切人の手が入っていません。</span><br />
<span style="color: #222222; font-family: arial, tahoma, helvetica, freesans, sans-serif;"><br /></span>
<span style="background-color: white; color: #222222; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"></span><br />
<span style="color: #222222; font-family: arial, tahoma, helvetica, freesans, sans-serif;">(*人間版の方は、以前とある雑誌の企画で作ったもので、今回新たに作ったものではありませんが、同じコンセプトでの作曲という意味ではよかったかと。)</span><br />
<div class="post-header" style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 1.6; margin: 0px 0px 1.5em;">
<div class="post-header-line-1">
</div>
</div>
</div>
<div>
<br /></div>
Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-65683772128931534142017-01-29T01:44:00.005+09:002017-01-29T01:44:51.484+09:00計画経済ってこういうこと<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-LCHVP1Z8tN8/WIzKMmb37lI/AAAAAAAABiw/Q2YuXcFGuqsY7Q5KHKng9NxVG9bB-iJ3gCLcB/s1600/super2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://2.bp.blogspot.com/-LCHVP1Z8tN8/WIzKMmb37lI/AAAAAAAABiw/Q2YuXcFGuqsY7Q5KHKng9NxVG9bB-iJ3gCLcB/s320/super2.jpg" width="240" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
「計画経済の元、基本、物は一種類ずつ」<br />
って、意味わかりますか?<br />
<br />
僕自身も実際にスーパーを見るまでは意味がわからなかったです。<br />
<br />
というわけで、ハバナ郊外の巨大なスーパーマーケットへ足を運んでみたときのこと。<br />
そのスーパーマーケットはキューバでは珍しく、棚の中を歩き回って、手に取れるスタイルの日本でもよくあるようなスーパーマーケット。<br />
<br />
(ただし、カバンは預ける必要があり、さらに預け代までとられます)<br />
ですが、ただただ異様なのが、陳列棚に並んだ、大量の同じ商品。<br />
<br />
マヨネーズのコーナーには、あるブランドのマヨネーズだけが大量に並んでいます。<br />
<br />
つまり、計画経済の元で、生産されるマヨネーズは一種類。<br />
<br />
魚の缶詰は一種類、洗剤も一種類、ジュースだって一種類、ってことなのです。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-ikpqxtezQtc/WIzKModT_VI/AAAAAAAABis/6Qgyg2RVYu0FDdjG83Na_yDyWZ1--HlewCLcB/s1600/superq.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="240" src="https://4.bp.blogspot.com/-ikpqxtezQtc/WIzKModT_VI/AAAAAAAABis/6Qgyg2RVYu0FDdjG83Na_yDyWZ1--HlewCLcB/s320/superq.jpg" width="320" /></a></div>
<div style="text-align: right;">
</div>
<br />
(長年にわたる経済制裁の元で、ほとんどの製品を自国生産しなければならなかったという特殊事情もありますが)<br />
<br />
日本なら、コンビニのジュースのコーナに行けば、ファンタやコーラやカルピスに、三ツ矢サイダー。<br />
<br />
ここでは、そんなことはありえません。<br />
<br />
コーラは一種類、あと、りんご味のサイダーがある程度。<br />
<br />
日本のコンビニがあれだけキラキラしているのも、街が看板であふれているのも、資本主義のおかげだったってことに気づくのです。<br />
<br />
料理の味が塩味だけになるのもなんとなくわかる。<br />
<br />
だって、調味料のバリエーションだってほとんどないのだから!Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-32794969329435754472017-01-20T19:52:00.001+09:002017-01-20T19:52:35.421+09:00シンプルすぎる!キューバ飯<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-K6e8Uz56o9A/WIHrrbuDTKI/AAAAAAAABh8/fAu2yFiomRAqg4kzUfMRCHfJGByI9EnowCLcB/s1600/15895946_10206156413548197_1977829977803072711_o.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="252" src="https://4.bp.blogspot.com/-K6e8Uz56o9A/WIHrrbuDTKI/AAAAAAAABh8/fAu2yFiomRAqg4kzUfMRCHfJGByI9EnowCLcB/s320/15895946_10206156413548197_1977829977803072711_o.jpg" width="320" /></a></div>
「鶏肉」<br />
<br />
うん、塩が効いてる。<br />
<br />
「豚肉」<br />
<br />
うん、塩味。<br />
<br />
「謎肉」<br />
<br />
時々歯ごたえのないコンビーフのような、なんだかよくわからない肉に出会います。そしてこれも塩味。<br />
<br />
「サラダ」<br />
<br />
塩ドレッシング。。。??<br />
<br />
「白米」<br />
<br />
なぜこれが塩味???<br />
<br />
とばかりに基本、「塩味」である。<br />
<br />
そもそもあんまり複雑な調味料がないのかもしれないが、徹底して、塩の味しかしない。<br />
酸味や辛味も乏しく、ましてや、出汁?うまみ?何それ美味しいの?状態である。(いや、美味しいんだよ!!)<br />
<br />
白いご飯すら塩味なのである。<br />
<br />
聞けば、塩をいれて炊き込むのだとか。<br />
<br />
これじゃあっというまに高血圧まっしぐらだよ、国民の健康を大事にしてるんじゃなかったのかキューバ!<br />
<br />
これといって名物があるわけでもなし、食事に関してはかなり寂しい。<br />
<br />
今後、観光客を呼び込む気なら、インフラよりなにより、食事面を鍛えないとけっこうきびしいぞ!<br />
<br />
どんなに美しいビーチがあっても、食事が塩をかけた謎肉じゃあまりにわびしいではないか。<br />
<br />
と思ってしまったのでした。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-eTEveEn3e0o/WIHrrCFfYEI/AAAAAAAABh4/-ak01yMIunsDL40T9eLqW6d9bRRmP-UMgCLcB/s1600/15826386_10206156412228164_8526726655926118255_n.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="320" src="https://3.bp.blogspot.com/-eTEveEn3e0o/WIHrrCFfYEI/AAAAAAAABh4/-ak01yMIunsDL40T9eLqW6d9bRRmP-UMgCLcB/s320/15826386_10206156412228164_8526726655926118255_n.jpg" width="240" /></a></div>
<br />
<br />
というわけで一番うまいのは結局これでした。<br />
<br />
なんだかふにゃふにゃした謎肉をパンで挟んだキューバサンド。<br />
<br />
まあ、これも塩味なんだけれどね。<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-86216358815916072962017-01-15T12:39:00.002+09:002017-01-15T13:08:07.019+09:00キューバンドリームなるか!<div style="text-align: right;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-66TPGUMifFc/WHr1iHcxjYI/AAAAAAAABhQ/tmal-ndMIgw9TCd4PK0OBcfSSb-94fv9gCLcB/s1600/15800380_10206153012943184_7110229697052413669_o.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://4.bp.blogspot.com/-66TPGUMifFc/WHr1iHcxjYI/AAAAAAAABhQ/tmal-ndMIgw9TCd4PK0OBcfSSb-94fv9gCLcB/s320/15800380_10206153012943184_7110229697052413669_o.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br /></div>
<div>
オバマ政権下でのアメリカの国交回復、とか、googleがキューバのインフラ整備へ乗り出すとかとか、最近は明るいニュースの多かったキューバ。</div>
<div>
<br /></div>
<div>
すっかり、いまや経済発展の最中なのでは!と思っていたのだけど、、、、、</div>
<div>
<br /></div>
<div>
街を見渡して見ると、、、、実はあんまり変わってないかも・・・・???</div>
<div>
<br /></div>
<div>
90年代のソ連の崩壊に伴う大不況、2008年のキューバ国営銀行の債務不履行(デフォルト)</div>
<div>
<br /></div>
<div>
と二つの危機を乗り越え、「しぶとい社会主義国」と、世界から認知されているものの、やっぱり今もあんまり物はない。</div>
<div>
<br /></div>
<div>
観光客はそれなりにいるものの、商店はガラガラ、陳列棚はスカスカ。<br />
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-Skymk6X50Bs/WHr1iKxWMdI/AAAAAAAABhU/mF0L8ihvgxEZdnROvarIh_qMQfZSkf5XACLcB/s1600/15800482_10206153012343169_1922774263722189595_o.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="240" src="https://3.bp.blogspot.com/-Skymk6X50Bs/WHr1iKxWMdI/AAAAAAAABhU/mF0L8ihvgxEZdnROvarIh_qMQfZSkf5XACLcB/s320/15800482_10206153012343169_1922774263722189595_o.jpg" width="320" /></a></div>
<br />
<br /></div>
<div>
そもそも日本のコンビニのように、陳列棚をあるいて自由に商品を手に取れる店は稀で、大概は窓口で欲しいものを伝えて、とってきてもらうシステムなので、頻繁の物資の購買が起こりようがない。</div>
<div>
<br /></div>
<div>
(カウンターで薬剤師さんに伝えてとってきてもらう薬屋さんみたいな感じです)</div>
<div>
<br /></div>
<div>
国交は回復したけれど、経済制裁は続いているので、物が大量に入ってくるわけでもない。</div>
<div>
<br /></div>
<div>
トランプ政権になってさらに先行きは不透明。</div>
<div>
<br /></div>
<div>
ただし、それでも、土地の売買が解禁になったり、ドイツ、英国、フランス、イタリアからの観光客は増える一方だったり、</div>
<div>
<br /></div>
<div>
アメリカ人のキューバ旅行が完全解禁になればアメリカからの観光ビックバンが起こるともありえる(国交回復後もまだ、アメリカ人とのキューバ旅行には、申請が必要で、完全に自由化されたわけではない。)</div>
<div>
<br /></div>
<div>
と、前向きな材料はそれなりにあり、キューバンドリームを求めて、本国に帰る、キューバ人も増えてきたのだとか。</div>
Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-10517174497946514322017-01-08T09:35:00.000+09:002017-01-08T09:35:36.398+09:00世界最悪のファーストクラス?、クバーナ航空<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-AyWuvFpU79Q/WHGIrmsiouI/AAAAAAAABgg/Dpo9e7hjiUcVWhZ8adF7UfV4udsxaRiqwCLcB/s1600/img.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://4.bp.blogspot.com/-AyWuvFpU79Q/WHGIrmsiouI/AAAAAAAABgg/Dpo9e7hjiUcVWhZ8adF7UfV4udsxaRiqwCLcB/s320/img.jpg" width="295" /></a></div>
<br />
世界最悪!の呼び声高いキューバ国営クバーナ航空。<br />
<br />
事故率は世界一高く、遅延はあたりまえ。<br />
<br />
中華航空に、エジプト航空、パキスタン航空、旅好きみんなが思う、できれば避けて通りたい航空会社の一つ。<br />
<br />
なんだかんだで、いままでこれらの航空会社、全部乗る羽目になってきたのが、クバーナ航空だけは乗らずにすんでいたのだけれど、、<br />
<br />
しかし、今回、何の因果か、やっぱりそんな飛行機に乗る羽目になったのである。<br />
<br />
これは、日頃の行いか、前世の報いか。<br />
<br />
それとも格安航空券検索エンジンの罠か。<br />
<br />
さて、恐る恐るカウンターへ向かうと、職員がいきなりなぜか野球のユニフォーム、さすが野球大国!<br />
<br />
と一瞬思ったが、だからなんなんだ。<br />
<br />
何でユニフォームなんだ。<br />
<br />
シュール。<br />
<br />
しかも、チェックインすると、<br />
<br />
「このチケットはファーストクラスだね」<br />
<br />
と突然告げられ、人生初のファーストクラスへ。<br />
<br />
どうやら、知らずにファーストクラスを買ってしまったらしい。<br />
<br />
一番安いの買ったはずなんだけど。。。。どういう基準なのかも謎。<br />
<br />
チケットには「1E」の文字、最前列なんて初めてだな〜さすがファーストクラスと思いながら、指定された座席1Eにいくものの、そもそも座席が1A-1Dまでしかなく、1Eなんて席がない!<br />
<br />
「??」<br />
<br />
となりながらも結局そのまま別の席に案内される。<br />
<br />
まあ、そんなもんなのか。結局3時間遅れでフライトへ。<br />
<br />
さすがにファーストクラスだけあって、椅子はゆったりなものの、あちこち傷だらけで、肘掛はぼろぼろ。<br />
<br />
中国からのお下がりらしい機体にはそこら中に謎の中国語。<br />
<br />
印刷のぼやけた非常口案内。<br />
<br />
いままで、椅子が倒れたまま起き上がらない飛行機や、アラビア語でお祈りを流しながら飛び立つ飛行機など、謎の飛行機は結構乗ってきましたが、クバーナ航空もなかなかいい線行っております。<br />
<br />
キューバは、現在、カナダ、メキシコなど、複数の航空会社が乗り入れておりますが、スリルを味わいたい方にはオススメです。<br />
<br />
クバーナ航空。Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-87060403221033879192017-01-05T11:47:00.000+09:002017-01-05T11:47:12.127+09:00キューバのインターネットは売人から買え!<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-qcIhrircP2o/WG2xeANImkI/AAAAAAAABf8/2AZ61osmprc8fPvDeI9qPdIQ79KBQqYHgCLcB/s1600/15823172_10206140624313476_3841538374718119094_n.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="308" src="https://2.bp.blogspot.com/-qcIhrircP2o/WG2xeANImkI/AAAAAAAABf8/2AZ61osmprc8fPvDeI9qPdIQ79KBQqYHgCLcB/s320/15823172_10206140624313476_3841538374718119094_n.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
この公園は何かがおかしい、、、、<br />
すぐにピンとくる。<br />
<br />
そこらじゅうに虚ろな目をした男女たち。<br />
明らかにジャンキーの溜まり場だ!<br />
<br />
(あの緑の服を着た男が売人さ)<br />
<br />
通りすがりの白人の若者が耳打ちしてくれる。<br />
<br />
見ると、緑の服を着た、背の高い男が何やらジャンキー達に売りつけているではないか!<br />
<br />
。。。とは言っても売っているのはwifiカード<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-v1XdfJfmITo/WG2xd8lfOgI/AAAAAAAABf4/NrNI_Dka33okmKqH-_Vau6yDubRFVfmngCLcB/s1600/15823545_10206140624233474_3882470689848457732_n.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="212" src="https://3.bp.blogspot.com/-v1XdfJfmITo/WG2xd8lfOgI/AAAAAAAABf4/NrNI_Dka33okmKqH-_Vau6yDubRFVfmngCLcB/s320/15823545_10206140624233474_3882470689848457732_n.jpg" width="320" /></a></div>
<br />
<br />
まだまだ家庭にネットがなく、3gやLTEの携帯ネット接続もまだない。<br />
<br />
この国では、ネットはホテルや公園の公衆wifiを使って繋ぐしかない。<br />
<br />
接続に必要なカードは国営企業が販売しているものの、国営ならではとにかく遅くていつも長蛇の列、かと思えば午後には売り切れ、がざら。<br />
<br />
そのため正規に買えばなら一枚二ドル(1時間)のカードを三ドル払って売人から買うのである。<br />
<br />
ちなみにWifiスポットはすぐわかる。<br />
<br />
街を歩いていて、そこら中に携帯やノートパソコンを開いたwifiジャンキーたちがいたらその場所がwifiスポットだ。<br />
<br />
(ちなみに詳しい場所は<a href="http://www.etecsa.cu/">ETECSA</a>のサイトにあります。)<br />
<br />
観光客も市民も、一緒くたになって、公園のあちこちで、wifiを使っている。<br />
<br />
虚ろな目をしてセルフィーなどアップロードしてれば間違いなくwifiジャンキーだ。<br />
<br />
ちなみにキューバでgoogleが解禁になったのはつい去年からのこと、アメリカからの経済制裁によってネットインフラを整える機材は不足し、世界で最もネット事情が遅れた地域の一つだ。<br />
<br />
家庭にインターネットはほとんどなく、市民も公園やホテルに出かけて行って、使っている。<br />
<br />
なにせネットを自宅に引くには、月1万円以上するので、キューバの庶民には手が届かない。<br />
<br />
アメリカの経済封鎖が解ければ、きっと、この環境も、数年以内に整備されるだろう。(しかしトランプ政権になってちょっと先行きが不透明になってきた)<br />
<br />
もちろん、インターネットビジネスもまだまだこれから、インターネット最後のフロンティアにキューバンドリームは起こるだろうか。<br />
<br />
<div>
<br /></div>
Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-71962494594425162362017-01-04T11:08:00.001+09:002017-01-04T11:51:44.752+09:00不思議な社会主義、キューバ配給事情<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-X4nXt-f1mes/WGxY9rw_5XI/AAAAAAAABfc/WRDTzhIh1QQQRIE2Mlzf0Fk2gOb2KjmrACLcB/s1600/pic2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://2.bp.blogspot.com/-X4nXt-f1mes/WGxY9rw_5XI/AAAAAAAABfc/WRDTzhIh1QQQRIE2Mlzf0Fk2gOb2KjmrACLcB/s320/pic2.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
「卵は一人につき5個だね」</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
とフェレンタおばあちゃん</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
一週間に?</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
「いや一月だよ。それに砂糖や塩、米やスパゲッティも配給だよ」</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
と手帳を見せてくれた。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
"食料品の配給管理"</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
と書かれた手帳には、年齢をチェックする欄がありそれぞれに合わせた食料の配給が行われることを示している。</div>
<div class="p1">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-AVkJ2HTw0EM/WGxY9tlfMSI/AAAAAAAABfg/CLu-K9bZNu08JY4xomYMqbOoJ46xTxCaQCLcB/s1600/pic1.jpg" imageanchor="1" style="font-family: "hiragino kaku gothic pron"; font-size: medium; margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="320" src="https://4.bp.blogspot.com/-AVkJ2HTw0EM/WGxY9tlfMSI/AAAAAAAABfg/CLu-K9bZNu08JY4xomYMqbOoJ46xTxCaQCLcB/s320/pic1.jpg" width="241" /></a></div>
<span class="s1"></span></div>
<div class="p1">
<br /></div>
<div class="p1">
<span class="s1">卵</span><span class="s2">5</span><span class="s1">個が多いか少ないかはともかく、これが社会主義世界かーと不思議な感覚になる。</span></div>
<div class="p1">
<span class="s1"><br /></span>
<span class="s1">「それに、キューバは大学まで教育費も無料なのよ。あ、でも電気代とかは無料じゃないけどね」</span></div>
<div class="p1">
<span class="s1"><br /></span>
<span class="s1">と同居人の絵描きアイーダがいう。</span><br />
<span class="s1">アイーダもキューバの大学で芸術の学位を取ったのだそうだ。</span></div>
<div class="p1">
<span class="s1"><br /></span>
<span class="s1">キューバは教育と医療を国の最も重要な物、と位置付けているため医療も無料、年金だってしっかりもらえる。</span><br />
<br /></div>
<div class="p1">
<span class="s1">生活の心配がないから治安もとてもいい。</span><br />
<span class="s1"><br /></span>
<span class="s1">治安の悪いところが多い中南米では例外的に、夜の一人歩きも問題ない。</span><br />
<br />
<span class="s1"><br /></span></div>
<div class="p1">
<span class="s1">そんなフェレンタとアイーダの今日の食卓は目玉焼きに塩味をつけて炊いた米、缶詰の肉、ビーツの漬物。お世辞にも豊かという感じではない。</span><br />
<span class="s1"><br /></span></div>
<div class="p1">
<span class="s1">レールを外れると元に戻れないと言われる日本と、豊かではないが生活の心配がないキューバ。</span><br />
<span class="s1"><br /></span></div>
<div style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, "hiragino kaku gothic pro", meiryo, "ms pgothic", sans-serif; font-size: 14px; margin-bottom: 6px;">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 6.0px 0.0px; line-height: 16.0px; font: 14.0px 'Hiragino Sans'; color: #1d2129; -webkit-text-stroke: #1d2129; background-color: #ffffff}
span.s1 {font-kerning: none}
span.s2 {font: 14.0px Helvetica; font-kerning: none}
</style>
</div>
<div class="p1">
<span class="s1">革命以前に生まれている今年</span><span class="s2">73</span><span class="s1">歳のフェレンタおばあちゃんに今の社会をどう思うか聞いて見たかったが、そんな複雑なことを話せるスペイン語力はなかったのが残念。。。。</span><br />
<br />
(実際には完全無料ではなく限りなく無料に近い超低額で購入可能なのだそうです)</div>
<div class="p1">
<span class="s1"><br /></span></div>
Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-41144601414706746562016-12-07T12:10:00.005+09:002016-12-07T12:15:37.347+09:00アマゾンダッシュボタン<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.amazon.co.jp/gp/product/B01L2WPA0O/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B01L2WPA0O&linkCode=as2&tag=hajiwaru-22" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="136" src="https://2.bp.blogspot.com/-5PqQAycaPaM/WEd8o2QW_QI/AAAAAAAABd8/q0OhDCkOb5AoOBkkVRjwevUw2Xzl85dGACLcB/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%2B2016-12-07%2B12.03.25.png" width="320" /></a></div>
<br />
Amazon ダッシュボタンが出ていました。<br />
<br />
いまんとこ洗剤とか、飲み物とか、フルーツグラノーラとか。<br />
<br />
なんかハイテクな感じと生活感が、共存してて、なかなか興味深いです。<br />
<br />
いずれ、牛乳とか、ナマモノ系の食料品とかにも採用されるようになっていくんでしょうか。<br />
<br />
そろそろ秋だなあ〜秋刀魚ボタンでもおすか、とか。<br />
<br />
500円で最初の買い物は500円割引、要は実質無料ということなので、とりあえず買ってみてもいいのでは。<br />
<br />
しかし、amazon goといい、最近amazonは攻めてます。<br />
<br />
<br />
<a href="https://www.amazon.co.jp/gp/product/B01L2WOY6K/ref=as_li_qf_sp_asin_il?ie=UTF8&camp=247&creative=1211&creativeASIN=B01L2WOY6K&linkCode=as2&tag=hajiwaru-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B01L2WOY6K&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=hajiwaru-22" /></a><img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=hajiwaru-22&l=as2&o=9&a=B01L2WOY6K" height="1" style="border: none !important; margin: 0px !important;" width="1" />
<a href="https://www.amazon.co.jp/gp/product/B01L2WPA0O/ref=as_li_qf_sp_asin_il?ie=UTF8&camp=247&creative=1211&creativeASIN=B01L2WPA0O&linkCode=as2&tag=hajiwaru-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B01L2WPA0O&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=hajiwaru-22" /></a><img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=hajiwaru-22&l=as2&o=9&a=B01L2WPA0O" height="1" style="border: none !important; margin: 0px !important;" width="1" />
Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-67225313672544452272016-12-03T13:13:00.000+09:002016-12-03T13:13:08.626+09:00余った外貨をプリペイドカードにできるTravelers boxがすごい!<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-gDDgC5pTHxQ/WEJFmT1sZzI/AAAAAAAABdU/bn1KSpa43MkZKJApS88XANwHfVwhLnq9QCLcB/s1600/travelers-box-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="https://1.bp.blogspot.com/-gDDgC5pTHxQ/WEJFmT1sZzI/AAAAAAAABdU/bn1KSpa43MkZKJApS88XANwHfVwhLnq9QCLcB/s320/travelers-box-1.jpg" width="320" /></a></div>
<br />
最近空港でたまに見かけるようになった、黄色いATMのような機械。<br />
<br />
なにかなあ、と思っていたら、余った外貨をプリペイドカードに変えてくれるサービスのようです。<br />
<br />
外貨両替はお札しか受け付けないなんてところも多いですし、あまった小銭を気軽に、プリペイドカードにできるなら、ありがたいですね。<br />
<div>
<br /></div>
<a href="http://www.tbxj.jp/pc/">http://www.tbxj.jp/pc/</a><br />
<br />
日本のタンス外貨預金(旅行に使ってあまって、タンスの中にしまってあるお金など)<br />
は一兆円とも言います。<br />
<br />
僕の家にも、数万円分は各国の余りの小銭がある感じです。意外と大きな市場なんじゃないでしょうか。<br />
<br />
日本では、いまのところ、ユーロ、ドル、人民元に対応。<br />
<br />
イギリスポンドやスイスフラン、タイバーツ、ウォン、インドネシアルピアなんかに対応してくれると、さらに、ありがたいサービスになりそうです。<br />
<br />
しかし、この会社どこの会社かと思ったら本社は、スペイン南部、ジブラルタル海峡に位置するイギリス海外自治領ジブラルタル。<br />
<br />
この手の、両替系サービスどんな、資格が必要なのか知りませんが、<br />
<br />
なにかと、怪しい臭いがするなあ。。。。<br />
<br />
<div>
<br /></div>
Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-32642873616145521852016-11-29T20:32:00.000+09:002016-11-29T20:41:48.898+09:00実はまだ無料で使えるTitanium<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-reWCRFVOR-g/WD1mVLsSmZI/AAAAAAAABck/DwrvslGtjnw-NSQocpDgxxa-Ai33kPQfACLcB/s1600/%25E3%2582%25BF%25E3%2582%2599%25E3%2582%25A6%25E3%2583%25B3%25E3%2583%25AD%25E3%2583%25BC%25E3%2583%2588%25E3%2582%2599.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://2.bp.blogspot.com/-reWCRFVOR-g/WD1mVLsSmZI/AAAAAAAABck/DwrvslGtjnw-NSQocpDgxxa-Ai33kPQfACLcB/s1600/%25E3%2582%25BF%25E3%2582%2599%25E3%2582%25A6%25E3%2583%25B3%25E3%2583%25AD%25E3%2583%25BC%25E3%2583%2588%25E3%2582%2599.jpeg" /></a></div>
<br />
<br />
<br />
数年前は勢いがあったものの、2014年の有料化のアナウンス以来、最近あまり話を聞かなくなったiPhone/ Android 両対応のアプリ開発フレームワーク<a href="https://www.appcelerator.com/">Titanium</a>。<br />
<br />
現在の有料版の費用はInideだと月額39ドル Proは月額99ドル。<br />
<br />
健全な運営のためには、有料化は歓迎ですが、そのせいでライトユーザーが減って、情報が減ってしまって、フレームワーク自体がしぼんでしまうのは、諸刃の剣というか、残念なところ。<br />
<br />
<h3>
ところが!</h3>
<br />
Titainumは有料になるにはなったのですが、実はひっそりとオープンソースの無料版も並行してリリースされおり、今でも使用可能なのです。<br />
<br />
Titaniumでのアプリ開発には、コンパイルなどを行う、Titanium CLIと Titanium SDKの二つが必要です。<br />
<br />
Cliの方は、npmでインストール可能です。<br />
<br />
$ npm install -g titanium<br />
$ npm install -g alloy (alloy はtitanium用MVCフレームワーク)<br />
<br />
それに対して、Titanium SDKの方は以前は、自分でコンパイルする必要があったのですが<br />
いまでは、<a href="http://builds.appcelerator.com/#5_5_X">ここ</a>にコンパイル済みのSDKが揃っていて、気軽にインストールできます。<br />
<br />
この二つが、あれば、Eclipseなどのエディタを使って、開発が可能です(Appcelerator Ediorは有料版ユーザーのみ使用可能)<br />
<br />
PhonegapとかMonacaとかUnityとか、iPhone/Android 両対応のフレームワークは用途に合わせて、いろいろでてはいるのですが、Androidでの挙動やいくつかハマりやすいポイントをクリアすれば、Titaniumはまだまだ、有効な手段だと言えるでしょう。<br />
<br />
<br />
タイタニウムを愛する1ユーザーとしてぜひ、お試しくださいませ。<br />
<br />
ということで、日本語の情報があまり無いので記載してみました。<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<br />
<br />Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-29424555816363289032016-11-16T17:43:00.008+09:002017-06-07T16:17:13.328+09:00人工知能(Tensorflow Magenta)で作曲してみた<!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->
<br />
<div style="font-family: "Helvetica Neue";">
というわけで聴いてください。<br />
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div>
<iframe frameborder="no" height="100" scrolling="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/284525187&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&visual=true" width="50%"></iframe>
<br />
<br /></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
Google社の人工知能ライブラリ TensorFlow、それを音楽に使おうというプロジェクトの <a href="https://github.com/tensorflow/magenta">Magenta</a> が発表されていたので試してみました。<br />
<br /></div>
<div style="font-family: "helvetica neue";">
手順は以下の通りです。</div>
<div style="font-family: "helvetica neue";">
</div>
<div style="font-family: "helvetica neue";">
<ol>
<li>学習データの準備</li>
<li>特徴量抽出</li>
<li>メロディ生成 </li>
</ol>
</div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">(あらかじめ、Python, Tensorflow, Magenta, Bazelのインストールが必要です。、</span><br />
<span style="font-size: 13px;">OSX El capitanの環境で行いました。)</span></div>
<div style="font-family: "helvetica neue";">
<br /></div>
<div style="font-family: "helvetica neue";">
<h3>
<span style="font-size: small;">[学習データの準備]</span></h3>
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">まず学習用のMIDIファイルを用意します。(MIDIとは、メロディなどを記録したデータファイルです)</span><br />
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">MIDIはこの</span><a href="http://www.midiworld.com/files/142/" style="font-size: 13px;">midiworld.com</a><span style="font-size: 13px;">などから色々ダウンロード可能ですが、実際に「メロディだけ」のMIDIファイルってあまりないです。 </span></div>
<div style="font-family: "helvetica neue";">
<br /></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">ということで、ここはこまめに手動で編集しました。 </span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span><span style="font-size: 13px;">MIDIファイルを音楽編集ソフトで開き、ドラムやベースなどのメロディ楽器以外を削除、さらに繰り返しのある楽曲は、ワンコーラスのみに区切って、 </span><span style="font-size: 13px;">トリルやフェイクなどの、細かい部分は削って、正規化(という言い方がいいのかどうか?)しました。 </span></div>
<div style="font-family: "helvetica neue";">
<br /></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">使用したデータはOasisの楽曲20曲ほどです。</span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">選んだ理由は、メロディやコード進行が素直なのとデータ量が豊富なこと、ブリットポップへの愛着を込めて。</span><span style="font-size: 13px;"> </span></div>
<div style="font-family: "helvetica neue";">
<br />
<br /></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">まずは、作り上げるデータファイルの名前、と参考にするMIDIデータを入れるディレクトリを設定し、 </span></div>
<div style="font-family: "helvetica neue";">
<br /></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">SEQUENCES_TFRECORD=/tmp/notesequences.tfrecord</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">MIDI_DIRECTORY=midi</span></div>
<div style="font-family: "helvetica neue";">
<br /></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">以下のようにデータファイルを作ります。</span></div>
<div style="font-family: "helvetica neue";">
<br /></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">bazel build //magenta/scripts:convert_midi_dir_to_note_sequences</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">./bazel-bin/magenta/scripts/convert_midi_dir_to_note_sequences \</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">--midi_dir=$MIDI_DIRECTORY \</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">--output_file=$SEQUENCES_TFRECORD \</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">--recursive</span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<br /></div>
<div style="font-family: "helvetica neue";">
<br />
<span style="font-size: 13px;"></span>
<br />
<div style="color: black; font-family: "helvetica neue"; font-style: normal; font-weight: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">
<div style="margin: 0px;">
<span style="font-size: 13px;">こんな感じの表記が出れば成功です。 </span></div>
</div>
<span style="font-size: 13px;"><br /></span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">INFO: Elapsed time: 0.444s, Critical Path: 0.00s </span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">INFO:tensorflow:Converting MIDI files in 'midi/'.</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">INFO:tensorflow:Converted 20 MIDI files in 'midi/'.</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">INFO:tensorflow:Could not parse 0 MIDI files.</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">INFO:tensorflow:Wrote 20 NoteSequence protos to '/tmp/notesequences.tfrecord'</span></div>
<div style="font-size: 14px;">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<br /></div>
<div style="font-family: "helvetica neue";">
<div style="font-family: "helvetica neue";">
これで、<span style="font-size: 13px;">/tmp/notesequences.tfrecord</span></div>
<span style="font-size: 13px;"></span><br />
<div style="font-size: 14px;">
</div>
<br />
<div style="color: black; font-family: "helvetica neue"; font-style: normal; font-weight: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;">
<div style="margin: 0px;">
<span style="font-size: 13px;">というdatasetが作成されます。</span></div>
</div>
</div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<h3>
<span style="font-size: small;">[特徴量抽出] </span></h3>
</div>
<div style="font-family: "helvetica neue";">
<br /></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">「特徴量抽出」とは本来機械によって把握しずらい情報を </span><span style="font-size: 13px;">分類しやすくするために、「特徴ベクトル」に分ける作業のことを言います。</span><span style="font-size: 13px;"> </span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">この後の行程の特徴量抽出と、メロディ生成には</span></div>
<div style="font-family: "helvetica neue";">
<br /></div>
<div style="font-family: "helvetica neue";">
<ul>
<li>basic_rnnn</li>
<li>lookback_rnn</li>
<li>attention_rnn</li>
</ul>
</div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">の三種類の方法が、提案されているのですが、 </span><span style="font-size: 13px;">ここでは一番基本のbasic runnを使うことにします。 </span></div>
<div style="font-family: "helvetica neue";">
<br /></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">いくつかの環境変数を決めて、以下を実行。</span></div>
<div style="font-family: "helvetica neue";">
<br /></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">SEQUENCES_TFRECORD=/tmp/notesequences.tfrecord</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">DATASET_DIR=/tmp/basic_rnn/sequence_examples</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">TRAIN_DATA=$DATASET_DIR/training_melodies.tfrecord</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">EVAL_DATA=$DATASET_DIR/eval_melodies.tfrecord</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">EVAL_RATIO=0.10</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;"><br /></span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;"><br /></span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">bazel run //magenta/models/basic_rnn:basic_rnn_create_dataset -- \</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">--input=$SEQUENCES_TFRECORD \</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">--output_dir=$DATASET_DIR \</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">--eval_ratio=$EVAL_RATIO</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;"><br /></span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">bazel build //magenta/models/basic_rnn:basic_rnn_train</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;"><br /></span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;"><br /></span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">./bazel-bin/magenta/models/basic_rnn/basic_rnn_train \</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">--run_dir=/tmp/basic_rnn/logdir/run1 \</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">--sequence_example_file=$TRAIN_DATA \</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">--hparams='{"rnn_layer_sizes":[50]}' \</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">--num_training_steps=20000</span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">実際、この学習にはとても時間がかかります。</span><span style="font-size: 13px;">途中途中で、/tmp/basic_runn/logdirに記録されていくので、そのデータを使っても大丈夫です。</span></div>
<div style="font-family: "helvetica neue";">
<br /></div>
<div style="font-size: 14px;">
<h3 style="font-size: 14px;">
<span style="font-family: inherit; font-size: small;">[Midi作成] </span></h3>
<div style="font-size: 14px;">
<span style="font-family: inherit; font-size: small;"><br /></span></div>
さて、これでメロディ作成の準備が整いました。実際のメロディ作成の前に、最初の音を提示してやる必要があります。<br />
<span style="font-family: "helvetica neue";"><br /></span>
<span style="font-family: "helvetica neue";">どうやら、このmagentaは、最初の音を与えないと、どこからスタートしたらいいか自分では決められないようです。</span><br />
<span style="font-family: "helvetica neue";"><br /></span>
<span style="font-family: "helvetica neue";">この場合、primer.midiとシンプルな1小節のメロディを自分で作り、データとして与えてやることにしました。</span><br />
<span style="font-family: "helvetica neue";"><br /></span>
<span style="font-family: "helvetica neue";">そして、そのファイルを、以下において、</span></div>
<div style="font-family: "helvetica neue";">
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div class="p1">
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span class="s1">PRIMER_PATH=/Users/myname/magenta/pri</span><span style="font-variant-ligatures: no-common-ligatures;">mer/primer.midi</span></span></div>
<div class="p1" style="font-family: "helvetica neue";">
<span style="font-variant-ligatures: no-common-ligatures;"><br /></span></div>
<div class="p1" style="font-family: "helvetica neue";">
<span style="font-variant-ligatures: no-common-ligatures;"><br /></span></div>
<div class="p1" style="font-family: "helvetica neue";">
<span style="font-variant-ligatures: no-common-ligatures;">メロディ作成!!</span><br />
<span style="font-variant-ligatures: no-common-ligatures;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px}
span.s1 {font-variant-ligatures: no-common-ligatures}
</style>
</span></div>
<div class="p2" style="font-family: "helvetica neue";">
<span class="s1"></span></div>
</div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-size: 13px;">bazel run //magenta/models/basic_rnn:bas</span><span style="font-size: 13px;">ic_rnn_generate -- \</span></span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">--run_dir=/tmp/basic_rnn/logdir/run1 \</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">--hparams='{"rnn_layer_sizes":[50]}' \</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">--output_dir=/Users/myname/magenta/resultMidi \</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">--num_outputs=10 \</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">--num_steps=128 \</span></div>
<div style="font-size: 14px;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: 13px;">--primer_midi=$PRIMER_PATH</span></div>
<div style="font-size: 14px;">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">この例だと、128ステップ(16ビートで8小節分のメロディ)10パターンを作成します。 </span></div>
<div style="font-family: "helvetica neue";">
<br /></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">で、実際できた音源が冒頭にもあげましたが、</span><span style="font-size: 13px;">こんな感じです。 </span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">(TensorFlowの作ったメロディに伴奏をつけています) </span><br />
<span style="font-size: 13px;"><br /></span></div>
<iframe frameborder="no" height="100" scrolling="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/284525187&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&visual=true" width="50%"></iframe>
<br />
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">どうでしょう、ちょっと音楽的に感じられるでしょうか? </span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">通常音符をランダムに並べただけだと、メロディっぽくは聞こえません。 </span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">その中に「調性」を感じられると途端メロディっぽくなってきます。 </span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">Oasisの楽曲が学習データですので、途中これ、絶対Roll with it の影響だろ、と言いたくなるメロディとかが入って、 </span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span></div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;">じわじわくるかんじで、 絶妙に面白いんだけど、はたして、伝わるでしょうか。</span></div>
<div style="font-family: "helvetica neue";">
<br /></div>
<div style="font-family: "helvetica neue";">
<h3>
<span style="font-size: small;">[気づいた点。とまとめ。]</span></h3>
</div>
<div style="font-family: "helvetica neue";">
<h4>
<span style="font-size: 13px;"><br /></span></h4>
<h4>
<span style="font-size: 13px;">良い点</span></h4>
</div>
<div style="font-family: "helvetica neue";">
<ul>
<li>調性が感じられる </li>
<li>跳躍が自然 </li>
</ul>
</div>
<div style="font-family: "helvetica neue";">
<h4>
<span style="font-size: 13px;">ダメな点</span></h4>
</div>
<div style="font-family: "helvetica neue";">
<ul>
<li style="font-family: "helvetica neue";">フレーズをまとまりで捉えることができてない</li>
<li>コード進行の概念がないため、起承転結が発生しない </li>
<li>データ用意が大変 </li>
</ul>
</div>
<div style="font-family: "helvetica neue";">
<br />
正直、現時点では、人間の能力には、およびもつかないというのが実際の感想。<br />
もちろん数年後はわかりませんけれど。<br />
<br />
いや、3年後だって、はたまた来年だって。。。<br />
<br />
<br />
それに、人間がやる場合は早いフレーズと遅いフレーズを交互に入れるとか、シンコペーションを規則的にするとか、意識するしないに関わらずそういった工夫をかなりしているってことにも改めて気付かされます。</div>
<div style="font-family: "helvetica neue";">
<span style="font-size: 13px;"><br /></span>
しかし何と言ってもパワフルなのが、いのが10でも20でも、100でも1000でも一瞬で作れちゃうっていうこと、気に入らないものや失敗作はどんどん捨てていけばいいわけで、精度が上がって、100%は無理でも、10に一つは使い物になるメロディができるようになれば、有用な作曲ツールとして、存在感を現してきそうです。<br />
<br />
<br />
<span style="font-size: 13px;"><br /></span>
<br />
<div style="font-size: 14px;">
<span style="font-size: 13px;"><br /></span></div>
</div>
Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com0tag:blogger.com,1999:blog-8700283554963072832.post-13295624243183081132016-04-27T17:33:00.007+09:002016-04-27T17:33:53.915+09:00 「Superdry 極度乾燥(しなさい)」 ブランドは高級ブランド!?<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-C9JbjwwURb8/VyB4shqWsNI/AAAAAAAABVM/rhsaj0iGjlgYjtOGsUi2q_Y--VMKz18dwCLcB/s1600/superdry.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://3.bp.blogspot.com/-C9JbjwwURb8/VyB4shqWsNI/AAAAAAAABVM/rhsaj0iGjlgYjtOGsUi2q_Y--VMKz18dwCLcB/s320/superdry.jpg" width="240" /></a></div>
<br />
近年、日本でも外国人が着てたりして、見かけることが増えてきましたが。<br />
<br />
「Superdry 極度乾燥(しなさい)」 <br />
<br />
ブランド。
<br />
<br />
その怪しいロゴネームから中国かどこかのぱちもんブランドだと思いがちだけど実際にはロンドン発のブランドで割と高級だったりします。<br />
<br />
この短パンで一万円以上するのです。<br />
<br />
なんでも創業者が日本にきた時にインスパイアを受けて<br />
(何にとは言ってない、**ビールとか言い出すと商標問題になりかねないとのことで)<br />
作ったそうで。<br />
<br />Daichi Hayakawahttp://www.blogger.com/profile/18223492973597825824noreply@blogger.com1