ミュージックビデオを生成する, 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
(英語)
を参照してください.