ミュージックビデオを生成する, Web APIを利用したECMAScript 2017ライブラリです. 最新のMozilla FirefoxやGoogle Chromium, Electron 3.0.9と互換性があります. NPMパッケージとして作成されています.
このパッケージはPawoo Musicで使用されています.
サンプルレートが異なると, 異なる出力が発生します.
OfflineAudioContextがまともに対応しないことには始まらない. 早すぎたんだ…
PixiJSのshared tickerは使用していませんが, 通常だと自動的に開始し, CPU時間を消費します.
無効にするにはrequire('musicvideo-generator')を最初に実行する実行コンテキストでshared
tickerのautoStartプロパティを偽に設定してください.
musicvideo-generatorはCommonJSモジュールです.
CanvasとRgbaEmitterという2つのコンストラクタをプロパティとして持つオブジェクトをエクスポートしています.
Canvasは動画を描画するHTMLCanvasElementを作成します.
Mozilla FirefoxやGoogle Chromium, Electronで動作します.
AudioContextです. AnalyserNodeはこのAudioContextに紐付けられます.
paramsです. ただし, fpsを省略した場合requestAnimationFrameに同期します.
ライトリークの動画です. PIXI.Sprite.fromが受け付けるものと同様です.
動画はlight_leaksにある連番画像から生成してください. フレームレートは30 FPSです.
楽曲の現在再生されている時間を返すクロージャです. 単位は秒です.
省略された場合はAudiContextのcurrentTimeが用いられます.
このメソッドを呼ばない限り, 不要なオブジェクトが残り続ける可能性があります.
このメソッドを呼んだあと, Canvas のメソッドを呼び出した場合予期しない結果になるかもしれません.
描画を行うPIXI.WebGLRendererを取得するメソッドです.
第1引数に指定されたparamsを適用するメソッドです. 一部の処理は非同期で実行されます.
インスタンス生成時に無効となった効果を追加することはできません.
このメソッドはinitializeメソッドが既に実行されている場合には更新後に1フレーム描画します.
初期化するメソッドです. startメソッドの呼び出し前とシーク後に呼び出す必要があります.
一部の処理は非同期で実行されます. このメソッドは最初のフレームも同時に描画します.
描画を開始するメソッドです.
描画を停止するメソッドです.
RgbaEmitterは経過時間によらず描画を行い,
その結果を出力するNode.jsのreadable streamです. Electronで動作します.
AnalyserNodeです. サンプリングレートは小さくても22,050 Hzでなければなりません.
AudioBufferです.
paramsです.
readPixelsにformatとしてRGBA, type としてUNSIGNED_BYTEを指定して読み出したフレームを時刻順に出力します.
解像度は横720縦720ピクセル. 曲1秒あたり30フレーム出力されます. 更に,
曲が終わったあと1フレーム追加されます.
paramsは調整を必要とするパラメーターをプロパティにもつオブジェクトです.
あるプロパティの値がnull, undefined, または指定されていない場合を「省略された」とします.
解像度です. このパラメーターはchangeParamsによって変更できません.
幅です. 単位はピクセルです.
高さです. 単位はピクセルです.
FPSです.
背景色です. 表現の仕方はPixiJSと同一です. 省略した場合, 黒になります.
スプライトについて指定します. 省略した場合, スプライトは無効になります.
画像です. PIXI.Texture.fromが受け付けるものと同様です. 省略した場合,
画像は表示されません.
動きについて指定します.
circle は円周上の動きです. radで動く角度 (ラジアン), scaleで円周の大きさ,
speedで動く速さを指定します.
random はランダムな直線の動きです. scaleで動く範囲 (画素の平方),
speedで動く速さを指定します.
zoomは拡大する動きです. scaleで拡大する大きさ (1 + scale倍),
speedで動く速さを指定します.
ぼかし効果について指定します. 省略した場合, ぼかし効果は無効になります.
可視かどうかを指定します. 省略した場合, 可視となります.
動きに関わるlimitです.
明暗の変化に関わるlimitです.
パーティクルについて指定します. 省略した場合, パーティクルは無効になります.
可視かどうかを指定します. 省略した場合, 可視となります.
パーティクルの大きさなどの変化に関わるlimitです.
パーティクルの不透明度です.
パーティクルの色です. 表現の仕方はPixiJSと同一です.
ライトリークについて指定するオブジェクトです. 省略した場合, ライトリークは無効になります.
可視かどうかを指定します. 省略した場合, 可視となります.
ライトリークの不透明度です.
ライトリークの間隔です. 単位は秒です.
波長表示について指定するオブジェクトです. 省略した場合, 波長は無効になります.
可視かどうかを指定します. 省略した場合, 可視となります.
波長表示のモードです. 0は直線カラム, 1は円カラム, 2は円連続, 3は直線塗りつぶしです.
実際の動作はexample/canvasを参照してください.
波形表示の不透明度です.
波長表示の色です. 表現の仕方はPixiJSと同一です.
表示する文字について指定するオブジェクトです. 省略した場合, 文字は無効になります.
可視かどうかを指定します. 省略した場合, 可視となります.
文字列の不透明度です.
文字列の色です. 表現の仕方はPixiJSと同一です.
アルバムの題名です. 省略した場合, 題名は表示されませんが, 無効にはなりません.
アルバムの副題です. 省略した場合, 副題は表示されませんが, 無効にはなりません.
バナー画像の表示について指定します. 省略した場合, バナー画像は無効になります.
可視かどうかを指定します. 省略した場合, 可視となります.
不透明度です.
PIXI.Texture.fromが受け付けるものと同様です. 省略した場合,
画像は表示されませんが無効にはなりません.
limitは音の急激な変化を感知する際に必要なパラメーターを指定するオブジェクトです.
観察する音の周波数を指定するオブジェクトです.
[bottom, top)の範囲が観察されます. 単位はヘルツです.
しきい値です.
150くらい : めっちゃ反応する 175くらい : 良い感じに反応する 205くらい : あんまり反応しない 海苔波形向け
以下の規格に準拠しています.
defunctzombie/package-browser-field-spec: Spec document for the 'browser' field in package.json
ECMAScript® 2017 Language Specification (ECMA-262, 8th edition, June 2017)
ただし未対応の環境で大きなpolyfillが必要となるasync関数定義, ジェネレーター関数定義は無効です. また, 変換無しでバージョンが明示して指定されているElectron 1.6.11で動作する必要があります.
音楽とオープンソースソフトウェアを愛するピクシブ株式会社により,
AGPL-3.0の下での利用を許諾されています. 詳細はCOPYING (英語) を参照してください.
また, exampleには著作権者が異なるファイルが含まれます. 詳細はCOPYING_EXAMPLE (英語)
を参照してください.