音楽
プログラム
音楽情報処理
音響

前書き(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