Giter Club home page Giter Club logo

vgs2's Issues

Crushes in iOS8

vgs2i.cのinit_openAL関数内で呼び出しているalcOpenDeviceでクラッシュします。
https://github.com/suzukiplan/vgs2/blob/master/template/vgs2i.c#L184
この問題はiOS7.x以前では発生せず、iOS8でのみ発生します。
正直どのように対策したものかと迷っています。
たぶん、iOS8のバグ(デグレード不良)だと思います。
本件の対策(回避策)についてPull Request募集中です。

この問題は初代VGSでも同様に発生します。
この問題を解決次第、SUZUKI PLAN製iPhoneアプリに修正をマージしてアプリをアップデートする予定です。

【この問題に該当するアプリ】

  • NOKOGI Rider
  • NOKOGI Rider Lite
  • Invader Block 2
  • 東方BGM on VGS
  • Battle Marine
  • Canon Sniper
  • Lunatic Clay
  • Lunatic Clay (FREE)
  • Invader Block 3

Mac OS X support

  • 可能な限り手を抜きたい
  • Linux互換相当でいいんじゃないかと思う
  • ALSAについてはOpenALにしても良いかも(iOS版のコードをCで書いておいてあるのでほぼそのまま流用できると思うので)

Visual Studio 2013対応

  • GetVersionExが使えなくなったので外す修正が必要。
  • 現状バージョンはログ表示に使っているだけで、別に要らないんじゃない?と思っている

Linuxサポート

  • 私のAndroid開発環境をLinuxに移行した関係で、コマンド類(vgs2~)を全てLinuxで使えるようにしたい
  • 対応するのはコマンド類のみで、本体(エミュレータ)部分のLinux対応は不要(AndroidのみでOK)と考えている
  • そもそも、メリットが何も無いので...
  • Macは割とどうでも良い(GCCビルドに対応しておけば、多分Macでも使えるような気がしないでもない)

効果音を鳴らす新API

概要

現状, vgs2_eff で raw PCM 形式の効果音を再生する機能があるが, そうではなく, もっとプログラマブルな形で効果音を鳴らす API が欲しい。

プログラマブルな形

以下のパラメラを引数で渡す感じで。
多分、以下のパターンだけでも結構それっぽくなると思う。

  • wave-pattern: triangle, square, saw, noise
  • length: Hz
  • scale
    • initial-value
    • direction: down, up
    • interval: Hz
  • volume
    • initial-value
    • direction: down, up
    • interval: Hz

API

シンプルにしたい。
チャネルの概念を入れれば複数の効果音を同時再生できるけど、同時再生は無くて良いかも。
スロット番号が若い方が優先度が高い。
という要求仕様を満たすには以下のような感じで良いんじゃないだろうか。

  • vgs2_peff_set(unsigned char slot, struct VgsPeParams* params);
    • パターンを登録
  • vgs2_peff_play(unsigned char slot);
    • 登録パターン(slot) を 再生
  • vgs2_peff_stop();
    • 止める

iOS porting支援コマンド(vgs2iport command)

折角Mac OS X対応したので、VGSプロジェクトの内容をiOSポーティングするコマンドみたいなものを作りたい。(以下のような感じのものを想定)

$ vgs2iport  VGS-project-dir  iOS-project-dir

vgs2playの内部コマンド拡張

今のところ q(終了)のみですが、いろいろと拡充したい。
とりあず、思いついたものを書いてみる。

時間指定

Command : j { sec | min:sec }

で指定した再生時間にジャンプ。

時間指定オプション

$ vgs2play bgm-file [time]

みたいな感じで初期値のオプション指定も欲しいかも。

キーチェンジ(移調)

Command : k+ 数字
Command : k- 数字

特に実用性はないかもしれないが楽しそう。
(VGSに移調APIがあるので割と簡単に作れる)

特定チャネルのミュート

Command : mチャネル { on | off }

特定パートのみチェックしたい時とかに使いたい。

ポーズ/再開

Command : p

基本ですね。

リロード

Command : r

BGMファイル自体を読み直し、ミュートや移調の設定をクリアする。
割と重要(作業時)

sound_threadの部品化

  • iOSとMac OS Xの実装内容が同じ(重複)
  • vgs2play と sandboxの実装内容が同じ(重複)
  • Linuxもインタフェースは共通化可能

という訳で、iOS, Mac OS X, Linuxのsound_threadの実装を一本化しておきたい。

vgs2pack command

概要

VGSのMMLデータ+metaデータからvgspack (正式名称は若干長いですが, SUZUKI PLAN - Video Game System / BGM package format ) を生成するコマンドを提供する。

経緯

東方BGM on VGS を iOS から Mac OS X へ単純移植したところリジェクトされてしまうという案件が発生した(詳細はこちらで詳述)。
本件指摘の対応策として、汎用的なVGSのBGMプレイヤーを提供しようと考えている。
その際, https://github.com/suzukiplan/Touhou-VGS-MML-data からインポートできる形式のデータを生成して、そいつを Dropbox なり ローカルファイル 経由でアプリへ喰わせれば良い感じにしたいと思っている。

meta data

1曲ごとに以下の情報を付与する。

  • format: BGM data format
  • genre: 曲の種別(以下のような大まかなもの)
    • game
    • classic
    • pops
    • rock
  • info: 複数の場合あり(二次創作の場合は2つ、三次創作なら3つ)
    • album: アルバム名(ゲームの場合はゲームタイトル)
    • origin: アルバムをリリースした国
    • copyright: アルバムのコピーライト(年)
    • right: 準拠する権利
    • code: 権利コード(例えばJASRAC管理楽曲なら管理番号や許諾番号)
    • song: 曲名
    • team: 所属サークル名・会社名・団体名など
    • composer or arranger: 作曲者 or 編曲者

meta tool

https://github.com/suzukiplan/Touhou-VGS-MML-data から東方BGM on VGSのmeta dataを自動的に出力するツール。(これは vgs2 リポジトリ ではなく Touhou-VGS-MML-data リポジトリ に突っ込んでおき、ワンコマンドで東方BGM on VGSの vgspack を出力できる状態にしておく)

vgs2bgmライブラリ

about

  • VGSのBGMファイルを外部プログラムから色々するための共有ライブラリ
  • とりあえず、Windows版を作る
  • VBやC#とかから呼べる形にする

features

  • 初期化 / 終了
  • ロード / 解放 (ファイルからダイレクトにスロットに読み込む&解放する)
  • vgs2_bxxx(BGM関連のAPI全般)
  • レジスタ・スナップショット(現在の演奏状態を見れる感じの何か)

ボリューム調整機能

ボリュームを動的に調整する機能を追加する

  • マスターボリューム
  • チャネル別の出力

なお、マスターボリュームは MML の Mオペランド とは別概念が良いんじゃないかなと思う。
パーセンテージ指定とか。

vgs2rec command

BGMファイルをwavファイルへ変換して保存するコマンドが欲しい。
動画のBGM素材として使いたい時とかに役立ちそうなので。
ザックリと以下のような感じを想定

command line

vgs2rec  [{-t play-time | -l loop-time}] [-s sampling-rate] bgm-file

arguments

  • -t play-time : 演奏時間
  • -l loop-time : ループ回数 (1以上)
  • -s sampling-rate : サンプリング周波数
  • bgm-file : 変換対象のBGMファイル

memo

  • 非ループ曲の場合、play-time, loop-time は指定できない仕様で良いと思う
  • play-timeは「フェードアウトを挿入開始する時間」で良いと思う
  • play-time, loop-time 省略時は loop-time に 1 を指定したことを仮定
  • sampling-rate は要らないかも(仮に作る場合はデフォルト22050)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.