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

IRCAM OpenMusic 支援

非公式Tutorial 05 様々なファンクション

最終更新:2013年11月18日 07:28

Bot(ページ名リンク)

- view
だれでも歓迎! 編集

非公式チュートリアル05 様々なファンクション


ここでは様々なファンクションを見て行くことにする。今回は内容としてはリファレンスマニュアルに近いものである。


以前のリファレンスマニュアル(ver. 5以前)はアルファベット順で、目的別にまとめられておらず、非常に見にくいものであった。この一覧パッチはその時に作ったものであるが、ver. 6.6.2現在のリファレンスマニュアルは目的別にある程度分かれているので随分見やすくなった。なのでこの一覧パッチもそれほど頻繁に参照するものではなくなったが、今回のチュートリアルは補足的なインデックスとして扱ってほしい。

それぞれのファンクションについて詳しく知りたい場合は、公式リファレンスマニュアルを読むことをお勧めする。ファンクションを選択してdキーを押せば、ブラウザが開きリファレンスマニュアルが開く。これはブラウザで表示されているがオンラインではなく、OpenMusicがインストールされたローカルディスク上にある。ただし一部のファンクションは対応していない。その場合もしそのファンクションがLISP由来のアイコンである場合は、LispWorksまたはさらにその母体のANSI CommonLispのリファレンスマニュアルを見てみると、いずれかで見つかる場合が多い。

まず左上から見て行こう。
first, second, third, fourth ... は、以前も述べた通り、リストの中の特定の値を返すものである。tenthまで有効である。

apply は、input 0に接続されたファンクションを割り当てるファンクションである。ここでは + が代入されているが、ファンクションやサブパッチを割り当てることも可能である。これは後にラムダファンクションを扱う時に詳しく説明する。しかしここでは、+ によってリストの全ての値が足されるという使い方を覚えておこう。

apply については以下も参照。
  • 関数を呼び出す Apply, Funcall

butlast は、リストの最後の値を切り捨てるものである。>キーでオプションを表示させ、1以外の値を入れることによって、複数の値を切り捨てることが出来る。

band-filter は、input 0に割り当てられたリストのうち、input 1に割り当てられた2重のリストの範囲内をpassまたはrejectするものである。この図ではpassでは(1 2 8 9 10)が、rejectでは(3 4 5 6 7)が返される。

first-n は、リストの値のうち最初から指定された数の値を返す。

last は、リストの値のうち最後の値だけが入ったリストを返す。しかし返される値はリストである。この場合は (10) が括弧付きで返される。また複数の括弧からなるリストが与えられた場合は、最後の値がリストであればそのまま返すが、2重括弧となる。

last-elem は、リストの値のうち最後の値がリストから取り出された状態で返す。''この場合は 10 が括弧無しで返される。また複数の括弧からなるリストが与えられた場合は、最後の値がリストであればそのまま返し、括弧は1重となる。

last-n は、リストの値のうち最後から指定された数の値を返す。

list-explode は、リストを指定された数の括弧に割り振る。ここでの出力は ((1 2 3) (4 5 6) (7 8) (9 10)) となる。

list-min は、リストの値のうち最小の値を返す。

list-max は、リストの値のうち最大の値を返す。

list-modulo は、リストを指定した数で割り振り、それぞれの括弧に一つずつ順番に値を割り振る。ここでの出力は ((1 4 7 10) (2 5 8) (3 6 9)) となる。

nth は、リストの値のうち指定された番号の値を返す。LISPは0からものを数えるので、ここでの出力は 4 となる。

nthcdr は、リストの値のうち指定された番号以降のすべての値を返す。ここでの出力は (4 5 6 7 8 9 10) となる。

nth-random は、リストの値のうちランダムの値を返す。

permut-random は、リストの値をランダムに並べ替えたリストを返す。

reverse は、リストの値を逆順に並べたものを返す。ここでの出力は (10 9 8 7 6 5 4 3 2 1) となる。

rotate は、リストの値を指定された数だけ前後に並び替えたリストを返す。>キーでオプションの2番目のインプット(input 1)を表示させることが出来る。3を指定すると (4 5 6 7 8 9 10 1 2 3) となる。負の数を指定しても良く、-3を指定すると (8 9 10 1 2 3 4 5 6 7) となる。

sort は、LISPのsort命令を返す。

sort. (語尾にドットがつく)は、リストの値を最小から最大の順に並べ替える。この語尾のドットがつかないとLISPのsort命令となり、全く違う動きをするので注意。

flat は、複数の括弧で構成されたリストの括弧を取り去り、一つの括弧にまとめる。 ((1 2 3)(4 5 6)(7 8 9)) を指定すると、出力結果は (1 2 3 4 5 6 7 8 9) となる。また、>キーでオプションの2番目のインプット(input 1)を表示させることが出来る。括弧の数を指定すると、指定した括弧の分だけを除去する。例えば3重括弧のリスト (((1 2 3)(4 5 6))(7 8 9)) でinput 1に1を指定すると、出力結果は ((1 2 3) (4 5 6) 7 8 9) となる。

mat-trans は、括弧の中の数値を順番に選択して新たな括弧に並び替える。 ((1 2 3)(4 5 6)(7 8 9)) を指定すると、出力結果は ((1 4 7) (2 5 8) (3 6 9)) となる。これは例えば常に4つの音からなる和音が出力されたとして、それを各声体と見なして水平のメロディを新たな括弧でリストに加えるという用途に応用できる。

car (カー)は、リストの中の最初の値を返す。firstと同じである。

cdr (クダー)は、リストの中の最初の値を取り除いた残りのリストを返す。

(car と cdr は、LISPの基礎に関する重要な知識である。これはLISPを扱う時に改めて説明する。)

reduce-tree は、リストに対して呼び出されたファンクションの出力結果をリストにまとめて出力する。これは apply と同じである。例えば + を呼び出せば、リストの合計値が得られる。applyは2重以上の括弧に対応しておらずエラーが出るが、 reduce-tree は複数の括弧に対しても結果を出力できる。 それに対して apply は、ラムダファンクションを扱える。

group-list は、リストを指定した番号ずつの個数の値に割り振る。 例えば (1 2 3 4) に対して (1 3) を指定すると ((1) (2 3 4)) となる。左から3番目のインプット(input 2)はオプションで、linearまたはcircularが選べる。

remove は、リストの中から指定した値と一致するものを消去する。

remove-dup は、removeと同じくリストの中から指定した値と一致するものを消去するが、複数括弧のリストも扱えること、また eq (イコール、一致)だけでなく < や > などの論理演算子も扱える。

x-append は、2つ以上のリストの値を1つの括弧に収める。

list は、与えられたリストをさらに上部の括弧で囲んだリストを出力する。

interlock は、リストの値の間に新たな値を挿入する。

numerator は、素因数が整数で割り切れる場合に実数化する。割り切れない場合は最大の実数を返す。

permutations は、リストの並び替えの可能性を全て提示する。

subs-posn は、リストの中の指定されたn番目の値を新たな値に置き換える。

create-list は、与えられた数値またはリストを繰り返してリストを作る。 repeat-n と似た動作をするが、 repeat-n はリスト作成に限らず全てのオブジェクトを複数回evaluateする目的にも使える。

mapcar は、input 0に与えられたファンクション(またはラムダファンクション)を複数回実行するのに使う。例えばこの例では、listをファンクションとして与えることにより、input 1に(2 3 2 3)を、input 2に(5 10 15 20)を与えると、その結果は &niwiki(){((2 5) (3 10) (2 15) (3 20))} となる。これはつまり、input 1のリストの最初の値の2に対してinput 2のリストの最初の値の5が作用してlistにまとめられる。input 1のリストの2番目の値の3に対してinput 2のリストの2番目の値の10が作用してlistにまとめられる。これが繰り返される。

mapcan は、mapcarと同じように与えられたファンクション(またはラムダファンクション)を複数回実行するのに使うが、mapcarがそれぞれの結果を括弧でくくった複数括弧のリストを返すのに対し、mapcanはそれぞれの結果をフラットな数値としてまとめ、最後にリスト化する。ここでの出力結果は (2 5 3 10 2 15 3 20) となる。

これに対して + をファンクションとして与えた場合、mapcarは(7 13 17 23)という出力結果を返すが、mapcanはエラーとなる。これはそれぞれの出力結果が単体の数値となり、listにはならないためである。

mapcar については、以下も参照。
  • 反復 Mapcar

x-diff は、input 0に入力されたリストのうちinput 1に無い値を返す。

x-intersect は、input 0に入力されたリストのうちinput 1にもある値を返す。

x-union は、input 0に入力されたリストとinput 1のリストのうち、双方に無い値を補完する。双方にもある値は繰り返されない。

x-xor は、input 0に入力されたリストとinput 1のリストの排他的論理和(xor)を返す。

x->dx は、入力されたリストのそれぞれの値の間の差を返す。例えば (1 -2 5 7 13) と入力すると、(-3 7 2 6) が出力される。これは-2 - 1 = -3, 5 - -2 = 7 といった具合に、次の数値との差を求めているのである。

dx->x は、input 0に入力された値を基準とし、input 1に入力されたリストを順番に足していった数値を返す。例えばinput 0に 3 、input 1 に (1 -2 5 7 13) と入力すると、出力結果は (3 4 2 7 14 27) となる。これは 3 + 1 = 4, 4 + -2 = 2, 2 + 5 = 7 といった具合に、input 0の数値を起点として、次の数値との和を求めているのである。

x->dx と dx->x は、レトログラード(和音の反転、十二音技法の反行形)やインターポレーション(和音の各音程の相対的な変更)を行うのに重要なファンクションである。公式チュートリアルの以下も参照されたい。
  • Tutorial 3
  • Tutorial 4
  • Tutorial 6

range-filter は、リスト内の値をパスまたはリジェクトする。リストの特定の部分、例えば最初と最後の両端のみ必要、逆に両端のみ切り捨てるといった使い方に応用できる。

list-filter は、リスト内の値を論理演算子で判断し、t(真)の結果を返すものをパスまたはリジェクトする。ここではinput 0にnumberp(数値であればt)が指定されているので、input 1に(1 2 3 a b (1 2))を指定し、input 2にpassを指定した場合の出力結果は(1 2 3 (1 2))となる。

table-filter は、リストが複数括弧である場合、その2番目の括弧内の指定された値に対して論理演算子で判断し、t(真)の結果を返すものをパスまたはリジェクトする。ここではinput 0にoddp(奇数であればt)が指定されており、input 1に((1 2) (3 4) (6 7))が指定され、input 2に0(リストの0番目つまり最初の値)が指定されているので、(1 2)と(3 4)はそれぞれリストの最初の値が奇数なのでこれらがパスされ、(6 7)は最初の値が奇数ではないのでリジェクトされる。よって出力結果は((1 2) (3 4))となる。

expand-list は、指定された式によってリストを作成する。(3* (2 4) |0_8|)の出力結果は、(2 4)が3回繰り返されて(2 4 2 4 2 4)となり、さらに0_8は0から8までの数値を1ずつ順番に出力するので、結果は(2 4 2 4 2 4 0 1 2 3 4 5 6 7 8)となる。

1+ は、インプットされた数値に1を足して返す。

1- は、インプットされた数値に1を引いて返す。

  1. は、input 0の数値にinput 1以降の数値を足す。複数のインプットを使うことが出来る。入力は常に数値のみを受け付ける。

同様に、 -, *, / が使用可能である。

om+ は、インプットの数を増やすことは出来ないが、リストに対してまとめて数値を足すことが出来る。input 0, input 1の両方にリストを指定することも出来るが、その場合はどちらか少ない方のリストが終了した時点で、多い方のリストの残りは切り捨てられる。

同様に、om-. om*, om/ が使用可能である。

om/ は、割り切れない数を10/3として返す。これの少数を切り捨てるのが floor と om-round である。floor は小数点以下を全て切り捨てるが、om-round は>キーでオプションを表示し、小数点の数を指定することが出来る。8を指定した場合は 3.333333 となる。

om// は、剰余つまり「あまりの出る割り算」を返す。output 0からは商を、output 1からは剰余を返す。

om^ は、乗を返す。例えば2^4は16となる。

om-abs は、絶対値を返す。これは負の数から負を取り除いたものであり、例えば-10の絶対値は10である。リストでの指定も可能である。

sin, cos, tan は、それぞれサイン、コサイン、タンジェントを返す。

sqr は、二乗を返す。(平方根はsqrt)

sqrt は、平方根を返す。(二乗はsqr)

arithm-ser は、input 0からinput 1までの数をinput 2のステップで返す。

fibo-ser は、フィボナッチ数による数列を指定された数値以内で返す。

geometric-ser は、2の乗数を指定された数値以内で返す。

prime-ser は、素数を指定された数値以内で返す。

factorize は、指定された数の素因数分解を返す。

interpolation は、指定された2つの数の間の複数の数値を返す。


ここに挙げたファンクションは、よく使われるごく一部のものである。必要に応じてリファレンスマニュアルを参照して頂きたい。


参照


非公式チュートリアル 前後

  • 非公式Tutorial 04 omif subpatch
  • 非公式Tutorial 06 バッハ平均律
  • 非公式Tutorial 概要

タグ:

+ タグ編集
  • タグ:
タグの更新に失敗しました
エラーが発生しました。ページを更新してください。
ページを更新
「非公式Tutorial 05 様々なファンクション」をウィキ内検索
LINE
シェア
Tweet
添付ファイル
  • unofficial-tutorial05-1.png
  • unofficial-tutorial05-1_.png
  • unofficial-tutorial05-2.png
  • unofficial-tutorial05-2_.png
  • unofficial-tutorial05-3.png
  • unofficial-tutorial05-3_.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日前

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

    非公式Tutorial 03 random
  • 1190日前

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

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

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

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

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

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

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

    トップページ
  • 973日前

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

    非公式Tutorial 03 random
  • 1190日前

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

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

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

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

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

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

    掲示板
もっと見る
ウィキ募集バナー
急上昇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.