| 先頭からのバイト数 | 型 | サイズ | 説明 |
|---|---|---|---|
| 0 | char[8] | 8 | フォーマット識別子 FREQ0003 |
| 8 | int | 4 | データ間隔(サンプル単位) デフォルトは 256 |
| 12 | double | 8 | キーの周波数 |
| 20 | 不明 | 16 | おそらく未使用 |
| 36 | int | 4 | 周波数データの数 |
| 以下の項目を周波数データの数だけ繰り返し | |||
| 40 | double | 8 | 周波数(55.0 でピッチなし) |
| 48 | double | 8 | 振幅 |
Monthly Archives: 2月 2012
UTAU 周波数表フォーマットメモ
REAPER プロジェクトファイルメモ
すっごく頑健で優しい REPEAR プロジェクトファイル!
記入しなかった項目は自動で補ってくれるみたいで、作成する側は必要なところだけ埋めれば大丈夫です。少しずつ追記します。
最小ファイル
<REAPER_PROJECT >
WAVEファイル読み込み
TRACK タグと ITEM タグが必要で、ITEM タグには POSITION と LENGTH と SOURCE WAVE が必要です。POSITION と LENGTH の単位は秒です。
1つだけWAVEファイルを読み込む
<REAPER_PROJECT
<TRACK
<ITEM
POSITION 0.00000000000000
LENGTH 2.50000000000000
<SOURCE WAVE
FILE "WAVEファイルパス"
>
>
>
>
2つのWAVEファイルを読み込む
<REAPER_PROJECT
<TRACK
<ITEM
POSITION 0.00000000000000
LENGTH 2.50000000000000
<SOURCE WAVE
FILE "WAVEファイルパス"
>
>
<ITEM
POSITION 3.00000000000000
LENGTH 2.50000000000000
<SOURCE WAVE
FILE "WAVEファイルパス"
>
>
>
>
テイクのピッチ
<REAPER_PROJECT
<TRACK
<ITEM
POSITION 0.00000000000000
LENGTH 2.50000000000000
<SOURCE WAVE
FILE "WAVEファイルパス"
>
<PITCHENV
PT 0.000000 1.596958 0
PT 1.500000 2.874525 0
PT 2.000000 0.319392 0 0 1
>
>
>
>
放課後ちょこかっぷ (café mix) + カラオケ投票
ReaScript in Python3
備忘録として ReaScript を Python3 で書く時に躓いたところをメモしておきます。
これらの動作は Reaper のバージョンによっても変わりますのでご注意下さい。
REAPER 64bit 版なら Python3 も 64bit 版を
当たり前ですが、忘れがちなので、 OS に合わせて Python3 も変更して下さい。
最初に呼び出されるファイルのエンコードはシステム既定に
ReaScript として実行するファイルは、システム既定のエンコード(日本語版 Windows だと CP932 / Shift JIS) である必要があります。通常 Python3 で使用するように UTF-8 でエンコードされたソースは、たとえ日本語がコメントに含まれる程度であっても実行できません。ファイルのエンコードは CP932 / Shift JIS を使用するか、文字の使用を ASCII の範囲内に留めておくのが安心でしょう。
ただし、自作のモジュールなど import される側には、制限がありません。ただし、import される側のファイルではエンコードの指定が必要ですので、1行目に、例えば以下のように、マジックコメントを書いておきましょう。くわしくは PEP0263 参照。
# -*- coding: utf8 -*-
自作のモジュールを import をするときに必要なこと
上記の coding 指定の他に、REAPER の関数を使用する場合には、reaper_python モジュールの import が必要です。よって、自作のモジュールは通常以下の文ではじまります。
# -*- coding: utf8 -*- from reaper_python import *
sys.argv は取得できない
おそらく REAPER の内部でスクリプトが実行されるため、 sys.argv を取得することができません。そのため、スクリプト本体の位置を取得する方法が存在しません。os.getcwd() で取得できるカレントディレクトリもスクリプトの位置ではないため、注意が必要です(ただし、スクリプト位置基準の相対指定の import は使用出来ます)。
tkinter は使用出来ない
上記の sys.argv と関連し、それを使用するモジュール、たとえば tkinter はエラーが出て使用出来ませんでした。
print() は使用出来ない
コンソールが存在しないので、代わりに RPR_ShowConsoleMsg() を使用して下さい。
quit() や exit() は使用出来ない
REAPER ごと落ちるので、使わないで下さい。
めんどくさい or 他のプログラムを活用したい or 他の言語が良い
他の人の環境で使うときにはパスの指定など、一手間かかってしまいますが、REAPER の関数を使用しない部分を、パイプなどを使用して外部に任せるのをおすすめします。たとえば以下のようにします。
import subprocess
data = subprocess.check_output([r"c:\python\python.exe", r"c:\script.py"]).decode("sjis")
こうすると script.py のなかで print() されたもの sys.stdout.write() されたものが返ってきます。たとえば、dict() に適当なものを詰め込んで repr() して返して、受け取った側で eval(data) すればばっちりです。
REAPER の関数リファレンスは?
私もよくしらないので、ヘルプのHTMLリストの ReaScript の説明を見るか、REAPER 上で以下のアクションを実行してください。
[developer] Write C++ API functions header
そこで出てきた関数名に、RPR_ を付ければ Python から使用出来ます。
REAPER 上のコマンドの実行方法は?
アクション一覧から、アクションの番号を調べて、 RPR_Main_OnCommand() を実行して下さい。
RPR_Main_OnCommand(アクション番号, 0)
日本語情報は?
ほぼないので、何かに躓いたら Twitter で私に聞いてみてください。(答えられないことの方がたぶんおおいです)
ここは何?
プログラムや音楽を作っている、「ちえ」の作った物を公開しています。例えば
- 音楽
- ささの葉さらら
- ロケット宅宙便
- ハッピーマリッジイエロー
- りんごとキャロル
- ソフトウェア・パッチ
- UTAU 全ウィンドウ同時再生プラグイン / ReaSing / poton / sfzSplit
- REAPER 日本語化パッチ
イベント情報
4月28日と29日、ニコニコ超会議内で行われる、超ボーマス20内のプチオンリー、ウタマス6に参加します!
スペースは H32 みこぺろ で二日間待ってます!リョータイもどっちかには参加予定です!
今回は和風コンセプトミニアルバム「星桜」を制作して持って行く予定です。詳しくはまたお知らせします!
カラオケ投票中です!

最近のコメント