Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fumieval/word-to-melody


https://github.com/fumieval/word-to-melody

Last synced: 23 days ago
JSON representation

Awesome Lists containing this project

README

        

=====================================================
アルファベットの列でメロディを作りたい ver1.2 - @fumieval
=====================================================

経緯
--------------------------------------------------------------------------------------------------------
http://twitter.com/#!/erutuf13/status/174405128093315073
「標準的な英単語がよい旋律になるようにアルファベットに音を対応させたい、みたいなこと考えていた」

http://twitter.com/#!/hyuki/status/174446392905961473
「@erutuf13 ペンタトニックを使えばできそう。たいていの場合にメロディになるようにして、頻出パターンのときに特にいいメロディになるように、かなあ」

これはやるしかない。

使用例
--------------------------------------------------------------------------------------------------------

wordtomelody playTimidity data/profile-default data/mapping-blues-12-0

単語の列を入力すると、生成されたメロディが鳴る(事前にTiMidityをインストールする必要がある)。

ファイルと説明
--------------------------------------------------------------------------------------------------------

wordtomelody.hs: アルファベットの列から旋律を作る(要Haskore)

Usage: wordtomelody [playWinNT|playLinux|playAlsa|playTimidity|save]

標準入力から読み込んだ文章から、一行ごとにメロディを生成する。
play* : 生成したものをすぐに再生する。
save : 生成したものをファイルに保存する。
profile: (音色, テンポ(BPM60に対する比率), 音のオフセット)が書かれたファイル。
mapping: dist-mapの結果。スケールと、アルファベットへの音の割り当てが書かれたファイル。

dist-map.hs: 順次進行の割合がなるべく一定の値になり、かつ主音で終わってその前が導音になりやすいような割り当てを求める

Usage: dist-map

標準入力から改行区切りの単語のリストを読み込み、指定されたパラメータとスケールに従って近似解を求める。
パラメータ: (個体数, 世代数, 交叉率, 突然変異率, 切り捨ての度合い)が書かれたファイル。
個体数、世代数は高いと解を求めるのに時間がかかる。少ないとよい解が得られない。
突然変異率は上げすぎると初期収束しやすくなるか、安定しなくなる。下げすぎるとよい解が出にくくなる。
切り捨ての度合いは高すぎると、「その段階で優秀な個体」が全体に広まり、初期収束の原因となる。
低すぎると、適応度の低い個体が残りやすくなりよい解が得られない。

スケール: ([音階(C,Cs,D,Ds,Df,E,Ef,F,Fs,G,Gs,Gf,A,As,Af,B,Bf)のリスト], (最も低い音, 最も高い音))が書かれたファイル。

examples/ 実際に作ったメロディ

data/ 雑多なデータ

words : 割り当ての計算に使う単語のリスト
blues-12 : ブルーススケール、12音を使う設定。
mapping-blues-12-0 : blues-12の設定で生成した、音の割り当て。
param-default : dist-mapのパラメータのデフォルト。(推奨)
profile-default : wordtomelodyのプロファイルのデフォルト。