npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

musicvideo-generator

v1.0.0

Published

A library to turn musics into videos

Readme

musicvideo-generator

ミュージックビデオを生成する, Web APIを利用したECMAScript 2017ライブラリです. 最新のMozilla FirefoxやGoogle Chromium, Electron 1.6.11と互換性があります. NPMパッケージとして作成されています.

このパッケージはPawoo Musicで使用されています.

バグ

サンプルレートが異なると, 異なる出力が発生します.

OfflineAudioContextがまともに対応しないことには始まらない. 早すぎたんだ…

バンドリング

musicvideo-generatorは内部に画像, 動画などのJavaScript以外のファイルを含みます. バンドリングする際には注意することがあります.

https://github.com/defunctzombie/package-browser-field-spec に従ってバンドリング用のエントリーポイントを提供しています.

当該エントリーポイントではJavaScript以外のファイルへのパスのリテラルを引数としてrequire関数を呼んでいます. この関数はそれらのファイルへのURLを返す必要があります.

JavaScript以外のファイルはassetsディレクトリに置かれています.

PixiJS

PixiJSのshared tickerは使用していませんが, 通常だと自動的に開始し, CPU時間を消費します. 無効にするにはrequire('musicvideo-generator')を最初に実行する実行コンテキストでshared tickerのautoStartプロパティを偽に設定してください.

API

CommonJSモジュール

musicvideo-generatorはCommonJSモジュールです. CanvasRgbaEmitterという2つのコンストラクタをプロパティとして持つオブジェクトをエクスポートしています.

Canvas

Canvasは動画を描画するHTMLCanvasElementを作成します. Mozilla FirefoxやGoogle Chromium, Electronで動作します.

引数
第1引数

paramsです. ただし, fpsを省略した場合requestAnimationFrameに同期します.

第2引数

楽曲の現在再生されている時間です. 単位は秒です.

メソッド
getRenderer

描画を行うPIXI.WebGLRendererを取得するメソッドです.

changeParams

第1引数に指定されたparamsを適用するメソッドです. 一部の処理は非同期で実行されます. インスタンス生成時に無効となった効果を追加することはできません. このメソッドはinitializeメソッドが既に実行されている場合には更新後に1フレーム描画します.

initialize

初期化するメソッドです. startメソッドの呼び出し前とシーク後に呼び出す必要があります. 一部の処理は非同期で実行されます. このメソッドは最初のフレームも同時に描画します.

start

描画を開始するメソッドです.

stop

描画を停止するメソッドです.

RgbaEmitter

RgbaEmitterは経過時間によらず描画を行い, その結果を出力するNode.jsのreadable streamです. Electronで動作します.

プロパティ
audioAnalyserNode

AnalyserNodeです. サンプリングレートは小さくても22,050 Hzでなければなりません.

引数

第1引数

AudioBufferです.

第2引数

paramsです.

出力

readPixelsformatとしてRGBA, type としてUNSIGNED_BYTEを指定して読み出したフレームを時刻順に出力します. 解像度は横720縦720ピクセル. 曲1秒あたり30フレーム出力されます. 更に, 曲が終わったあと1フレーム追加されます.

オブジェクト

params

paramsは調整を必要とするパラメーターをプロパティにもつオブジェクトです.

あるプロパティの値がnull, undefined, または指定されていない場合を「省略された」とします.

fps

FPSです.

image

背景画像です. PIXI.Texture.fromが受け付けるものと同様です. 省略した場合, 背景は黒になります.

blur

ぼかし効果について指定します. 省略した場合, ぼかし効果は無効になります.

visible

可視かどうかを指定します. 省略した場合, 可視となります.

movement

動きに関わるlimitです.

blink

明暗の変化に関わるlimitです.

particle

パーティクルについて指定します. 省略した場合, パーティクルは無効になります.

visible

可視かどうかを指定します. 省略した場合, 可視となります.

limit

パーティクルの大きさなどの変化に関わるlimitです.

alpha

パーティクルの不透明度です.

color

パーティクルの色です. 表現の仕方はPixiJSと同一です.

lightLeaks

ライトリークについて指定するオブジェクトです. 省略した場合, ライトリークは無効になります.

visible

可視かどうかを指定します. 省略した場合, 可視となります.

alpha

ライトリークの不透明度です.

interval

ライトリークの間隔です. 単位は秒です.

spectrum

波長表示について指定するオブジェクトです. 省略した場合, 波長は無効になります.

visible

可視かどうかを指定します. 省略した場合, 可視となります.

mode

波長表示のモードです. 0は直線カラム, 1は円カラム, 2は円連続, 3は直線塗りつぶしです. 実際の動作はexample/canvasを参照してください.

alpha

波形表示の不透明度です.

color

波長表示の色です. 表現の仕方はPixiJSと同一です.

text

表示する文字について指定するオブジェクトです. 省略した場合, 文字は無効になります.

visible

可視かどうかを指定します. 省略した場合, 可視となります.

alpha

文字列の不透明度です.

color

文字列の色です.

title

アルバムの題名です. 省略した場合, 題名は表示されません.

sub

アルバムの副題です. 省略した場合, 副題は表示されません.

limit

limitは音の急激な変化を感知する際に必要なパラメーターを指定するオブジェクトです.

band

観察する音の周波数を指定するオブジェクトです. [bottom, top)の範囲が観察されます. 単位はヘルツです.

threshold

しきい値です.

150くらい : めっちゃ反応する 175くらい : 良い感じに反応する 205くらい : あんまり反応しない 海苔波形向け

規格

以下の規格に準拠しています.

defunctzombie/package-browser-field-spec: Spec document for the 'browser' field in package.json

CommonJS Modules

CommonJS Packages

ECMAScript® 2017 Language Specification (ECMA-262, 8th edition, June 2017)

ただし未対応の環境で大きなpolyfillが必要となるasync関数定義, ジェネレーター関数定義は無効です. また, 変換無しでバージョンが明示して指定されているElectron 1.6.11で動作する必要があります.

HTML Standard

Web Audio API

利用許諾

音楽とオープンソースソフトウェアを愛するピクシブ株式会社により, AGPL-3.0の下での利用を許諾されています. 詳細はCOPYING (英語) を参照してください. また, exampleには著作権者が異なるファイルが含まれます. 詳細はCOPYING_EXAMPLE (英語) を参照してください.