タグ

ブックマーク / naraba.hatenablog.com (19)

  • Pythonで音楽学 - ならば

    Python向けライブラリmusic21の初歩*1。 music21は音楽学のためのライブラリで、音楽構造の抽出、変換、編集などといったことを記号操作によって行う。外部プログラムと連携して、抽出した情報の可視化もできる。 記号操作と書いたのは、MusicXMLやABCのような記譜用のマークアップ言語で書かれたファイルを入力として読み込んで、内部でも音楽要素を記号として扱って処理を実行するから。音響信号は扱えないので、WavやらMP3といった音声ファイルは読み込めない。 Pythonのインタラクティブモードであれこれ試すと楽しい。音楽学はよくわからないので*2、簡単にできる範囲で可視化したりして遊んだ。 ファイルを読み込んで楽譜を表示する。 楽譜の表示にはMuseScoreかFinale(Finale Reader)が必要。どちらのソフトも演奏機能があるので聴くこともできる。 >>> fro

    Pythonで音楽学 - ならば
    nbqx69
    nbqx69 2012/12/01
    music21は音楽学のためのライブラリで、音楽構造の抽出、変換、編集などといったことを記号操作によって行う。外部プログラムと連携して、抽出した情報の可視化もできる。
  • Unicode+ライフゲーム - ならば

    ライフゲームで更新されるビットパターンをUnicodeのコードポイントとして文字列に変換した。 wonderflで実行できる。環境によってはフォントの問題で表示できない文字があるかも。 Unicode of Life - wonderfl build flash online ビットパターンは横に並ぶ16ビットごとに切り出して、それを一文字として見る。文字セットはUnicodeの文字が連続する領域を、開始位置と終了位置のコードポイントで指定する。例えば、16ビット全部ゼロの部分は、開始位置の文字に変換される。文字セットに含まれる文字の数が256未満の場合はビットパターンが表す数に対して単純に文字数で剰余を取っている。 32ビットごとに切り出すようにして、文字セットの範囲を狭めなければ基多言語面の文字がすべて収まるためカオス極まる気がするけど、表示できない文字も多そうなので試していない。

    Unicode+ライフゲーム - ならば
    nbqx69
    nbqx69 2012/02/18
  • boidsで作る音符の群れ - ならば

    boidsのアルゴリズムに従って、音符を泳がした。 音符が線を通り過ぎたとき、その線に対応する高さの音が鳴る。 音符は全音符、二分音符、四分音符、八分音符の四種類。 wonderflで実行できる。クリックで音符を追加。 School of Musical Notes - wonderfl build flash online 単純な五線以外の形で音の線を作っても面白いかも。

    boidsで作る音符の群れ - ならば
    nbqx69
    nbqx69 2012/02/11
  • まばたきで画面キャプチャを撮る - ならば

    Webカメラに顔を映して、まばたきしたときに自動でアクティブウィンドウの画面キャプチャを撮って保存する。 左下のウィンドウに映っている目の周りの四角が青くなったときが目を瞑ったとき。 Camera Mouse Suiteというソフトと、自作のキャプチャプログラムを組み合わせている。 Camera Mouse Suite Camera Mouseは、Webカメラに映した頭の動きでマウスを操作するソフト。頭を上下左右に振ることでマウスポインタを動かして、一定時間同じ場所にマウスポインタを置けばクリックできる。このソフトの機能追加バージョンがCamera Mouse Suiteで、マウスポインタの停留時間の代わりに、まばたきでクリックする機能がある。 Blink Timeに、目を瞑っている最少時間を設定する。この時間が、生理的な(一瞬の)まばたきと、クリックのための意図的な(ある程度長い)まばた

    まばたきで画面キャプチャを撮る - ならば
    nbqx69
    nbqx69 2011/10/30
  • 音のストロボ効果 - ならば

    ストロボ効果とは、周期的な動きをある間隔でサンプリングした場合に起こる視覚現象のこと。例えば、走っている車を映した映像でホイールが逆回転しているように見えることがあるのはこの現象。 同じようなことは聴覚でも考えられる。 ただ、普通は扱う音に対してサンプリング周波数が充分に大きいので、視覚ほどはっきりと分かる形で現れることはあまり多くないのだと思う。デジタル録音で一般的なサンプリング周波数のひとつは44.1kHzだけど、この半分の周波数の音はヒトの可聴域の上限を超えたあたりである。 というわけで、あえてサンプリング周波数をかなり低くして、はっきり分かるように音のストロボ効果を起こしてみた。実世界で鳴っている音の録音ではなくて、SuperColliderで生成する音でサンプリング周波数を変えて実験。 やっていること。なお、スクリーンキャプチャ時の録音のサンプリング周波数は48kHz。 サンプリ

    音のストロボ効果 - ならば
    nbqx69
    nbqx69 2011/08/01
    おもしろい
  • ローレンツアトラクタを聴く - ならば

    SuperColliderに取り組み始めた。 できそうな範囲で遊んでみようということで、ローレンツアトラクタを使って音を鳴らす。 ついでにOSCでProcessingと連携して絵も描く。 SuperColliderのプログラム。 x座標が左右の定位に、y座標が音高に、z座標が音量に対応。 ( SynthDef(\pfm, {|pan, freq, mul| var sig; sig = Pan2.ar(SinOsc.ar(freq, 0, mul), pan) * EnvGen.kr(Env.perc(0.05, 0.1, 0.4, -8), doneAction: 2); Out.ar(0, sig); }).send(s); r = Routine({ var sigma = 10, rho = 28, beta = 8/3, dt = 0.01; var pos = [20, 1,

    ローレンツアトラクタを聴く - ならば
    nbqx69
    nbqx69 2011/06/18
    可聴化
  • ChucKでsleep sortを実装 - ならば

    sleep sortが面白い。 時間制御といえばstrongly-timedなプログラミング言語ChucK。140字以内を目指した。 sleepする時間の単位が音響信号のサンプリング間隔なので(constant factorの意味で)速い。

    ChucKでsleep sortを実装 - ならば
    nbqx69
    nbqx69 2011/05/23
  • MeCabで古文の形態素解析 - ならば

    中古和文UniDicという形態素解析辞書を使うと、MeCabで古文の形態素解析ができる。 UniDic/中古和文UniDic - 言語データベースとソフトウェア 辞書のアーカイブを適当な場所に解凍して、mecabの-dオプションでその場所を指定すれば、すぐに試せる。 $ echo "思ひつつ寝ればや人の見えつらむ夢と知りせば覚めざらましを" | mecab -d ./UniDic 思ひ 動詞,一般,*,*,文語四段-ハ行,連用形-一般,オモウ,思う,思ひ,オモイ,オモヒ,和,思ふ,オモウ,オモフ,オモウ,*,*,*,*,*,*,2,C1,* つつ 助詞,接続助詞,*,*,*,*,ツツ,つつ,つつ,ツツ,ツツ,和,つつ,ツツ,ツツ,ツツ,*,*,*,*,*,*,*,動詞%F4@1,* 寝れ 動詞,一般,*,*,文語下二段-ナ行,已然形-一般,ネル,寝る,寝れ,ヌレ,ヌレ,和,寝,ヌ,ヌ,ヌ,

    MeCabで古文の形態素解析 - ならば
    nbqx69
    nbqx69 2011/04/09
    古文をmecabで形態素解析
  • Graphvizの非レイアウト系ツールメモ - ならば

    Graphvizにはグラフをレイアウトするツールの他にもグラフを編集、変換したり、指標値を計算するツール群があることを最近知った。簡単に動作確認した範囲をメモ。使ったGraphvizのバージョンは2.20.2-8ubuntu3*1。 まず、入力用にグラフデータのサンプルinput1.dotを用意。 digraph DIRECTED { node [shape=circle] A B -> { G } C -> { C D O } E -> { F H K } F -> { E H } G -> { E } I -> { J K L } H -> { B } J -> { N } K -> { I M } L -> { N } N -> { I } } circoでレイアウトした結果input1.png。 以下、ツールのコマンド名のアルファベット順。 acyclic: 入力グラフから閉路がな

    Graphvizの非レイアウト系ツールメモ - ならば
  • 音の立ち上がり検出 - ならば

    ChucKの音響分析機能を使って何かできないか調べたところ、音の立ち上がり検出が面白そうだったのでやってみることにした。 概要 音の立ち上がり検出([英]onset detection)は、与えられた音響信号の中から、個別の音が鳴り始めた時点を見つける処理である。音楽の場合はそれぞれの音符の始まりを検出する処理で、応用としては音楽信号の情報抽出や検索、自動転写、圧縮にも使われることがあるらしく、"onset detection"で探すと結構な数の論文が見つかる。 後述する短くて良い論文を見つけたので、それを参考にしてほぼリアルタイム(オンライン)に処理するプログラムを書いた。 立ち上がりを検出したら出力用の小さなウィンドウ内部が点滅する。このウィンドウ自体はProcessingで表示していて、ChucKで検出=>OSCでProcessingに通知という仕組み。 結果 ごく単純な入力とそれに

    音の立ち上がり検出 - ならば
    nbqx69
    nbqx69 2011/03/07
    与えられた音響信号の中から、個別の音が鳴り始めた時点を見つける処理。音楽の場合はそれぞれの音符の始まりを検出する処理で、応用としては音楽信号の情報抽出や検索、自動転写、圧縮にも使われることがある
  • ヨセフスの問題と半音階 - ならば

    ヨセフスの問題の設定で、円形に並ぶn人の人にそれぞれ番号(じゃなくても一意な記号ならなんでもいい)を付けておいて、円から抜けていく順にその番号を並べた列をヨセフスの順列という。順列の末尾は最後まで残る人の番号。 昔同じようなこと書いたが、十二平均律で半音階を構成する音は下の図のようにピッチクラスに基づいて円形に並べることができる(chromatic circle)。 この円に対するヨセフスの順列をヨセフスの音列と呼ぶことにする。勝手に。 nは12で固定なので、スキップする間隔mと最初の音を決めればヨセフスの音列がひとつ決まる。たとえば、mが5で最初の音がCの場合、ヨセフスの音列は(F, A♯, D♯, A, E, C, G♯, G, B, D, F♯, C♯)となる。 ヨセフスの音列を鳴らし続けるChucKのプログラム。 mは定数として設定しておく。最初の音をランダムに選んでヨセフスの音列

    ヨセフスの問題と半音階 - ならば
  • 同期する拍手のシミュレーション - ならば

    良いコンサートや劇、スピーチの後で拍手が沸き起こるとき、聴衆をまとめる指揮者のような存在はいないので普通は拍手のテンポは人によって全然違う。でも拍手の最中に自然とテンポがほぼ統一されてリズミカルな拍手になることもあって、特に東ヨーロッパでは結構見られる現象らしい。 リズミカルな拍手がどんな感じなのか聴きたければ、意図的に引き起こされた実例をスティーヴン・ストロガッツのTEDトークの1:00あたりから体験できる。意図的なのでこれは「自然と」とは言えないけれど。 拍手だけではなく、ホタルの発光や日ごとの睡眠リズムのように、全体をまとめる存在がないのに自然に起きる同期現象はいろいろな分野で見られる。上でリンクしたTEDトークのテーマがまさに同期現象。 このような同期現象を記述するための数学的なモデルのひとつに蔵モデルというのがある。 蔵モデルを使って同期する拍手をシミュレートしてみた。 Ch

    nbqx69
    nbqx69 2010/07/26
    すごい.おもしろい.
  • 楽譜でプログラミングする言語Scorlang - ならば

    はじめに 楽譜はソースコードというエントリを書いて以来、楽譜を使ったプログラミング言語という漠然とした考えが頭の片隅にあった。ModanShogiを見ていたら頭の片隅から開放したくなったので具体化した。 楽譜プログラミング言語Scorlang(Score language)。ジャンルとしてはビジュアル難解プログラミング言語*1になる。 Scorlangのプログラムは、楽譜のように見える図形で表現される。例えば、下の図は「Hello, world!」を出力するプログラムである。 言語仕様 最初に強調しておくが、Scorlangは音響プログラミング言語ではないので、音響信号を扱ったり音を入出力するための仕様は一切ない。扱えるデータは整数のみ、出力形式はテキストのみである。 ひとつのプログラムをシートと呼ぶ。シートは原則的に、音楽の楽譜と同じく左から右、上から下に向かって処理が描かれており、実行

    楽譜でプログラミングする言語Scorlang - ならば
  • イージングによるグリッサンド - ならば

    イージング([英]easing)とはアニメーションに加速・減速の効果を付けることで、直線的ではない滑らかで自然な動きを実現するために使われる。加速・減速にはいくつか典型的なパターンがある*1。 今回はイージングを音高に適用して、グリッサンド音を作った。 静止画だけの一覧。 プログラムについて。音に関係ある部分のみ。音はいつものようにChucKで鳴らした。イージング処理自体はProcessingの外部ライブラリを使ってProcessing側で実行して、OSCで逐次ChucK側に必要な値(=音高)を渡すようにした。 音高は最後にChucKのStd.mtofで周波数に変換するまでMIDIノート番号で表現しているが、Std.mtofの引数はfloat型で整数に制限されないので*2、特に工夫しなくてもイージングが適用できる。 ChucKのプログラム。イージングの初期設定をProcessing側に送っ

    イージングによるグリッサンド - ならば
    nbqx69
    nbqx69 2010/04/05
  • BAモデルの可聴化 - ならば

    Barabási-Albertモデル(BAモデル)は、複雑ネットワークの主要な性質のひとつである「次数分布のスケールフリー性」を持つグラフを生成するアルゴリズム。 BAモデルの可視化はwonderflでやった。 ChucKを使って可聴化もやったのでここに書く。その前にBAモデルの手順について簡単に。最初に適当なノード数からなる完全グラフを用意して、次のことを所望のノード数になるまで繰り返す。 成長:一個のノードをグラフに追加する 優先的選択:追加するノードからMのエッジを既存のノードに張る。既存のノードは、その次数に比例した確率でM個独立に選択する 可聴化のデザイン。 一回の成長ごとにMのエッジを既存のノードに張るとき、M個の音を同時に鳴らす エッジを張る先のノードの次数が大きいほど音高と音量も大きくする 大きいグラフの生成過程の全体を概観するために一回の成長で鳴らす音の長さは極端に短

    BAモデルの可聴化 - ならば
    nbqx69
    nbqx69 2009/11/16
  • ChucK 1.2.1.3リリース - ならば

    ChucKの最新版1.2.1.3がリリースされた。 最も大きな変更点は、念願のファイル入出力が(実験的に)サポートされたことだ。まだマニュアル化されていないので詳細はよく分からないけど、ファイル入出力用のクラスと、それから言語仕様も追加されている。ChucK演算子(=>)がまたオーバーロードされた。さらに逆向きのChucK演算子(<=)も加わった。UnChucK演算子(=<)もあるし、比較演算の以下(<=)もあるし、なかなかカオスな感じ。 examples/io/以下にファイル入出力のサンプルプログラムが用意されている。例えば、整数がいくつか書き込まれたファイルから読み込んで標準エラー出力に整数を一行ずつ出力するプログラムread-int.ckは次のようになっている。 // default file "int.txt" => string filename; // look at comm

    ChucK 1.2.1.3リリース - ならば
    nbqx69
    nbqx69 2009/10/05
  • 竹内関数 - ならば

    竹内関数を使って音の列を作る試み。単純に引数xを音高の制御に、yとzを時間の制御に使った。 10::ms => dur T; 100 => int F; PercFlut s => JCRev r => dac; .3 => s.gain; .1 => r.mix; fun int tak(int x, int y, int z) { x*F => s.freq; 1 => s.noteOn; y*T => now; 1 => s.noteOff; z*T => now; if (x <= y) return y; return tak(tak(x-1, y, z), tak(y-1, z, x), tak(z-1, x, y)); } tak(10, 9, 5); 録音したもの。 これは可聴化というよりはサウンドアートな方向か。

    nbqx69
    nbqx69 2009/05/10
  • 最新版 - ならば

    ChucKのバージョン1.2.1.2がリリースされた。変更点は、動的配列の追加の他、いくつかの修正と機能拡張。詳しくは、リリースノート。 注意点:今回の修正でdacの出力の大きさが今までの倍になる。 - (fixed) dac amplitude no longer halved! NOTE: this increases the gain from before by a factor of 2, or roughly 6 dB!! BEWARE!! 今回のリリースを受けたminiAudicleとThe Audicleの最新版は現在準備中らしい。 ところで、ChucKとminiAudicleのリリースノートを眺めてて気付いたんだが、去年の10月26日にわざわざ太字でウソを書いていた。今さらにもほどがある訂正。 でもminiAudicleの最新バージョン(0.1.3.8)に含まれているCh

    最新版 - ならば
    nbqx69
    nbqx69 2008/07/22
    chuck最新版
  • ワウワウ - ならば

    音色を周期的に変化させて文字通り「わうわう」という感じにするのをワウワウ(ワウ効果とも)という。なんて安直なネーミング…。この効果はフィルタの設定周波数をLFOで変調すると得られる。 SawOsc s => BPF f => dac; SinOsc lfo => blackhole; 2 => f.Q; // レゾナンスの強さを変えると音色も変わる 5 => lfo.freq; 200 => lfo.gain; fun void chcenterfreq() { while(ms => now) lfo.last() + s.freq() => f.freq; // キーフォローのつもり } spork ~ chcenterfreq(); [60, 62, 64, 67, 69] @=> int scale[]; // 四七抜き音階 while(true) { scale[Std.rand

    ワウワウ - ならば
  • 1