LoginSignup
3
2

More than 5 years have passed since last update.

Opusmodusでピッチに音程を追加する方法いろいろ

Last updated at Posted at 2018-08-21

Opusmodusでなんだかんだで音程を単純にピッチに追加したいだけの時ってどうするんだっけ、ってよくなるので。

例えばこんな感じのフレーズがあったとして、

(setf original '(c4 d4 e4 f4))

この上に機械的に完全4度乗せて

'(c4f4 d4g4 e4 a4 f4bb4))

にしたいとき、

方法1

gen-chord3を使う。
Opusmodusにはgen-chord, gen-chord2, gen-chord3という史上最悪な関数の命名の関数があって、開発者を恨みつつも、今のところこれが1番短くかけそう。
使い方


(gen-chord3 original (gen-repeat (length original) '(5)))

方法2

create-chordという関数で定義した"オレオレコード"をexpand-chordという関数で展開できるらしいので、(今回の例だと)完全4度の音程をコードとして定義してしまうとゴリ押しできる。



(create-chord perfect-5th '(0 5))
(flatten 
 (mapcar 
  (lambda (tone)
   (expand-chord (list tone 'perfect-5th))
  )
  original
 )
)

方法3

chord-interval-addという名前そのままな関数あるのでそれを使う。
第一引数で足したい音程のリスト、第二引数で元のシーケンスを取るので、元のシーケンスの長さ分の音程のリストを作って渡せば良い。

(chord-interval-add
 (gen-repeat (length original) '(5))
 original
)

長さ的にはシンプルに書ける反面、2つ以上の音程を追加するとかは無理っぽいので、シンプルに単一の音程追加したい時向け。

まとめ

どの方法でも出てくるものは同じ。
Opusmodusの計算速度わりと遅いので、スピードを鑑みて使い分けよう。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2