matobaの備忘録

育児しながら働くあるエンジニアの記録

テキストファイルとPythonで音楽制作がしたい

テキストファイルとPythonで音楽制作ができないかなあ、と思った。

というわけで、色々ツールを作ってる。 今回は、テキストファイルをmidiに変換するやつ作った。

この中にある。

github.com

用意するテキストファイルは、こんな感じ。csv形式。

NoteName,Velocity,Start,End
G5,100,     0,  1
E5,100,     1,  1.5
E5,100,   1.5,  2
F5,100,     2,  2.5
E5,100,   2.5,  3
D5,100,     3,  3.5
C5,100,   3.5,  4
G5,100,     4,  5
E5,100,     5,  5.5
E5,100,   5.5,  6
D5,100,     6,  7

これは、どんぐりころころの冒頭の譜面を書き起こしてる。ちなみに、どんぐりころころはパブリックドメインなので選んだ。

1行目は、G5という音を100のベロシティ(音の強さ)で、0拍目から1拍目まで鳴らす。という意味。

こんな感じでmidiファイルに変換できる。

python -m compose.midi.text_to_mid ./sample/donguri.txt ./sample/donguri.midi

それをDAWに取り込んで、鳴らすとこんな感じになる。

soundcloud.com

使ってみた感想。

  • 音符をテキストで管理できるのはいいなと思う。
    • diffが取れるし、再利用性が高い。
    • メタデータを作ってプリコンパイルするような感じで生成したい
    • なお、MusicMacroLanguage(MML)というのもあるけど、パッと見でしっくりこなかったのと、自分で拡張するのがめんどくさそうなので使ってない。
  • テキストデータのStartとEndを打つのがめんどくさい
    • 今の所、絶対時間になっているので、かなりめんどい。
    • 今、譜面でいうとどこをどういう風に表してるのかがわからん。(何小節目とか)だからタイプミスがぱっと見わからない。
    • 今の所、StartとEndを入力する形式にしてるけど、どちらかというと発音開始位置と音符の長さが重要な気がしてる。
  • DAWに貼り付けないと音を聞けないのは辛い
    • 間違ってるかどうかのプレビューがコマンドラインからサクッとやりたい。
    • コマンド一発で、簡単にプレビューしたい。
    • DAWに貼り付けるのは、ある程度、音符レベルの作編曲が定まってきて、音の質感とかを考えるときにやりたい。

気が向いたときに、作っていこうと思ってる。

vimのfiletypeの設定

vimの設定を調べてた。filetypeって設定は何だろうと思ったので、調べつつ、理解を書いていきます。

filetypeの設定って?

vimで編集しているファイルの形式を検出する機能を使うかどうか。がfiletypeの設定。

filetype - Vim日本語ドキュメント

.vimrc

filetype on
filetype off

検出する不形式

検出できるファイルのタイプは、ここに書いてある。

自分で独自のファイル不タイプを追加することもできる様子。(やったことはない)

インデントとプラグイン

インデントファイルだけ、検出する。プラグインだけ検出する。というのができるようす。

.vimrc

filetype plugin on
filetype plugin off
filetype indent on
filetype indent off 

filetype - Vim日本語ドキュメント

長く使われるソフトウェアを開発するためのUNIXという考え方

UNIXという考え方、という本を読み終えた。

面白かった。

僕は好きな本だったし、いろいろ参考になった。また読み返すと思う。

内容を書くのは、アレなので、こういう目的だとこの本が参考になると思います。という話を書きます。

続きを読む

UNIXという考え方、を読み始めた理由のメモ

UNIXという考え方、という本を読みはじめた。

飽きたら別の本を読むスタイルなので読みかけの本がたまっていく。だから、そのうちこの本も飽きる気がする。

そして、別の本を読み始めて、再びこの本を読むときがくると思う。その時のために、自分がこの本を読み始めるにあたった目的を忘れないために、ここにメモしておこうと思う。(通勤中)

続きを読む

GNU/Linuxってなに?を学んだ

前に『GNU/Linuxってなんだろう?』と思っていた。

ぼんやりと調べてたら、「フリーソフトウェアと自由な社会」と言う本に到着した。ここでは、忙しい人のために僕がその本を読んで学んだ『GNU/LinuxとLinuxの違い』の概要を説明しようと思う。というわけで、この記事を書いた。

続きを読む

aware/nativeなdatetimeと翻訳のニュアンスの話

djangoで時刻を扱おうとしました。すると、timezoneのあたりで困りました。

そして、timezoneについて調べてたら、 awareなdatetimenativeなdatetime という話がでてきました。これが何を言っているかわかりませんでした。だから調べました。

というわけで、これはなに?って部分を書きます。

続きを読む