前書き(preface)
20歳の頃から四十数年、プログラムは詩(poem)のように書こうを合言葉にプログラマをしてきました。
数年前には「計画者(programmer)の一日」という歌集を発行しました。
プログラムは詩(poem)だという説と対になっているのが
プログラムは音楽(music)だという説です。
料理?音楽?結局プログラミングは”何と”似ているのか
https://qiita.com/kawanakashotaro/items/34f9b168686adcfe16a6
で、なぜ詩(poem)がないのか不思議。
名古屋で四十数年間主張してきたのに、届いていない。
プログラマに音楽関係者は多い。
CPU周りの電子工作の情報源の一つが音響関係者です。
何を隠そう、私も音響から電子工作に入りました。
高校の放送部でのミキサの半田付けです。約48年前。
音響機器の製作マニュアルの作成の下働きをして、
その後、無線の勉強を始めました。
放送局に就職したかったためです。
放送局には第1級無線技術が必要で資格を取りました。
無線も音響と並ぶ、電子工作の中心の一つです。
ここでは、音楽・音響関係のQiitaの記事を集め、ありとあらゆるところで、安価に良い音響を得られるようにすることを目標にします。
その際に、ネットワーク、無線、CPU、プログラムが関係するところがあることに色々であうに違いない。
プログラムと音楽の共通点はcode
算符 と 音符
算譜 と 楽譜
算譜は算符(code)で描き、楽譜は音符(code)で描く。
楽譜は時間的順番と同時並列処理
算譜は論理的順番または論理的宣言だが、時間的順番と同時並列処理も含む。
楽譜でも算譜でも大事なことは、同期と同時並列処理。
そして、楽譜 < 算譜
全ての楽譜を算譜で表すことができる。
また、プログラムそのものを、音楽としてdebugすることも検討しています。
プログラムを音響出力して、違和感のあるところにバグがあるとか。
プログラムを音響変換して機械学習させて、バグを見つけるとか。
やると面白そうなことは山盛り。
では手始めに、音楽関係の記事から。
音楽、音源
音とFM音源の軽い紹介と今昔物語
https://qiita.com/nanase/items/a6789735a73b8da6526f
「オトアソビ(oto asobi) 2回目」概要レポート
https://qiita.com/tadfmac/items/43e1ce490f4c2ff18f5c
Chromeで動くMIDIコン作ってみた🕹
https://qiita.com/onomuta/items/663926501600f77ed898
ブラウザを誰でも簡単に扱える楽器にしてみた
https://qiita.com/comorebi_notes/items/56e41f3ddc228597450d
Flaskを用いたWebアプリケーションで音を再生する
https://qiita.com/a2kiti/items/9b4491da63230fd3fe6b
goでwindowsでmidi再生
https://qiita.com/ohisama@github/items/e8fb68fa8b311b3509dd
python
Pythonで学ぶシンセサイザー
https://qiita.com/a2kiti/items/4449d15e16c1793fd53f
Python で音楽を作って楽しもう
https://qiita.com/yura/items/e5c6e9527215e0e0524a
pythonで音声処理
https://qiita.com/nyancook/items/786cffd0b07bad8b4444
PythonでMIDIを扱うパッケージ midiとpretty_midi
https://qiita.com/marshi/items/18bf9199b1b164ec1856
pretty_midiを使って、PythonでMIDIファイルを作成する
https://qiita.com/tackey/items/d0525798bddc4516f4f9
Pythonでmp3の波形を描く
https://qiita.com/tackey/items/225fdb5f07f2033377fa
Pythonで音楽解析する"music21"
https://qiita.com/ognek/items/924ca96f0c4be4ed0e24
python3で演奏する電子オルゴール
https://qiita.com/gx3n-inue/items/d7ae2d4962c41af62fc2#_reference-25a0760e493f2f27a8a1
PythonでAM音響信号の変動強度とラフネスを検証
https://qiita.com/tmtakashi_dist/items/b76350e304ef8e33fc1a
Pythonで音響信号処理
https://qiita.com/wrist/items/5759f894303e4364ebfd
Pythonで音響信号処理(2)
https://qiita.com/wrist/items/4b404230e264c5cb571c
ruby
gem の紹介:key_change 音楽のコードを楽に転調する
https://qiita.com/gazayas/items/03050c25e993ab757b64
ruby-soxでかっこいい音楽を作ってみる
https://qiita.com/doima_/items/2cf028d5c535bac91405
C#
C#でSoundCloudライクな波形を表示する音楽プレーヤを作ってみる
https://qiita.com/siy1121/items/dd06a5e700dcf9543af7
C#で音声波形を表示する音楽プレーヤーを作る
https://qiita.com/lenna_kun/items/a0f03447bb893c9ab937
C++
C/C++でcross-platformでの音楽再生にはSDL_mixerが便利
https://qiita.com/thorikawa/items/1ea4dae30749543b6a4f
C++で使える 音響合成ライブラリ
https://qiita.com/chikashimiyama/items/34bc76e9597ea5589fbf
javascript
どんな(音楽の)コードでも翻訳できる(javascriptの)コードを書いてみた
https://qiita.com/comorebi_notes/items/c8b4dde0f6bd91666a5c
JavaScriptだけでMIDIで遊べる!最高に乱暴なWeb MIDI API利用方法
https://qiita.com/tadfmac/items/e26fdf1034ad6dad4504
PowerShellで演奏する電子オルゴール(C#コードあり)
https://qiita.com/gx3n-inue/items/8ca1d987d58235e7f434
JavaScriptでMIDIファイルを解析してみる 1
https://qiita.com/PianoScoreJP/items/2f03ae61d91db0334d45
JavaScriptでMIDIファイルを解析してみる 2
https://qiita.com/PianoScoreJP/items/71db2907b302793544e9
JavaScriptでMIDIファイルを解析してみる 3
https://qiita.com/PianoScoreJP/items/f7f2aa915c4af21df856
JavaScriptでMIDIファイルを解析してみる 4
https://qiita.com/PianoScoreJP/items/480c694f00a4f3afb28e
機械学習
Deep Learningで楽曲認識
https://qiita.com/slowsingle/items/36b6381124249d067026
TensorFlow製アート・音楽生成プロジェクト「magenta」で曲を作ってみる。
https://qiita.com/tackey/items/cd75d385ec08094dbd7f
アート・音楽生成 magentaプロジェクトの概観
https://qiita.com/tackey/items/db77ca732a52a4c68df4
グーグルMagentaの採譜プログラムと自分のプログラムを比べたら互角の勝負だったという話
https://qiita.com/kichiki/items/0325aa2e8b70416f6597
RNNを用いたコード進行自動生成
https://qiita.com/a2kiti/items/b0a500762a127b7ad69b
音楽の構成(Aメロ、サビ等)を自動で分割する。
https://qiita.com/tackey/items/ca51b7c891cf604a6527
MIDIデータでword2vecをやってみた(があまりうまくいった実感が得られなかった)
https://qiita.com/tackey/items/a24194701f9ccc4fd32b
音響処理の基礎 with CNN 〜機械学習で「太鼓の達人」の自動作譜をしてみた〜
https://qiita.com/woodyOutOfABase/items/01cc43fafe767d3edf62
DNN-CRFをChainerで作って音楽のコード進行認識
https://qiita.com/xiao_ming/items/c25642d9d095964410fd
音楽と機械学習 前処理編 MFCC ~ メル周波数ケプストラム係数
https://qiita.com/martin-d28jp-love/items/34161f2facb80edd999f
Deep U-Netで自動歌声分離
https://qiita.com/xiao_ming/items/88826e576b87141c4909
【論文読み】深層学習で複雑な音楽コードの認識をやる問題
https://qiita.com/xiao_ming/items/25a0fec55ab6f71325a8
作曲
プログラマ向けゲームBGM作曲講座
https://qiita.com/tatmos/items/5e8a1dde70318e5f1c4c
プログラマ向けゲームBGM作曲講座(ミックス編)
https://qiita.com/tatmos/items/12a860ba67ed868a2443
画像から音楽の自動生成
https://qiita.com/a2kiti/items/83db255fdb12e5ed593d
音ゲーの同期方法について考察した
https://qiita.com/nom3nan/items/b58241d35b4bc6a6acfa
MIDI
MIDI 規格 まとめ
https://qiita.com/hideaki_sago/items/90e422ef9e0737b86221
GarageBandからMIDIを出力する
https://qiita.com/nenjiru/items/6bfcd849789a6b415d45
midiの再生(ubuntu)
https://qiita.com/tukiyo3/items/99f1152f408ba6cd8217
YMF825boardをAVRマイコンでMIDI音源化する
https://qiita.com/Shigosen/items/01a7acc8b0e55ce6ec8e
nRF51でBLE MIDIをアドバタイズする
https://qiita.com/miyakeryo/items/4d26a5f3f08b60fecadb
pretty_midiでコード進行のMIDIファイル生成
https://qiita.com/a2kiti/items/c0fea6e415bf7d743e16
TouchDesignerでのMIDIのセットアップ
https://qiita.com/joe_ohara/items/25b9aedc5369e3a79f62
JAVA MIDI
[JavaFX]ソフトウェアMIDIキーボードを作ってみる 第1回
https://qiita.com/syany/items/75fab773cc8dc4275edb
[JavaFX]ソフトウェアMIDIキーボードを作ってみる 第2回 指をスライドさせて音階を変える
https://qiita.com/syany/items/26433bb9f63d3d512a80
ポケット・ミクをJava/Clojureから操作してみる
https://qiita.com/kurogelee/items/12a175866ef620f3c520
Fluentd対応MIDIキーボードを作ってみた
https://qiita.com/kazunori279/items/208e1526367426b39bbb
Raspberry PI MIDI
raspberry pi 3 でstretch その15
https://qiita.com/ohisama@github/items/ae6cada37e7e024323e4
SMF (Standard Midi Format)を解析し、MIDIインターフェースに流し込む(プロトタイプ編)
https://qiita.com/ixsiid/items/e3633bc0a594dc5fb972
Raspberry PiとMIDIインターフェースでデバイス開発をする
https://qiita.com/ixsiid/items/d126b1d6a073373c2143
RtMidiライブラリを使って、MIDIインターフェースを作成する
https://qiita.com/ixsiid/items/dfd093732d05260ed174
SMF (Standard Midi Format)を解析し、MIDIインターフェースに流し込む(プロトタイプ編)
https://qiita.com/ixsiid/items/e3633bc0a594dc5fb972
SMF (Standard Midi Format)を解析し、MIDIインターフェースに流し込む(クラス編)
https://qiita.com/ixsiid/items/0d45cbeffeacd7739bc9
Raspberry Piに外部スイッチを扱うドライバを実装する
https://qiita.com/ixsiid/items/6389e71da5cb15ff7a98
Web MIDI
Web MIDI APIを触ってみた
https://qiita.com/ShoheiOno/items/34ae96c2563586982490
Web MIDI APIを扱うためのMIDI基礎知識
https://qiita.com/okunokentaro/items/efaeb1124591e84fe9d3
WebMIDI MIDIマッピングを製作
https://qiita.com/sakai_shinichiro/items/923899384ad2ab9b97fc
Web MIDIとFeature Policy
https://qiita.com/toyoshim/items/b6756f17ad4ea6cfd598
アホみたいなWeb MIDI APIラッパーを更新してたらいろいろと気づいた
https://qiita.com/tadfmac/items/b3bd4f75654f7a07fb02
MIDI input処理テスト
https://qiita.com/ringorou/items/cfd5a108bf89fd6829c4
Web MIDI APIによるDAW → ブラウザ → DAW連携の方法
https://qiita.com/cat2151/items/507bdb4d78e4ae369d02
Web MIDIを例にChromeにAPIを追加する手順概要を追ってみる
https://qiita.com/toyoshim/items/1b02e6ec5728da1aef3f
PIC MIDI
PIC で MIDI の送受信 - 1. MIDI 送受信の回路
https://qiita.com/qtsoundlab/items/6fabef1d4317ec6a9597
PIC で MIDI の送受信 - 2. MIDI の送信
https://qiita.com/qtsoundlab/items/806db89b2039d6cf1d3e
PIC で MIDI の送受信 - 3. MIDI の受信
https://qiita.com/qtsoundlab/items/6d6e834f7f5465c99109
Arduino MIDI
Electone × MIDI × Arduino
https://qiita.com/yudai220/items/b0b3dc6a8293780d5be2
Arduino MIDI Library の使い方
https://qiita.com/yudai220/items/3bde9461f282d56d1ac2
ArduinoでMIDI Pitchbendの値を真っ正直に計算してみる
https://qiita.com/ringorou/items/f648d72ef39112ce524e
超簡単!Arduino UNOをMIDIコントローラーにしよう!
https://qiita.com/tadfmac/items/9136f47ae1eea99a4ef7
Arduino Leonardo/MicroでもMIDI使いたい。
https://qiita.com/tadfmac/items/d685dae3e46d570386c3
Arduinoを使ってWeb MIDI APIから制御可能なUSB MIDIデバイスを自作する(MIDIUSB編)
https://qiita.com/tadfmac/items/8b532134247492427a43
Arduino MIDI in Neopix control.
https://qiita.com/ShooEgg/items/e29696e7212b4927bf5a
ArduinoでUSB MIDI メモ
https://qiita.com/ttatsf/items/4e05c1aece1749db2202
Mocoを使ったArduinoのUSB-MIDI化
https://qiita.com/yasuraok/items/8ae995b7484e140b071f
ジャイロセンサーでMIDIエフェクター(Arduino利用)
https://qiita.com/imauji/items/345f7ab6ecd9b1a33dc6
追伸(post script)
電気系の学科の卒業研究の指導で、学生がmidi関係で3人ほど卒論をかかれました。
一人は家業がカラオケだそうで、midiを知っていると何かと役立つのが目的でした。
カラオケシステムにおける画面と曲のマッチング,岩田和也, 小川清, 電気関係学会東海支部連合大会, 1994年
二人は音楽活動をされていて、midiはお手の物で、こちらが色々と教えてもらったという感じです。
音楽サーチエンジン用シソーラスの設計, 高橋和史, 太田勝覚, 小川清, 電気関係学会東海支部連合大会講演論文集 1996
音楽用サーチエンジンの基本設計 ,太田勝覚, 高橋和史, 小川清 , 電気関係学会東海支部連合大会講演論文集 1996
音楽検索エンジン用シソーラスの詳細設計
太田勝覚,小川清,高橋和史, 言語処理学会第8回年次大会, 1997
http://www.anlp.jp/proceedings/annual_meeting/1997/pdf_dir/A5-4.pdf
二人にはとても感謝しています。
今は、津軽三味線の名手が、phthonで音楽関係のプログラミングをしているのを毎週reviewさせていただいています。
文書履歴(document history)
ver. 0.10 初稿 20180722