atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
IRCAM OpenMusic 支援
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
IRCAM OpenMusic 支援
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
IRCAM OpenMusic 支援
ページ検索 メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • IRCAM OpenMusic 支援
  • 例:ランダムな音列を作る

IRCAM OpenMusic 支援

例:ランダムな音列を作る

最終更新:2013年12月27日 23:25

Bot(ページ名リンク)

- view
だれでも歓迎! 編集
Midiセントで5000~8000の音域で15音の音列を作る。以下の規則を課す。
  • 同一の音がない(オクターブを含め)
  • 四分音まで使う


公式マニュアルのパッチの問題点

http://support.ircam.fr/docs/om/om6-manual/co/LoopExample.html
  • テスト用パッチ test-octave-quartertone の設計ミス。例えば6001(ほぼC4)と6050(Cの四分音上)を与えた場合には、これらは違う音だと判定し、nilを出力しなければならないが、実際はtが出る。
  • 1刻みの乱数を発生させて後で四捨五入的に四分音を作る方式は計算に無駄が多く、さらに5000と8000(範囲の端の音)の出る確率はそれ以外の音の出る確率の半分になる(5050は5025~5074の範囲からできるのに対し、5000は5000~5024と半分の範囲しかないため)。
  • 1回1回新規でremove-dupするので、既にダブりが判明している要素にも何度も同じ計算が発生する。オクターブの削除も1刻み→四分音(50cent刻み)の変換も毎度毎度起こっている。


改善

  • 乱数を事前に50cents刻みにして、1刻み→四分音(50cent刻み)の変換をいちいち行わない。
  • テスト用パッチが正しく判定を返すように修正。modは割り算の余りを返す関数。別にom//でもおk。
  • 乱数を取ってきて、いままでcollectした中に同じ音が1つもなかったらその音をcollectする、というようなロジック。
  • findによるオクターブの削除計算もムダがあるが、工夫すれば少なくできる(例えば、car部にオクターブ削除後の値をメモっておいて使うとか→画像)。


さらに

公式のものも改善版も、集めたい要素数が集められる限界に近付くにつれ効率が悪くなる。それは次のような理由である。
例えば、C4、C#4、・・・、B4 の12音から、12コを使うランダムな音列を作るとする。
そしてomloopのループをしていく中で、C4~Bb4までの11音をcollectし終えたとする。
取ってこなければいけない最後の1音は、言うまでもなくB4である。しかし乱数はそんなことお構いなしであって、B4を出す確率は1/12であり、つまり1音集めるためだけに平均で12回(運が悪ければもっと)ループが発生する。

これを改善するには、om-randomを使うのではなく、使う音のリストを用意しておいてnth-randomで選び、選んだ数は元の集合から消すといったようなロジックが考えられる。
しかし、omloopでこれをするにはstoreオブジェクトとかslotとか、かなり込み入ったことをしなければならない。
しかも作ったところで、母集合が大きい場合や集めたい要素数が少ない場合は、前述した無駄ループのデメリットがあってなおそっちの方が性能がいい。
とりあえずlispfunctionで書いた例を載せておくが、筆者のプログラミングは怪しいのでもっといいやり方があるかもしれぬ。
(lambda (lst)
  (let ((a) (res))
    (setq lst ([[mapcar]] #'(lambda (x) ([[cons]] (mod x 1200) x)) lst))
    (loop
      (if (>= ([[length]] res) 15) (return res))
      (setq a (nth-random lst))
      (setq lst (delete (car a) lst :key 'car :test '=))
      (push (cdr a) res)))))

無限ループが発生しないというのはメリットかもしれない(公式の例&改善版は、15のかわりに25以上を入力(whileloopのとこ)すると当然ながら無限ループになる)。





タグ:

+ タグ編集
  • タグ:
タグの更新に失敗しました
エラーが発生しました。ページを更新してください。
ページを更新
「例:ランダムな音列を作る」をウィキ内検索
LINE
シェア
Tweet
添付ファイル
  • random-series0.png
  • random-series1.png
  • random-series2.png
IRCAM OpenMusic 支援
記事メニュー

メニュー

  • トップページ
    • ダウンロード
    • インストール
  • クイックスタート
    • セッションの開始
    • パッチの作成
    • ワークスペースでのパッチの操作
    • アプリケーションを作る (1)
    • アプリケーションを作る (2)
    • アプリケーションを作る (3)
    • オブジェクトの操作 (1)
    • オブジェクトの操作 (2)
    • 保存・終了
  • ユーザーマニュアル
  • 基本リファレンス
  • ライブラリリファレンス
    • Esquisse
    • LZ
    • OMAlea
    • OMChaos
    • OMClouds
    • Profile
    • RepMus
    • Situation


  • OpenMusicの歴史
  • 非公式Tutorial 概要
    • 01 note chord chord-seq
    • 02 repeat-n omloop
    • 03 random
    • 04 omif subpatch
    • 05 様々なファンクション
    • 06 バッハ平均律
    • 07 武満徹分析
    • 08 multi-seq voice poly
    • 09 ディアトニック即興
    • 10 メシアン様式即興
    • 11 文字列のファンクション
    • 12 ハイドンの名による
    • 13 リズム1
    • 14 リズム2ファーニホウ1
    • 15 リズム3ファーニホウ2
    • 16 リズム4ファーニホウ3


  • 掲示板


  • 落書き
  • 落書き20150822



ここを編集
記事メニュー2

更新履歴

取得中です。


ここを編集
人気記事ランキング
  1. Esquisse
  2. autotransp
  3. リファレンス
  4. interpol-tab
  5. 非公式Tutorial 09 ディアトニック即興
  6. pstgenerate
  7. rossler
  8. remove-rests
  9. ライブラリリファレンス
  10. as->om
もっと見る
最近更新されたページ
  • 421日前

    トップページ
  • 973日前

    ユーザーマニュアル
  • 1185日前

    非公式Tutorial 03 random
  • 1190日前

    非公式Tutorial 12 ハイドンの名によるメヌエット
  • 1191日前

    非公式Tutorial 10 メシアン様式即興
  • 1191日前

    非公式Tutorial 09 ディアトニック即興
  • 1191日前

    非公式Tutorial 08 multi-seq voice poly
  • 1191日前

    非公式Tutorial 07 武満徹分析
  • 1910日前

    非公式Tutorial 14 リズム2ファーニホウ1
  • 1978日前

    掲示板
もっと見る
人気記事ランキング
  1. Esquisse
  2. autotransp
  3. リファレンス
  4. interpol-tab
  5. 非公式Tutorial 09 ディアトニック即興
  6. pstgenerate
  7. rossler
  8. remove-rests
  9. ライブラリリファレンス
  10. as->om
もっと見る
最近更新されたページ
  • 421日前

    トップページ
  • 973日前

    ユーザーマニュアル
  • 1185日前

    非公式Tutorial 03 random
  • 1190日前

    非公式Tutorial 12 ハイドンの名によるメヌエット
  • 1191日前

    非公式Tutorial 10 メシアン様式即興
  • 1191日前

    非公式Tutorial 09 ディアトニック即興
  • 1191日前

    非公式Tutorial 08 multi-seq voice poly
  • 1191日前

    非公式Tutorial 07 武満徹分析
  • 1910日前

    非公式Tutorial 14 リズム2ファーニホウ1
  • 1978日前

    掲示板
もっと見る
ウィキ募集バナー
急上昇Wikiランキング

急上昇中のWikiランキングです。今注目を集めている話題をチェックしてみよう!

  1. Shoboid RPまとめwiki
  2. テイルズオブ用語辞典
  3. トリコ総合データベース
  4. 固めまとめWiki
  5. ストグラFV まとめ@非公式wiki
  6. イナズマイレブンGO2 クロノ・ストーン ネップウ/ライメイ 攻略wiki
  7. みんなで決めるゲーム音楽ベスト100まとめwiki
  8. グランツーリスモWiki
  9. 魔法科高校の劣等生Wiki
  10. ゆっくり虐め専用Wiki
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ゲームカタログ@Wiki ~名作からクソゲーまで~
  3. ストグラ まとめ @ウィキ
  4. 初音ミク Wiki
  5. 発車メロディーwiki
  6. 検索してはいけない言葉 @ ウィキ
  7. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  8. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  9. オレカバトル アプリ版 @ ウィキ
  10. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
もっと見る
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. MadTown GTA (Beta) まとめウィキ
  2. MADTOWNGTAまとめwiki
  3. まどドラ攻略wiki
  4. ちいぽけ攻略
  5. SurrounDead 攻略 (非公式wiki)
  6. Shoboid RPまとめwiki
  7. シュガードール情報まとめウィキ
  8. 戦国ダイナスティ攻略Wiki@ウィキ
  9. ソニックレーシング クロスワールド @ ウィキ
  10. 20XX @ ウィキ
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. angler - MADTOWNGTAまとめwiki
  2. 参加者一覧 - MADTOWNGTAまとめwiki
  3. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  4. 参加者一覧 - MadTown GTA (Beta) まとめウィキ
  5. SILENT HILL f - アニヲタWiki(仮)
  6. ギャプラン - 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  7. XVI - MADTOWNGTAまとめwiki
  8. 模擬ドラフト結果 - おんJ模擬ドラフトまとめwiki
  9. 参加者一覧 - ストグラ まとめ @ウィキ
  10. 白狐 - MADTOWNGTAまとめwiki
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.