NeoWaves は大量の音声ファイルを素早く一覧表示し、即試聴・編集できる軽量オーディオリストエディタです。UI は eframe/egui、オーディオ出力は cpal を使用しています。
対応フォーマット(デコード):
AAC UNSUPPORTED と表示し、
映像は無音タイムラインで再生・シークできる。AAC の書き出しは全環境で非対応対応フォーマット(エンコード / 書き出し):
フォーマットごとのメタ情報(loop marker / marker / BPM / artwork など)の対応状況は docs/FORMAT_SUPPORT.md を参照してください。
NeoWaves は「加工済み音は offline render、未加工の pristine WAV は即再生を優先」という hybrid 方針です。
Speed モードかつ dirty state / preview overlay / SR override / bit-depth override / per-file gain が無い場合だけ、exact-stream transport を許可します。source_sr / out_sr に基づく rate 補正と master output volume のみです。ソース ch 数が出力 ch 数を超える場合のチャンネル折り畳み(余剰 ch の平均)と、エディタのチャンネル mute/solo(寄与 ch の選択。フォールドダウンは可聴 ch のみを平均)はマッピングであり DSP には含めません。.nwsess はダブルクリック/ドラッグ&ドロップ対応.nwsess を共有フォルダに置き、複数人・複数プロセス(GUI 2 台、GUI と --cli
バッチ)で扱えます。ロックは取りません。代わりに保存時に競合を検知します。
Save As... / Overwrite / Reload / Cancel を選べます。
中止した時点では何も書かれておらず、手元の編集も失われません。<name>.nwsess.bak に残します。⟳ changed on disk を出し、
誰がいつ保存したかを表示します。再読込は手動です(自動再読込は未保存の編集を
捨ててしまうため行いません)。File > Reload Session from Disk...。--force(この場合も .bak を残します)。Z:\Proj と
\\server\share\Proj のようにマウントの仕方が人によって違っても解決できます。display_name= で設定できます(未設定なら OS のユーザー名)。詳細は docs/NWPROJ_PLAN.md の「Shared sessions」を参照してください。
共有フォルダの .nwsess に、誰がどの音のどこに何を言ったかを残せます。
File > Comments...(Ctrl+Shift+M)。
🔗 Reference メニュー(今のファイル / 再生位置 / 選択範囲)、@ で始めて
ファイル名を打つ、Alt を押しながらリスト行をドラッグ、ウィンドウへの
ファイルドロップ、の 4 通り。素のドラッグは従来どおり DAW への配置です。**太字** *斜体* `code` - 箇条書き > 引用 など最小限の
Markdown が使えます。⧉ でコメントだけを独立した OS ウィンドウに切り出せます。
別モニタに置いたまま波形を操作できます。💬 N new と出ます。既読は
自分の PC にだけ記録されるので、共有ファイルは汚れません。display_name=)。同じユーザ名の
人が複数いるときだけマシン名が併記されます。保存で困りません。 コメントの投稿はセッション全体の保存とは別扱いで、
⟳ changed on disk は出ませんし、あなたの Ctrl+S も
邪魔されません。詳細は docs/COMMENTS_SPEC.md。
他人が wav を差し替えても .nwsess は 1 バイトも変わらないので、上の競合検知では
気付けません。自分が前回このセッションを開いた時点の状態を覚えておき、次に
開いたときに差分を知らせます。
stat して (サイズ, 更新時刻) を比べ、
食い違ったファイルだけ内容ハッシュを取ります。10 万ファイルのリストでも
コストは実際に変わった件数に比例します。⚠ N source files changed を行動するまで
残します。クリックで一覧(ファイル / 種別 / サイズ / 検知時刻)。
File > Changed Since Last Open... からも開けます。再読込は手動です。記録は共有ファイルではなく個人のローカル(%LOCALAPPDATA%\NeoWaves\cache\)に
置きます。セッション内に持たせると開くたびに全員が書き手になってしまうためです。
保存が既存のドキュメントを置き換えるたび、置き換えられた版を個人ローカルに
残します(1 セッションあたり 20 世代)。File > Session History... で revision /
保存者 / 保存時刻 / サイズが並びます。
個人ローカルなので他人の保存は自分の履歴には入りません。共有側の保険は従来どおり
<name>.nwsess.bak の 1 世代です。

詳細な操作は
docs/CONTROLS.mdを参照してください。
git submodule update --init --recursive
cargo build
ビルド後の実行ファイル:
.\target\debug\neowaves.exe.\target\release\neowaves.exestable-x86_64-pc-windows-msvc)このリポジトリには .cargo/config.toml で -Ctarget-feature=-crt-static を固定しています。
環境変数 RUSTFLAGS で +crt-static を上書きするとリンクエラーになります。
MD_DynamicRelease と MT_StaticRelease の不一致が出る場合は以下を確認してください。
echo %RUSTFLAGS%(PowerShell は $env:RUSTFLAGS)で +crt-static が入っていないことcargo cleancargo build --releasesignalsmith-stretch は git submodule として管理しています。
初回 clone 後は git submodule update --init --recursive を実行してください。
.\commands\build_installer.ps1
出力:
installer\\out\\installer_<buildid>\\NeoWaves-Setup-<version>-<buildid>.exe補足:
choco install nsis(または公式インストーラー)で makensis.exe を入れてください。見つからない場合は -MakensisPath で明示できます。installer\\NeoWaves.nsi です。Windows版makensis.exeで検証してください。通常起動は GUI です。
neowaves.exe
neowaves.exe --open-folder "C:\\path\\to\\wav" --open-first
headless CLI は --cli で入ります。stdout は JSON、画像系は PNG を保存して絶対パスを返します。
neowaves.exe --cli --help
neowaves.exe --cli list query --folder "C:\\path\\to\\wav"
neowaves.exe --cli batch loudness plan --session ".\\work.nwsess" --query "_BGM" --target-lufs -24
neowaves.exe --cli item inspect --input ".\\debug\\gui_test_440.wav"
neowaves.exe --cli render waveform --input ".\\debug\\gui_test_440.wav" --output ".\\debug\\cli-renders\\wave.png"
neowaves.exe --cli effect-graph list
repo 内から直接使う場合:
.\target\release\neowaves.exe --cli --help
CLI の仕様書:
docs/CLI_MASTER_PLAN.mddocs/CLI_COMMAND_REFERENCE.mddocs/CLI_MIGRATION_MATRIX.mddocs/CLI_HELP_SPEC.mdrepo には NeoWaves CLI を LLM と人間の両方で扱いやすくする repo-local skill を .agents/skills/ 配下に同梱しています。
cli-session-workflowbatch-loudnesseffect-graph-authoringloop-authoringlist-query-reviewexternal-merge-reviewtranscript-batch-generatemusic-analysis-markersplugin-draft-previewrender-editor-reviewverify-loop-tagseffect-graph-testplugin-search-pathsこれらの skill も neowaves.exe 前提で書かれており、詳細な command surface は docs/CLI_COMMAND_REFERENCE.md と docs/CLI_AGENT_WORKFLOWS.md を参照します。
全ドキュメント一覧:
docs/INDEX.mdNeoWaves is released under the MIT License. See LICENSE for details.
If this software was useful to you, you have the right to buy the author a drink.
src/main.rs はネイティブ起動の入口だけを持ち、CLI 引数解析は src/cli.rs に分離しています。src/app.rs は app state / trait shell を持ち、起動時構築は src/app/app_init.rs、フレーム進行は src/app/frame_ops.rs、タブ起動は src/app/tab_ops.rs、editor decode orchestration は src/app/editor_decode_ops.rs に委譲しています。src/app/ui/topbar/ 配下の menus.rs / transport.rs / status.rs に分割されています。src/app/ui/list.rs を orchestration に寄せ、フォーカス/キーボード制御とテーブル定義を src/app/ui/list/navigation.rs / src/app/ui/list/table.rs へ切り出しています。src/app/ui/editor.rs、src/app/ui/effect_graph.rs、src/app/effect_graph_ops.rs です。局所性の高い backend 系は巨大関数を先に削りつつ段階分割します。アプリ内の Help → Licenses... に、依存している全 657 コンポーネントのライセンス全文と、
商用配布時に別途対応が要る項目の一覧を表示します。表示データは
assets/licenses/third_party.json にコミット済みのスナップショットで、ビルド時に
include_str! で埋め込まれます(ビルド時・実行時ともネットワーク不要)。
依存を追加・更新したら再生成してコミットしてください:
git submodule update --init --recursive # 初回のみ
cargo install cargo-about --locked --features cli
pwsh ./commands/generate_licenses.ps1
cargo-about は about.toml の accepted に無いライセンスを見つけると失敗します。
GPL 依存が紛れ込んだらリリースではなくここで止まる、という設計です。
assets/licenses/extra.json に手書きで管理します。
-sys crate が同梱ビルドする C/C++ ソース、インストーラが配る DLL、フォント、
埋め込みデータ、実行時ダウンロードするモデル、Steinberg VST 3 の扱いなど。signalsmith-stretch は submodule で取り込み、上流ライセンスをそのまま保持しています。
vendor/signalsmith-stretch/LICENSE.mdvendor/signalsmith-stretch/signalsmith-stretch/LICENSE.txtNeoWaves 本体のソースは MIT です。MP3 書き出しに使う LAME 3.100 は
libmp3lame.dll として分離し、利用者が ABI 互換版へ差し替えられる動的リンク構成です。
最新の構成と全文ライセンスは Help → Licenses と、インストール先の
THIRD_PARTY_NOTICES.txt に表示されます。
| ビルド | 構成 | ライセンス上の位置づけ |
|---|---|---|
既定 (cargo build --release) | MP3 書き出し・VST3・CLAP あり、AAC コーデック/OpenH264 の同梱なし | MIT アプリ+動的 LGPL LAME。MPL-2.0 依存あり |
| LAME なし | --no-default-features --features glow,plugin_native_vst3,plugin_native_clap | MP3 書き出しなし。MPL-2.0 依存は残る |
| 映像プレビュー込み | --features video | 上記+自前ビルド OpenH264(下記注意) |
強い copyleft の GPL/AGPL アプリ依存は採用していません。 LGPL と MPL は 商用利用できますが、通知・差し替え・変更ファイル公開など、それぞれの条件は残ります。
| 対象 | 解消方法 |
|---|---|
| Steinberg VST 3 | VST 3.8 (2025-10-29) で SDK が MIT に再ライセンスされ、旧来の GPLv3/proprietary 二択が消滅。vst3 crate も Steinberg のソースを同梱していない。残るのは商標表記のみ(VST is a registered trademark of Steinberg Media Technologies GmbH) |
| Cisco OpenH264 | video を既定 feature から除外。Cisco の特許料肩代わりは Cisco 配布バイナリ限定で、ソースからビルドすると義務が配布者に移るため。リリースする Windows インストーラでは Media Foundation が映像を担うので機能的損失はない。--features video でビルドしたバイナリを再配布する場合は AVC の義務が自分に来る点に注意 |
| AAC | FDK AAC 依存と Symphonia AAC decoder は依存グラフに入れない(feature でも入らない)。デコードは同梱せず OS のデコーダーを借りる方式にした。Windows では Media Foundation が AAC 音声を再生し、コーデックは OS の一部なので再配布物には含まれない(映像の H.264 / HEVC と同じ扱い)。OS デコーダーが無い環境では AAC UNSUPPORTED と表示し、映像は無音タイムラインで再生・シーク可能。AAC の書き出しは借りられるエンコーダーが無いため引き続き非対応 |
| LAME (MP3 書き出し) | mp3_lame feature は既定 ON。LAME を libmp3lame.dll として同梱し、EXE は import table 経由で動的リンク。LAME 3.100 同梱原文の LGPL-2.0 §6(b) に沿う共有ライブラリ構成。正確な 3.100 ソースは vendor/lame-3.100 に固定 |
| インストーラー生成ツール | Inno Setup は配布物に同梱されないビルド専用ツールだが、公式が全商用ユーザーに商用ライセンス購入を要請しており、未購入のビルドは「非商用/テスト専用」扱いだった。zlib/libpng ライセンスで商用利用を無償許諾する NSIS へ置き換え、購入要請そのものを解消。LZMA モジュールの CPL-1.0 には作者によるリンク例外があるため生成物に義務は及ばない |
よくある誤解ですが、LGPL は商用販売時にも自分のソース公開を要求しません。 そこが GPL との決定的な差で、LGPL はアプリ本体に感染しません。義務の対象は 「ライブラリ」と「利用者がそれを差し替えられること」だけです。
現在の構成でクローズドソース製品として販売する場合も、アプリ本体のソース公開は不要です。 ただし配布者は次を維持する必要があります:
libmp3lame.dll を EXE に取り込まず、差し替え可能な別ファイルで配るNeoWaves の MIT 条項は 4 を妨げません。なお、ソフトウェアライセンスの遵守だけで 各国の特許その他の権利まで自動的に許諾されるわけではありません。これは技術的な 配布チェックであり、法的助言ではありません。
Windows インストーラーが配るコーデック DLL は libmp3lame.dll です。ONNX Runtime、
Oniguruma、SQLite は従来どおり EXE 側にリンクされ、DirectML は Windows の
OS コンポーネントを呼ぶだけで再頒布しません。LICENSE と
THIRD_PARTY_NOTICES.txt もインストール先へコピーします。
インストーラー生成には NSIS を使用します。NSIS 本体は 配布物へ同梱されず、ビルド時にしか登場しません。NSIS は zlib/libpng ライセンスで、 商用利用を含むあらゆる用途を無償で許諾しています。購入要請はなく、謝辞も任意です。 LZMA 圧縮モジュールだけは CPL-1.0 ですが、作者による明示的なリンク例外があるため、 モジュール自体を改変しない限り生成物に義務は及びません。
つまりインストーラー生成ツールに起因する商用リリースの前提条件はありません。 鍵の購入も secret の登録も不要で、CI が出力するインストーラーはそのまま商用 production 成果物として扱えます。
179 commits
138 commits
Rust
99.2%
NeoWaves は大量の音声ファイルを素早く一覧表示し、即試聴・編集できる軽量オーディオリストエディタです。UI は eframe/egui、オーディオ出力は cpal を使用しています。
対応フォーマット(デコード):
AAC UNSUPPORTED と表示し、
映像は無音タイムラインで再生・シークできる。AAC の書き出しは全環境で非対応対応フォーマット(エンコード / 書き出し):
フォーマットごとのメタ情報(loop marker / marker / BPM / artwork など)の対応状況は docs/FORMAT_SUPPORT.md を参照してください。
NeoWaves は「加工済み音は offline render、未加工の pristine WAV は即再生を優先」という hybrid 方針です。
Speed モードかつ dirty state / preview overlay / SR override / bit-depth override / per-file gain が無い場合だけ、exact-stream transport を許可します。source_sr / out_sr に基づく rate 補正と master output volume のみです。ソース ch 数が出力 ch 数を超える場合のチャンネル折り畳み(余剰 ch の平均)と、エディタのチャンネル mute/solo(寄与 ch の選択。フォールドダウンは可聴 ch のみを平均)はマッピングであり DSP には含めません。.nwsess はダブルクリック/ドラッグ&ドロップ対応.nwsess を共有フォルダに置き、複数人・複数プロセス(GUI 2 台、GUI と --cli
バッチ)で扱えます。ロックは取りません。代わりに保存時に競合を検知します。
Save As... / Overwrite / Reload / Cancel を選べます。
中止した時点では何も書かれておらず、手元の編集も失われません。<name>.nwsess.bak に残します。⟳ changed on disk を出し、
誰がいつ保存したかを表示します。再読込は手動です(自動再読込は未保存の編集を
捨ててしまうため行いません)。File > Reload Session from Disk...。--force(この場合も .bak を残します)。Z:\Proj と
\\server\share\Proj のようにマウントの仕方が人によって違っても解決できます。display_name= で設定できます(未設定なら OS のユーザー名)。詳細は docs/NWPROJ_PLAN.md の「Shared sessions」を参照してください。
共有フォルダの .nwsess に、誰がどの音のどこに何を言ったかを残せます。
File > Comments...(Ctrl+Shift+M)。
🔗 Reference メニュー(今のファイル / 再生位置 / 選択範囲)、@ で始めて
ファイル名を打つ、Alt を押しながらリスト行をドラッグ、ウィンドウへの
ファイルドロップ、の 4 通り。素のドラッグは従来どおり DAW への配置です。**太字** *斜体* `code` - 箇条書き > 引用 など最小限の
Markdown が使えます。⧉ でコメントだけを独立した OS ウィンドウに切り出せます。
別モニタに置いたまま波形を操作できます。💬 N new と出ます。既読は
自分の PC にだけ記録されるので、共有ファイルは汚れません。display_name=)。同じユーザ名の
人が複数いるときだけマシン名が併記されます。保存で困りません。 コメントの投稿はセッション全体の保存とは別扱いで、
⟳ changed on disk は出ませんし、あなたの Ctrl+S も
邪魔されません。詳細は docs/COMMENTS_SPEC.md。
他人が wav を差し替えても .nwsess は 1 バイトも変わらないので、上の競合検知では
気付けません。自分が前回このセッションを開いた時点の状態を覚えておき、次に
開いたときに差分を知らせます。
stat して (サイズ, 更新時刻) を比べ、
食い違ったファイルだけ内容ハッシュを取ります。10 万ファイルのリストでも
コストは実際に変わった件数に比例します。⚠ N source files changed を行動するまで
残します。クリックで一覧(ファイル / 種別 / サイズ / 検知時刻)。
File > Changed Since Last Open... からも開けます。再読込は手動です。記録は共有ファイルではなく個人のローカル(%LOCALAPPDATA%\NeoWaves\cache\)に
置きます。セッション内に持たせると開くたびに全員が書き手になってしまうためです。
保存が既存のドキュメントを置き換えるたび、置き換えられた版を個人ローカルに
残します(1 セッションあたり 20 世代)。File > Session History... で revision /
保存者 / 保存時刻 / サイズが並びます。
個人ローカルなので他人の保存は自分の履歴には入りません。共有側の保険は従来どおり
<name>.nwsess.bak の 1 世代です。

詳細な操作は
docs/CONTROLS.mdを参照してください。
git submodule update --init --recursive
cargo build
ビルド後の実行ファイル:
.\target\debug\neowaves.exe.\target\release\neowaves.exestable-x86_64-pc-windows-msvc)このリポジトリには .cargo/config.toml で -Ctarget-feature=-crt-static を固定しています。
環境変数 RUSTFLAGS で +crt-static を上書きするとリンクエラーになります。
MD_DynamicRelease と MT_StaticRelease の不一致が出る場合は以下を確認してください。
echo %RUSTFLAGS%(PowerShell は $env:RUSTFLAGS)で +crt-static が入っていないことcargo cleancargo build --releasesignalsmith-stretch は git submodule として管理しています。
初回 clone 後は git submodule update --init --recursive を実行してください。
.\commands\build_installer.ps1
出力:
installer\\out\\installer_<buildid>\\NeoWaves-Setup-<version>-<buildid>.exe補足:
choco install nsis(または公式インストーラー)で makensis.exe を入れてください。見つからない場合は -MakensisPath で明示できます。installer\\NeoWaves.nsi です。Windows版makensis.exeで検証してください。通常起動は GUI です。
neowaves.exe
neowaves.exe --open-folder "C:\\path\\to\\wav" --open-first
headless CLI は --cli で入ります。stdout は JSON、画像系は PNG を保存して絶対パスを返します。
neowaves.exe --cli --help
neowaves.exe --cli list query --folder "C:\\path\\to\\wav"
neowaves.exe --cli batch loudness plan --session ".\\work.nwsess" --query "_BGM" --target-lufs -24
neowaves.exe --cli item inspect --input ".\\debug\\gui_test_440.wav"
neowaves.exe --cli render waveform --input ".\\debug\\gui_test_440.wav" --output ".\\debug\\cli-renders\\wave.png"
neowaves.exe --cli effect-graph list
repo 内から直接使う場合:
.\target\release\neowaves.exe --cli --help
CLI の仕様書:
docs/CLI_MASTER_PLAN.mddocs/CLI_COMMAND_REFERENCE.mddocs/CLI_MIGRATION_MATRIX.mddocs/CLI_HELP_SPEC.mdrepo には NeoWaves CLI を LLM と人間の両方で扱いやすくする repo-local skill を .agents/skills/ 配下に同梱しています。
cli-session-workflowbatch-loudnesseffect-graph-authoringloop-authoringlist-query-reviewexternal-merge-reviewtranscript-batch-generatemusic-analysis-markersplugin-draft-previewrender-editor-reviewverify-loop-tagseffect-graph-testplugin-search-pathsこれらの skill も neowaves.exe 前提で書かれており、詳細な command surface は docs/CLI_COMMAND_REFERENCE.md と docs/CLI_AGENT_WORKFLOWS.md を参照します。
全ドキュメント一覧:
docs/INDEX.mdNeoWaves is released under the MIT License. See LICENSE for details.
If this software was useful to you, you have the right to buy the author a drink.
src/main.rs はネイティブ起動の入口だけを持ち、CLI 引数解析は src/cli.rs に分離しています。src/app.rs は app state / trait shell を持ち、起動時構築は src/app/app_init.rs、フレーム進行は src/app/frame_ops.rs、タブ起動は src/app/tab_ops.rs、editor decode orchestration は src/app/editor_decode_ops.rs に委譲しています。src/app/ui/topbar/ 配下の menus.rs / transport.rs / status.rs に分割されています。src/app/ui/list.rs を orchestration に寄せ、フォーカス/キーボード制御とテーブル定義を src/app/ui/list/navigation.rs / src/app/ui/list/table.rs へ切り出しています。src/app/ui/editor.rs、src/app/ui/effect_graph.rs、src/app/effect_graph_ops.rs です。局所性の高い backend 系は巨大関数を先に削りつつ段階分割します。アプリ内の Help → Licenses... に、依存している全 657 コンポーネントのライセンス全文と、
商用配布時に別途対応が要る項目の一覧を表示します。表示データは
assets/licenses/third_party.json にコミット済みのスナップショットで、ビルド時に
include_str! で埋め込まれます(ビルド時・実行時ともネットワーク不要)。
依存を追加・更新したら再生成してコミットしてください:
git submodule update --init --recursive # 初回のみ
cargo install cargo-about --locked --features cli
pwsh ./commands/generate_licenses.ps1
cargo-about は about.toml の accepted に無いライセンスを見つけると失敗します。
GPL 依存が紛れ込んだらリリースではなくここで止まる、という設計です。
assets/licenses/extra.json に手書きで管理します。
-sys crate が同梱ビルドする C/C++ ソース、インストーラが配る DLL、フォント、
埋め込みデータ、実行時ダウンロードするモデル、Steinberg VST 3 の扱いなど。signalsmith-stretch は submodule で取り込み、上流ライセンスをそのまま保持しています。
vendor/signalsmith-stretch/LICENSE.mdvendor/signalsmith-stretch/signalsmith-stretch/LICENSE.txtNeoWaves 本体のソースは MIT です。MP3 書き出しに使う LAME 3.100 は
libmp3lame.dll として分離し、利用者が ABI 互換版へ差し替えられる動的リンク構成です。
最新の構成と全文ライセンスは Help → Licenses と、インストール先の
THIRD_PARTY_NOTICES.txt に表示されます。
| ビルド | 構成 | ライセンス上の位置づけ |
|---|---|---|
既定 (cargo build --release) | MP3 書き出し・VST3・CLAP あり、AAC コーデック/OpenH264 の同梱なし | MIT アプリ+動的 LGPL LAME。MPL-2.0 依存あり |
| LAME なし | --no-default-features --features glow,plugin_native_vst3,plugin_native_clap | MP3 書き出しなし。MPL-2.0 依存は残る |
| 映像プレビュー込み | --features video | 上記+自前ビルド OpenH264(下記注意) |
強い copyleft の GPL/AGPL アプリ依存は採用していません。 LGPL と MPL は 商用利用できますが、通知・差し替え・変更ファイル公開など、それぞれの条件は残ります。
| 対象 | 解消方法 |
|---|---|
| Steinberg VST 3 | VST 3.8 (2025-10-29) で SDK が MIT に再ライセンスされ、旧来の GPLv3/proprietary 二択が消滅。vst3 crate も Steinberg のソースを同梱していない。残るのは商標表記のみ(VST is a registered trademark of Steinberg Media Technologies GmbH) |
| Cisco OpenH264 | video を既定 feature から除外。Cisco の特許料肩代わりは Cisco 配布バイナリ限定で、ソースからビルドすると義務が配布者に移るため。リリースする Windows インストーラでは Media Foundation が映像を担うので機能的損失はない。--features video でビルドしたバイナリを再配布する場合は AVC の義務が自分に来る点に注意 |
| AAC | FDK AAC 依存と Symphonia AAC decoder は依存グラフに入れない(feature でも入らない)。デコードは同梱せず OS のデコーダーを借りる方式にした。Windows では Media Foundation が AAC 音声を再生し、コーデックは OS の一部なので再配布物には含まれない(映像の H.264 / HEVC と同じ扱い)。OS デコーダーが無い環境では AAC UNSUPPORTED と表示し、映像は無音タイムラインで再生・シーク可能。AAC の書き出しは借りられるエンコーダーが無いため引き続き非対応 |
| LAME (MP3 書き出し) | mp3_lame feature は既定 ON。LAME を libmp3lame.dll として同梱し、EXE は import table 経由で動的リンク。LAME 3.100 同梱原文の LGPL-2.0 §6(b) に沿う共有ライブラリ構成。正確な 3.100 ソースは vendor/lame-3.100 に固定 |
| インストーラー生成ツール | Inno Setup は配布物に同梱されないビルド専用ツールだが、公式が全商用ユーザーに商用ライセンス購入を要請しており、未購入のビルドは「非商用/テスト専用」扱いだった。zlib/libpng ライセンスで商用利用を無償許諾する NSIS へ置き換え、購入要請そのものを解消。LZMA モジュールの CPL-1.0 には作者によるリンク例外があるため生成物に義務は及ばない |
よくある誤解ですが、LGPL は商用販売時にも自分のソース公開を要求しません。 そこが GPL との決定的な差で、LGPL はアプリ本体に感染しません。義務の対象は 「ライブラリ」と「利用者がそれを差し替えられること」だけです。
現在の構成でクローズドソース製品として販売する場合も、アプリ本体のソース公開は不要です。 ただし配布者は次を維持する必要があります:
libmp3lame.dll を EXE に取り込まず、差し替え可能な別ファイルで配るNeoWaves の MIT 条項は 4 を妨げません。なお、ソフトウェアライセンスの遵守だけで 各国の特許その他の権利まで自動的に許諾されるわけではありません。これは技術的な 配布チェックであり、法的助言ではありません。
Windows インストーラーが配るコーデック DLL は libmp3lame.dll です。ONNX Runtime、
Oniguruma、SQLite は従来どおり EXE 側にリンクされ、DirectML は Windows の
OS コンポーネントを呼ぶだけで再頒布しません。LICENSE と
THIRD_PARTY_NOTICES.txt もインストール先へコピーします。
インストーラー生成には NSIS を使用します。NSIS 本体は 配布物へ同梱されず、ビルド時にしか登場しません。NSIS は zlib/libpng ライセンスで、 商用利用を含むあらゆる用途を無償で許諾しています。購入要請はなく、謝辞も任意です。 LZMA 圧縮モジュールだけは CPL-1.0 ですが、作者による明示的なリンク例外があるため、 モジュール自体を改変しない限り生成物に義務は及びません。
つまりインストーラー生成ツールに起因する商用リリースの前提条件はありません。 鍵の購入も secret の登録も不要で、CI が出力するインストーラーはそのまま商用 production 成果物として扱えます。
179 commits
138 commits
Rust
99.2%