/ ,' 3

https://twitter.com/gorlemkun

2019/05/17 ギター音漁り、ライブ配信、絵の停滞感、そして捗らない

あらゆるものが捗らない一日だったので英語もはかどらずに寝ます

---

ギターの音欲しいなーと思ってぽちぽちとWebの深淵に潜ってしまったけど、結局買わないことにした。まずこれをちゃんと考えるべきだったんだけど、そこまでギターの欲しい用途がない。そこまでクオリティ高い曲作れないし、弾き語りでしか使うタイミングが無い。そして、エレクトリックギターもアコースティックギターも音源持ってた。しょぼいけど。なので、弾き語りでも音源は足りてる。いらなかったね。という感想。
ギター音源のデモをちょろちょろと聞いてみたけど、自分には凄すぎてもう本物のギターじゃんこれ、という感想ばっかり出てしまう。実力もまだまだって感じっすね。曲作るにしても違いがわかるまでは有りモノの音源でがんばってみようと思う。

---

こっそりヤケクソになりライブ配信してみた。すごいこれは楽しいけど話題継続するのがとにかく難しいのと、男だとすごく不利に感じる。でも楽しかった。無限弾き語りギターマシンが完成したら、ひそひそ弾き語り配信という形で継続して使ってこうと思う。バレない形でこっそり。
しかし雑談してるとやさしい人が多くてホロリときてしまう。なんかこの感じ、過去にあったなーみたいなことを考えていたらあれだ、昔のWebだわ。黎明期の。ここにあったかあったかインターネット!!という気がした。あったかかった。そして終わった後の虚無感がすごかった。ちょっと間違えば泣けてくるレベルで感情がやばくなり生産性が全部持っていかれた。雑談配信は依存性高くて非常によろしくない。
男で不利、と書いたけどもうこの先数年でその壁も無くなりそうで、本当に恐ろしい時代が来そうでこわい。

---

絵の停滞感やばい。いつまで同じ絵をいったい描いているんだという状況。そしてまた同じ過ちをおかした。工程を書かずに手を動かしはじめてしまうという失態。まだまだ身体に染みてないっすね。要改善。

---

ねる。はかどりたい。でも疲れてるだけかもしれない。ちゃんと寝ようと思った。もう夜遅いけども。
あと毎日日記書くことを自分に課してると疲れたから寝る。という選択が取れなくなり、これは問題かもしれない。

2019/05/16 コード楽器の辞書参照アルゴリズムができた

もうむちゃくちゃ眠いので、成果だけはっつけて寝ます。あとは辞書充実させて、パッチを整理すれば完成しそう。

I feel so sleepy. I just put an outcome and go to bed. I will make the rest of dictionary files and sort out Max patch and finish maybe...

https://twitter.com/gorlemkun/status/11290863139

01088768

2019/05/15 コードを読むことについて

今日はまとめたいことがあったので日記はおやすみ

---

自分のエンジニア的な力量不足を感じていて、もっとコード読みたいし、書いてかないとなあみたいなことをぼんやり考えていたんだけど、書くのは仕事でできるとして、コードを読むということがちょっと頭打ち気味だなあと思っていた。

今までの仕事では、そこまでライブラリのコードまで深追いするということはやってこなかったし、やったとしてもよくわからないという感想だけが残るみたいな状況がよく続いていて、はてどうしたものかなあと考えていたところ、ちょっと良さげな方法が出かかっているので試そうとしている。

それがエラーや予期しない挙動に遭遇したら、その部分のコードを読む。という方法で、もしかしたら多くの人は既に実践しているのかもしれない。

この方法がいいのは、時間のかけかたのバランスの良さと、コードの追いやすさ、そしてコードを追うモチベーションの作りやすさにあると思う。

時間のかけかたのバランスの良さ。これは、とにかく内容を把握してくぞ!みたいな感じでコードを読み始めると際限なく時間を消費してしまうのに対して、普段コード書いているときにたまにエラーに遭遇して、たまにだけ深掘りして読むみたいなことができるという意味でのバランスの良さのこと。

コードの追いやすさ。これはエラーに遭遇したとき限定なんだけど、エラーメッセージで検索すると一発で該当箇所が引っかかったりするので、読みたいところにすぐたどり着きやすい状況になりやすいということ。

コードを追うモチベーションの作りやすさ。これはまあぼんやりあの部分を把握したい。みたいなぼんやりした欲求ではなくて、この入力値の場合どうしてエラーになってしまうのかというより具体的な欲求にできるので、より心が折れにくいし、より調査が効率的にできるということ。

というわけで今日はjestのエラーに引っかかったので、jestのコードを追っかけてみて、初めてだし、JS、TSの業務経験そこまで無いからほぼ無理かなあと思ってたけど、追いかけるだけならエラー箇所と、そこにたどり着くまでのコンテキストはわからないなりにも実行開始部分から大体流れを把握できたし、エラーメッセージ以外にも実際にエラーになったであろう部分、そしてそれが呼び方とどういう関係なのかも大体把握できた。あれ、すごくねこれ?

なのでこれ続けてけば結構現実的なのでは・・・?みたいな手応えはちょっと感じた。わからないとこだらけで結局具体的な原因特定までは行けなかったけど、全体感が分かったというのはでかい。これからも気づいたらコードを読んでいこうと思う。

ライブラリのコード読むのが結構めんどうではあって、いちいちgit cloneとかしてられないので、他の人はどうしているのかは気になる。githubガチガチに使ってるんだろうか。自分は今の所sourcegraphをつかっている。

これ、ちゃんとした記事にしようかと思ったけど単なる思いつきなのでもうちょい実践してみて、良さげだったらそうするかも。ひとまずはやってみます。という報告みたいな感じで残しておくことにした。

2019/05/14 かんたんギターの用の辞書ファイルを揃えてる

英語の記述ノルマが確実に日記の記述量を削ってきているけど、なんとか抗っている。

The quota of writing English reduces the amount of sentence in diary. But I resist.

---

かんたんギター用の辞書ファイルを揃えてる。ギターの弦の押さえた場所に合わせて、コードの音構成を変更するために使うやつなんだけど、拡張性と書きやすさを考慮していった結果間に挟まるファイルが増えてしまい、ぜんぶで5ファイルできてしまった。結果、その辞書ファイル用意するのがしんどいということにw

I am creating dictionary file for easy guitar. This dictionary file changes chord composition according to the place of putting guitar strings. For extensibility, this kind of file increases to 5... It makes me trouble to make these files :innocent:

5ファイルといっても、曲別に変更する必要のあるファイルは1つだけなので、苦しむのは一番最初だけで、後々楽、ということになる。そしてその1つのファイルの記述をより直感的にするために、その記法を吸収するための辞書ファイルがあるという状態になっている。

But I have to make only 1 file to prepare for playing a song. So I struggle for only the first time. I do not have to create 5 files each time. The rest of 4 files reduce labor and make the way of making 1 file easier.

特に前回のアプリ用のファイル記述していてしんどかったのが、MIDIのノートナンバーデータそのまま記述しなきゃいけないというところ。60がCみたいなぼんやりした理解はあるけど、他の音はパッと思い浮かばず、頭の中で計算が必要になるのでつらかった。今回は記述したもの単体で意味がわかるものに改善していて、音の高さを示す値はC1とかD#2とかの記述にしてるし、ギター弦のどの部分を押さえたかは1-6(ネックから1番目の6弦)、10-4(ネックから10番目の4弦)という記述にした。ギター弦をこの記述にしたのは対象デバイスのArtiphon INSTRUMENT 1のネックからの距離に番号がついていたというのが理由として大きい。これらの記述に変えたことで記述がかなり楽に・・・なったと思う。なったはず。

しかし辞書ファイルであるyamlファイルを書くのはそれはそれでしんどいもので、これがすごい事務作業じみているのでぜんぜん生産性が上がらない・・。自動生成とかしないと駄目な気もちょっとしてきた。

---

英語はねむくて中断してしまったけど、書けはじめてるっちゃ書けはじめてる

2019/05/13 英語さぼり気味、かんたんギターの基礎アルゴリズムができた

いっこうに英語を書く気にならないので、日本語->英語で日記を書いてくのをやってみる。英語で時間つかって日記が短くなったり、日記に書きたいことが漏れたりするのが嫌でなかなか英語に時間を割けなかったんだけど、書きたいことから書いてくようにすればその漏れは多少軽減できるかな・・・と思っている。

I try to write English after each Japanese sentence because I do not feel like writing english after I decided to write diary in English. If I try to write English, I thought I can not write about all topic that I want to write. So I try to write each sentence in order of high to low priority.

---

かんたんギターの基礎アルゴリズムができた。昨日は弦のつまびきと、ネックを押さえたときのミュート、そしてどの弦を押さえたか、それぞれの検知処理を実装したけど、今日はつまびいた6弦をコードの構成音に変換する部分をつくった。

まだCmajしか鳴らないけど、じゃ~んとちゃんと弾ける。前回作ったコード楽器とかなりアルゴリズムが似ていたことに気づいたので、今回は案外すんなりと実装できてしまった。

次はCmaj以外のコードを弾けるようにする部分を実装しようと思う。前回と同じくjsonの辞書を作って、そこにコードを登録する感じでいこうと思う。これもすんなりいってほしい。

I developed foundation of easy guitar application. Yesterday, I created the function of strum, mute when grabbing neck, detection the place of finger. Today, I created the function to play the chord that is only C major.

I can play C major chord like the guitar. I could develop easily because the function is similar to previous application, chord instrument.

I will develop the function to play other chord. I will use json dictionary to register other chords. I hope I can also develop it easily.

---

英語、決まった表現に頼り切ってる感はあるけど、案外かけてる。続けてこう。寝る。

2019/05/12 コード楽器公開した、かんたんギターつくりはじめた、リハーモナイズテクニック読んでる

日記を書くと慢性的に就寝時刻が3時30とかになっててあんまりよくない気がする

---

コード楽器を公開した。

リポジトリ

github.com

記事

medium.com

昨日想像してたやつは結局手をつけず、後述のかんたんギターをつくりたくなったので、制作物を失くさないために公開した。結構難航してまた3日くらい溶かすかと思ったけど、どうにかサクッと公開できてひとまずはよかった。こういう感じで後続のアプリも公開していけるといいなあ。

Maxってネイティブビルドできるらしくて、それについさっき気づいて.appファイルを上げ直した。Maxすごい。次からはちゃんとUI作り込んで公開してもいいかも。とちょっと思った。

---

かんたんギターをつくりはじめた。ギターの弦を指一本で押さえるだけであらゆるコードを押さえられるマシーンです。
Artiphon INSTRUMENT 1を魔改造して作る感じで本当にできるかわからず、今日検証してみたんだけど、どうやらいけそうな気がしている。

ちょっとマニアックすぎる話になってしまうので深入りは避けるが、INSTRUMENTの制約上、弦のタップと、弦のつまびきを区別するには、MIDIメッセージにおけるnote onとnote offを入れ替える必要があって、それが本当にできるかどうかわからなかった。
しかし今日やってみたところどうやらできるっぽいということが分かったので、多分かんたんギターもつくれそう。これができればコード譜さえ見れば無限弾き語りが可能になる状態まで持っていけるかも?はたしてどれだけかかるのか。

---

リハーモナイズテクニック50という本を読んでる。コード進行弾けるだけじゃなくて理解することもやっておきたいなと思っていて、この本がかなり良さげだった。
昔はよく理解できてなかったけど、ツーファイブ、セカンダリー・ドミナント、裏コード、借用和音あたりが理解できてくるとかなり解釈の幅が広がることに気づいた。これすごい。今までよくわからんかったコード進行が解釈可能になってきてる実感がちょっとある。
本読むだけでこんなに音楽理論解釈の幅が広がるとは思わなかったので、これはもうちょっと読み進めたいなという感じ。

---

充実した一日だった。おしまい

2019/05/11 コード楽器完成したもののうまくつかえず、コード楽器ギター版計画

ちょっと眠いので手短に

---

コード楽器は完成して、期待通りに動いてるんだけど微妙・・・。ピアノの一般的なボイシングで並べてみると音の余計な動きが気になって伴奏として聞けないレベルのクオリティになってしまった。ちょっとテコ入れが必要そう。考えられるのは2つ。

- 転回形を駆使して音の上下の動きを穏やかにする
こういう感じ。

f:id:gorlem:20190512032850p:plain

いやーでもこの方法はちゃんとした伴奏なのかどうか裏がとれてなくて、これでいいのかあんまり自信がない。ちょっとMIDIデータを漁ったりして調べてみようと思う。とりあえずの策としてはまあまあ。

- ギターのボイシングで行く
わりと簡単にできて、それなりに成果が出そう感。
弦をつまびいたとき特有の発音のずれはシミュレートしたい気もするけど、最初は妥協でもいいかも

どっちもそれなりに効きそうな気はするので、試してみたい。が、下記のやつのほうが現状欲しいので、コード楽器を現状の状態で公開だけして、下記の開発にあたっちゃうかも。

---

コード楽器のギター版をつくりたいと考えている。INSTRUMENT1というギターまがいの楽器を持っていて、それのコード弾き機能をMaxの力でもうちょっと柔軟にする計画だ。
今の機能だと、1曲あたり全部で13個のコードしかアサインできないし、アサインできるコードの種類も結構貧弱なので、それを拡張したいと思っている。

といっても、やれることはMIDI OUTを受けて出したいMIDIの信号に変換することぐらいなので、まだまだPoCが必要な状態なんだけど、行けそうな道筋は立ちつつあるので、試してみたいと思う。

なんでこんなにこっちに乗り気かと言うと、弾き語りの楽しさに目覚めてしまったのと、出せる音はギターのほうが演奏の制約上本物っぽくしやすいからという理由。いやあ弾き語りはすごい楽しいので、正直こっちを早く実現したいっす。

というわけで、個人開発物はいつ開発終了判断するかわからないので、いつでも開発終了できるようにマイルストーン置いておくことはやっぱ大事ですねとおもいました

---

owari