2019/05/25 コード進行スクレイピング、超AI時代ほげほげ
GASでコード進行スクレイピングしてかんたんギター用のJSONを吐くスクリプトを書いている。
不慣れなりにコード進行抽出までいけた。
コード進行抽出してる pic.twitter.com/1oYNqyI6L5
— gorlemkun (@gorlemkun) May 25, 2019
昔学んだ再帰の書き方がすごい役に立った。再帰がうまく書けたおかげかわからないけどコード進行抽出だけだったら20行くらいしか無いと思う。その規模感で抽出まで表現できちゃうGASしゅごい・・・。
GASの生産性めっちゃ高い気がした。ブラウザで開発環境完結してるから?関数単位で実行できるから?これらは確実に寄与してるんだけど決定的な理由がなにかはわからない。でもフィードバックループは本当にめっちゃくちゃ早くてすごく開発しやすい。普段でもこれくらいの状態目指したいなーと思わせてくれるくらいにはいい体験だった。
今平文でそのままべーっとコード進行が出てきちゃう状態なんだけど、これをかんたんギターに読ませるために結構やることがある。優先度で並べると
- JSON化
- Chord文字列のrootとtype分類
- 小節分類
- ギターフレットへのアサイン自動化
- 移調
- 調検知
みたいな感じになりそう。意外とやることあるなー。
---
超AI時代の生存戦略読んでる。うわこれすごい。まさしく仕事の開発のやる気が焼失しつつある自分にぴったりの本。いやーこんなの求めてました。よみます。具体的なこと何も書いてないけど、読み終えたら書くかも。人のしごとを奪ってく開発者と、しごとが完全にフレームに乗せられて幸せなUberの運転手みたいな人が居て、それらのどちらを、人生の各状況において選びますかね?みたいな問いがめっちゃおもしろし。はい。ちょっと書いちゃったけどちゃんと咀嚼してからもっかい書きます。
---
END
2019/05/24 睡眠による作業時間焼失、GASちょっとだけ、メモの魔力
やったー金曜日だー今日はめっちゃ作業できるぞーーと思いきや帰宅後就寝してしまい作業時間を全部溶かした。そして今現在起きている。とても危険な兆候なのですぐにでも寝なければならない。
---
就寝前にGASのサンプルをちょこっとだけいじった。特定のHTMLタグから値を持ってきたりできるっぽい。しかも他言語だと考えられないくらい日本語解説記事が充実している。キャッチアップにはそこまで時間かからなそう。ちょっとそうそうにコード進行取得は自動化してしまいたい。
---
メモの魔力メソッドちょっと気になって読み返した。ファクト->抽象化->転用 をノートに書いてくメソッドなんだけど、これは結構いいものだと思っている。どれが一番大事かを書こうとしたけど全部大事。著者うさんくさい感じだと思ってたけどそんなことはなかったです。
例えばファクトと抽象化がちゃんと分かれていること。なんか振り返るときにどうしても自分の感想と事実を混ぜて記載しがちなんだけど、それをきちんと分けて記載するというのがめっちゃ大事だと最近痛感している。なんか浅い振り返りになる時はファクトの記載が足りてなかったりしており、ちゃんとなにをしているかを順に書いていくといい振り返りができる。まあメモの魔力は振り返り用の本ではなくて、すべてのメモで使える思考法だけど、自分がよくやる振り返りに取り入れただけでもそこそこよくなる。
抽象化と転用も新しい発想生む上でめちゃ大事な知見なんだけど、もう眠いのでこの辺にしておく。
---
END
2019-05-23 メイドカフェ
ちょっとあそびました。今日は開発もろもろお休みです。
メイドカフェに興味本意で行った。すごい異質な空間。装飾がめっちゃサイケ。
こういうところは初めて行ったけど、ハマる人が居るのはわかる気がした。
今回行ったのはまあわりとしっかりめのところで、料理はふつうにおいしかったし、パフォーマンスもあって自然とテンションが上がってしまった。特に高速でオタ芸を披露するメイドは今でもしっかりと目に焼き付いている。
受動的に楽しんでもそれなりに楽しめたので、本当にしっかりしてたんだと思う。が、これは一人だと厳しい。今回は知っている人につれてきてもらったが、これが無いと本当に苦しかったと思うw
受動的、と書いたけど、そう、能動的な楽しみ方もあって、メイドさんと楽しく話すというのがそれである。
周りのお客さんは結構楽しそうにメイドさんと話している。店の体裁としてキャバクラ?みたいに人が必ずついてくれるわけではなくて、あくまでメイドとして料理を運んでくれる感じではあるんだけど、明らかにメイドさんがやることなくて暇してて、暇なので面白く話せる客が居ると話しこんでしまうのだ。お金をかけずにプラスαがある。これは・・・なるほど。
しかし自分にとってこれは・・・うん。難易度が高かった。
どんな難易度かというと、もはや自明だけどコミュ力の部分だと思っていて、メイドさんと話を盛り上げるのが普通に難しかった。自分のコミュ障ぶりを痛感したし、どうして周りの人はそんなになじめているんだ・・?と思わざるをえなかった。あぎゃー。
メイドさんやさしくて、がんばって話題を振ってくれたが、もう相手が何に興味もつのか、どんなこと聞けばいいのかとか全く想像つかなくて、やばい!持ち帰り検討させてくれ!ちゃんと仮説立ててくるから!!みたいな感じで脳みそがアラートあげてた。その場のフィーリングで対応するの無理な自分の弱みが大いに現出してしまった瞬間だった。
もう自ら接客業のお店に行くことは無いかもしれない。多分だけど、こういうものは自分から提供する側に立ったほうが楽しめる気がした。という学びというか気づきはあった。
END
2019/05/22 かんたんギターで1曲弾いてみた
指が・・イタイw
— gorlemkun (@gorlemkun) May 22, 2019
かんたんギターで1曲弾いてみた。自分でツールから作った補正がだいぶ入ってちょっと感動した。演奏はくっそぼろぼろw なんだかやってみると音ゲーチックな感じ。
昨日の時点ではブラインドタッチ支援の機能が必要かなーと思ったけど、ギターのコードのアサイン場所を単純な指スライドで押さえられるように変更したら見違えるほど簡単になった。簡単になったけどまだぼろぼろであることは変わらず、楽器弾けるひとどんだけすごいんだよ・・・となっている。
このアサイン場所を定義するファイル、今日書いたんだけど、はちゃめちゃに時間溶かしてやばい。やばい。今日は1時間かそれ以上くらい溶かしてくれた。不慣れなのも理由には入ると思うけど、単純に記述量が多すぎる。これは人間がやるべき作業じゃないな・・・と強く感じたし、このままだと曲数がぜんぜんスケールしてかない、1日1曲かよレベルで少ないし時間がもったいないので自動化対応をやると決めた。
自動化といってもコード進行のサイトからスクレイピングするというあれです。個人利用だからいいはず・・・?多分同じ形でコピーして再配布とかしないからいい気がする。と信じて、やる。
GASがよさそうなので、GASを使ってみようと思う。まだ予想ついてない部分が多いけど、かるーく検索した感じいけるんじゃないかという淡い期待がある。
今日はファイル用意して、演奏がんばって・・・とやれたのはそれだけだけど、動画というアウトプットが出たのでよしとしたい。
---
ねむいのでねる。END
2019/05/21 かんたんギタースタートライン、楽曲アナライズ用の記法、ピッチ検知、自分の声がきもい
当初想定していたかんたんギターとしての姿はある程度出来上がって、使えるようになった。
演奏技術がアレすぎてアレだけどなんとか定義のコード通りギターを鳴らせるようになった
— gorlemkun (@gorlemkun) May 21, 2019
なったぞ!!! pic.twitter.com/8slkxrO0W6
ノブ回しで演奏する調も変えられるようにした
— gorlemkun (@gorlemkun) May 21, 2019
地味に転調する時に便利 pic.twitter.com/YsYZ0xDmdv
従来の6本の弦をコントロールするギターに比べて、ギターの弦の1ポイントだけ押さえればよいので、ものすごく簡単にはなったんだけど、初見演奏するにはまだハードルがあることに気づいた。もうちょい!もうちょいなんだよなあ
今まで明文化してこなかった気がするので書いておくと、目指しているのは、ギターのコード譜をググって、出てきたものを初見でそれなりにコード弾きで演奏できるようになること。
その目標に照らし合わせた時に、今の状態だとまだちょっとむずい。何がむずいかというと、
- 弦にアサインしたコードを覚えるのがちょっと大変
- 演奏のために楽器のネックを見なきゃいけなくて、そうするとコード譜が見えなくなる
このあたり。
パッと思い浮かんだのはブラインドタッチできるように支援するというもの。今どこを抑えているのか?というフィードバックさえ表示するようにすればブラインドタッチいけるんじゃね?とちょっと思ったのでMaxで軽く実装してみようと思う。
---
楽器演奏と合わせて、楽曲をアナライズしていきたいと思ってるんだけど、それにはどういう可視化がいいのかをぼんやり考えていた。多分ほかの人は楽譜が流暢に読めたりするんだと思うけど、自分はそれができないし、PC上でRead/Writeの利便性を保ったまま表現するのが結構厳しい。
ピアノロールとかどうかなーとも一瞬考えたけど、実装がめんどい。一度実装したことあるけど、結構時間突っ込まないと厳しいのでこれもパスしたい。既存の高機能なものを実装しようとするのはハードルが十分に上がったものを個人規模の開発リソースで提供する必要が出てくるので個人開発の超アンチパターンだと思う。
やっぱテキスト?そういえば自分がしたいアナライズってリズムの観点ないな?もしかして音高羅列するだけでよい?とか考え始めると
C C# D D# E F G G# A A# B みたいな英語記法つかって、
CCDF
Cmaj(CEG)
こういうのとかどうだろ?案外いいんじゃねと思っている。
上段がメロディで、下段がコードとその構成音。ベースも足しやすい。楽譜やピアノロールに比べてめっちゃコンパクトになる。
記法を独自開発してしまうと、他の人にシェアできなくなるという弱みはあるけど・・・一旦自分向けということで。
---
そういう感じで、分析していきたいんだけど、メロディの耳コピめんどいなーと思ったので耳コピ支援マシンが欲しくなってきた。といってもやることは鼻歌で歌ってピッチ検知するだけなんだけど、多分Maxならすぐ出来るんじゃないかなーと淡い希望を抱いていて、調べてみると fzero~ というのが良さそう。
maxというよりmspの範疇なので慣れないのだが、まあmaxの延長線上ですぐ学べると思う。
---
かんたんギターで弾き語りができるようになったので弾き語りを試してみて、ふんふんーと歌ってたんだけど、自分の声がどんなもんかと気になってしまい録音してしまった。きもかった。というかこんなきもい声で歌ってたのか今まで。
あまりのきもさにきもくならない声の出し方を試行錯誤してしまった。すぐやって良かったのは
- 脱力して声を出す
- 裏声成分をなるべく混ぜる
- 言葉の発音をやさしくする
このへん。これだけでもだいぶ変わる。いやしかしきもい。まあーーー仕方ないなこれは。ちょっと楽しかったので今後も録音繰り返して試行錯誤していきたい。
---
END
https://twitter.com/gorlemkun/status/113084https://twitter.com/gorlemkun/status/1130842599328079877
2019/05/20 ギターコード辞書が完成、次のポーズを決めた
うだうだ言ってぜんぜん完成させられなかったギターコード辞書yamlファイルの基本セットを完成させた。ネックのどの弦を押さえても一応反応するようになったし、maj、min、dim、aug、そしてそれらの7thコードなら大体弾けるようになった。足りないものはありそうだが、足りなくなった時に足せばいいようにする予定。
I was making an excuse and I could not make yaml file of guitar chord dictionary. But I have completed making today. It makes guitar to use any part of guitar neck and play chords of maj, min, dim, aug, and 7th type of them. They maybe have a shortage of chord. But I will add it when There is a chord that I like to play.
残りは
デモ用のコード表示機能->トランスポーズ機能->テンプレート機能->曲用yamlファイル用意する->歌う
という道のりの予定。
The rest of functions are...
Showing played chords, transpose, chord dictionary template, yaml file of particular song, and I will sing after I created all of them.
なんか作業じみた作業が多いせいでよく個人開発が止まっているので、それを思考停止してこなすスキルが求められている
---
次の絵のポーズを決めた。はあ。前回の絵結局1ヶ月くらいかかってしまっていることに今気づいてとてもがっかりしてる。そして完成した時には嬉しい感情がどこにもなかった。はあ。ただ開放されたという感想だけが残った。はあ。もっと早く完成させられるようになりたい。最近絵に対してこの感情ばっかり抱いている。そして描きたいモチーフもなあ。特に無くて。どちらかというと技術をつけたいみたいな気持ちでずっといる。真似したい技術がいっぱいある。もうちょっとスピード早くなれば、なにか思いついたときにすぐ実現できるようになれば、絵描きも楽しくなってくるんだろうと思って今はひたすら手を動かす。動かす。
2019/05/19 絵の反省
絵をちょこちょこさわってるんだけど、自分の中の位置づけ的にはドラクエでスライム倒してる感覚に近くて、なんというか脳みそで何も考えずスッキリするためにただ手を動かす作業をしてたら、いつしか絵が完成していてうれしいなーみたいな、そんな感じだった。
でも最近はもうなんかずーーーーっと長い期間おんなじ絵を触っていていい加減飽きたので今日を使って無理やり完成させた。けど、えらいくらい時間を使ったのでさすがにやばいくらいやばいから改善したいと思っている。
実は脳死で出来る範囲って限られてるんだなと思い始めていて、そんな作業を脳死状態でやってしまい、それは時間かかるっしょ。みたいなことになってるんじゃないかと睨んでいる。
ざっくり分けると
- なにをどう描くのか決める作業
- 決めたものの実現のために手を動かす作業
に分けることができて、前者が頭を使う作業で、後者は脳死でひたすら手を動かす作業だと思う。
で、なにが頭を使う作業で、なにが手を動かす作業なのか、ということをよく間違える。今回は本当によく間違えた。
特に多かったミスについて書く。基本的に形を新しく作る作業、線画、影づけ、とかは、もうこれをなぞれば完成します。という段階まで明文化する(ラフに起こす)までは、脳死で出来ない作業なんだけど、なぞっても完成せず、もうひとひねり必要な状態にもかかわらず、あー脳死で描けるーと思ってただ手を動かして、あれ・・・?なんかむずいぞ?みたいになるケースがとにかくひたすらあった。
これが起こっちゃうと結構清書で線弾いたけどやっぱこれ消さないとだめだわ。みたいになり時間をとてつもなく無駄にする。清書で線引くまえに下描きをそのままなぞれる粒度で描かないといけない。というのは大きな学びだったと思う。次回はそれを強く意識しよう。
あともうひとつ。影の下描きがちゃんとできてなくて、それも厳しかった。自分の今までの絵の描き方的には影は光の角度から自明で決まるから下描きとかいらんしょ。みたいな姿勢だったんだけど、まあここ最近は影の付き方もだんだん複雑になってきていて、脳死で描ける部分とはいかなくなってきているということを手戻り、というか謎の長考が発生したことにより気づいた。これからは影も含めて下描きしような。という反省。
そして、完成した絵をみて、なんかワンパターンでしょぼい。しょぼいと感じてしまって、上記の効率化を達成しても自分の中では微妙だなこれええみたいな感想になりそうなので、もうひとジャンプ必要そうだなと思う。
- 具体的な背景、意味のあるシチュエーション
- ボケ、光的な特殊効果
あたりが無いとなあ・・とという感じ。
そしてこれらは後入れはめっちゃきつくて、最初から用意しなきゃいけないので、次の目標の一つとして加味したいところ。
END