UnityAsset

2018年10月31日 (水)

AssetStoreが規約変更で無料アセット禁止に!?

困りました。。

どうも4.99$未満はダメになるっぽい。。

アセットストアから取り下げるか。。どうするか。。

続きを読む "AssetStoreが規約変更で無料アセット禁止に!?" »

2018年3月28日 (水)

MySynthesizer1.7

MySynthesizer1.7が公開されました!
AssetStore

今回はバグ修正とシーケンサーの機能拡張です。

・ヌルぽ削減
・.Net4.6でビルドするとアプリが終了できない不具合を修正。
(スレッドのIsBackgroundをStart以降に呼ばないといけなかったらしい?)
けど4.6だとTaskが使えるのでそっちに切り替え。
・mmlにバリエーション機能を追加。
・mmlにセクションタグを追加。
・シーケンサーにNextSectionコールバック追加。
・シーケンサーにJumpコマンド追加。
・スタンダードMIDIファイルのMML変換をランタイムでも使えるように。
・FM音源の音色パラメータをランダムに生成する機能をサンプルに追加。

詳細
バリエーション機能
 トラック毎にターゲットとなるバリエーションを指定できるようにし、
 バリエーションを演奏時に切り替えることで、演奏するトラックをグループでスイッチできます。
 ゲームなどで場面に応じた編成に動的に切り替えられるます。
 ただし切り替えはセクション切り替えのタイミング。
 (セクションとは複数の小節の集まり、MML1行分)

セクションタグ
 内部的には全く何の効果もありません。
 セクション毎に複数の任意の文字列を指定できます。

NextSectionEvent
 シーケンサーで次のセクションを決定する時に呼び出されます。
 戻り値により次のセクションを指定できるのでスクリプトによる多彩な制御が可能。
 またPlayやVaryコマンドでほかの曲や編成へタイミングを揃えた切り替えも可能。

Jumpコマンド
 演奏中に任意のセクションからの任意のステップ数もしくは拍数の位置にシーク。
 飛ばしたコントロールチェンジなどは無視されるので注意。
  またシークはセクション先頭からMMLをなめるのであまり長い距離を指定すると遅いです。

StandardMIDIFile
 dllにSMF2MMLコンバーターを移動しました。
 UnityのMySyntheStationも修正し、MMLClipのTextCにmidのアセットを指定すると
 ランタイムでmidからmmlへ変換できます。
 midファイルは.bytesをつけてテキストアセットとしてください。
 今回MyImporterというエディタ拡張を入れ.sf2と.midファイルをインポートすると
 自動で.bytesを付加するようにしてみました。

FM音源の音色生成
 ToneEditorサンプルにランダム生成ボタンをつけてみました。
 完全にランダムだとわけわからないのである程度制限や偏りを設けています。
 出力opのtlの正規化、rrの下限など。
 [R]はOPMの機能のみ、[E]は独自拡張の機能込み、[T]はRの偏りの無いバージョン。
 FM音源の音色作成はとても難しいので、最初のひな型作成や傾向を見るのに活用してみてください。

今回、本当はサンプルをもう少し充実させたかったのですが、
ちょっと余裕がなくってとりあえず機能面のみでリリースしました。

音ゲーに使いたいというお問い合わせがあったので、
試しに作ってみたいのだけれどなかなか難しいですね。

サンプル向けに曲を提供してくれる人募集>w<

ところで最近UnityのAssetStoreの審査がすごいです!
昨晩申請を出したのに今朝にはもう配信されていました。
登録から9時間くらいかな?

これはほんと助かりますねー

※お仕事募集中!
フリーランスのゲーム系プログラマです。
リモートでのお仕事を募集しています!
グラフィック、オーディオ、ハードよりな所からネットワーク(LAN)もOk。
AR、VR、画像処理、ライブラリ開発、研究分野も好き。

2018年1月17日 (水)

MySynthesizer1.6

MySynthesizer を更新しました。
(まだ申請を出したばかりで審査中です 2018/1/17)
掲載されました!2018/1/19最近審査がものすごく速いですね。嬉しい。

1.6では新たにSoundFont2のシンセサイザーを追加しました!
ただし重い!!
とても重い!!

工夫すればもう少し効率化できますが、まぁ最初だし、無料だし、
使っている人もいなさげだし?

SF2対応するにあたりこちらのページを参考にさせていただきました。
SoundFont 2.04 仕様の概要まとめ
ただSF2って思ったより複雑で結局英語リファレンスを読み込んで何とか。
それでもいくつかの機能は謎のまま。
いくつかはあえて無視したり、こちらの都合で処理を変えたり。

使ってみておかしいところとかあれば連絡をいただけると助かります。

またSF2を使うために音色の扱いを大幅に変更しています。
コードの互換性が一部なくなっているので使用中のプロジェクトへの
アップデートはご注意ください。

現在はプログラム番号で管理するようにしたので
前よりぱっと見はシンプルになりました。
代わりに内部での処理が増えて少し重くなっています。

こちらでWebGL版を試すことができます。
MySynthesizer1.6体験版。

SS8はUnityの仕様で音が出ませんが、
代わりにSF2によるGM音色を試すことができます。

SF2の音色はS.Christian CollinsさんのGeneralUserGSを使わせてもらいました!
ちなみにアセットストアのパッケージには入っていません。
試してみたい方はCollinsさんのサイトからダウンロードしてみてください。

いくつかフリーのGM音源を試しましたが、こちらがとてもバランス良くお勧めです!
またSF2の検証の記事が大変参考になりました。
Collinsさんありがとうございます!

1.5からの変更点
・SF2対応
・WebGL対応
・音色の扱いを大幅変更
・MMLのコメント機能を変更(行頭以外でも使えるようにしました)
・SMF2MMLのバグ修正&音源の違いに対応?

趣味と研鑽のためとUnity向けシンセが見当たらなったので作っていましたが
最近AssetStoreに高度なシンセサイザーのアセットが出てきたようですね
ネイティブに対応して軽量低遅延だそうなので通常のゲームにはそちらがいいかも?

無料でとりあえず音を出して遊んでみたい!という時は
ぜひ私のMySynthesizerをよろしくおねがいします!

CT8の矩形波音源ならそこそこ軽いしWebGLでも動くので
ちょっとしたゲームの効果音やBGMにお勧め!

ネイティブじゃないけれど、代わりに多くのプラットフォームで
動かすことができます。負荷さえゆるせれば。。

GameJamやハッカソンにもいかがですか!?

2017年6月 3日 (土)

MySynthesizer1.5と1.5.1

MySynthesizer1.5が公開されました。
そして1.5.1を提出済みです。

実は1.5は一度取り下げたつもりだったのですが
うまくいってなくてそのまま公開されていましました。

取り下げようとした理由は廃止されたAPIを使っていたことと
WebGLで試したらいまいちだったのでそのための修正、
新規サンプルの追加のためでした。

これらの修正は1.5.1で再提出したのでそちらをお待ちください。

・1.5での変更点。
今回は機能追加はありません。
プラグインのdllからスレッドを削除しました。
今まではUWPのためにdllを二つ用意していましたが
プラグインからスレッドを削除する事で一つに統合することができました。
代わりにMySyntheStationでスレッドを管理するようにしました。

この為Mixer.Updateの動作に変更があります。
今まではイベントを立てるだけだったのですが、
この変更でUpdateで直接音の合成をするようにしました。
負荷が増大しているので注意してください。

あとtickコールバックをプロパティからeventへ変更したので
ここだけコードの修正が必要になります。
お手数をおかけします。

・WebGLでのテスト。
WebGLではスレッドが使えません。
またOnAudioFilterReadも機能していないようです。
このためリアルタイム再生はできませんでした。
MyMMLBOXでのGenerateAudioClipをチェックしたmmlのみ再生できます。
ただAudioClipのGetDataも機能しないためSS8音源は使用不可です。
PM8とCT8のみ動作します。

・新規サンプル
シンプルなサンプルを追加しました。
MainCameraにMySyntheStationとMyMMLPlayerを追加。
空のGameObjectを作成しAudioSourceとMyMMLBoxを追加。
サンプルとしてSampleSimple.csを追加。
このスクリプトからMMLBoxのmmlを呼び出しています。

WebGL環境ではGenerateAudioClipでSS8以外のmmlのみ再生できます。
Simpleの中では"Picon"と"Sakura"のみです。
ToneEditorサンプルではクリック音しか出ません。

今回の修正はこんな感じです。
今までよりわずかでも使いやすくなっていればいいのですが。。

フィードバックもお待ちしています!
気軽にお問い合わせください。

2017年3月 5日 (日)

MySynthesizer Tutorial01

Translated by google ;-)

I will explain how to use My Synthesizer which is being published in Unity Asset Store.

This time practice until you sound the sound with a minimum.

  1. Please create a new empty project first.
    Shot01_2

  2. Please access the asset store and search and import with "My Synthesizer".
    Shot02
    The minimum required is "plugins" and "scripts".
    Please do "My Synthesizer" instead of "MySynthesizer" for searching.


  3. Next we add the component to MainCamera.
    Shot03_2
    AddComponent -> MySynthesizer/MySyntheStation and MyMMLPlayer.
    MySyntheStation is a class that manages synthesizers, please be sure to attach to the component with AudioListener.
    MyMMLPlayer is a class to make it easy to play MML.
    There is no problem even if you put more than one where you put it.

  4. Now that you are ready to use MySynthesizer, write code to sound.
    Shot04
    Add an empty GameObject appropriately and add a new script.
    This time I named it Tutorial 01.

    tutorial01.cs

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class Tutorial01 : MonoBehaviour
    {
        private MySpace.MyMMLPlayer player;
        private MySpace.MySyntheStation station;
        private MySpace.MyMMLClip clip0;

        private bool started = false;
        void OnEnable()
        {
            if (started)
            {
                OnReady();
            }
        }
        void Start()
        {
            OnReady();
            started = true;
        }
        void OnReady()
        {
            station = FindObjectOfType<MySpace.MySyntheStation>();
            player = FindObjectOfType<MySpace.MyMMLPlayer>();

            clip0 = new MySpace.MyMMLClip("clip0", ""
                + "$t00 = 2:0\n"
                + "$@(tone) = @ct8[0 0 5[1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 31 29 27 25 23 21 19 17 15 13 11 9 7 5 3 1] env[0 1 0 29 5 1 7 4] lfo[0 127 0 0 31 0 0 0 0]]\n"
                + "!tempo 180\n"
                + "!volume - 80, 4\n"
                + "t0 = @vm0, 1@(tone)o6e16o5b8.\n");
        }
        void OnDisable()
        {
            player = null;
            station = null;
        }

        void OnGUI()
        {
            if(GUI.Button(new Rect(10, 10, 100,20), "playmml"))
            {
                player.Play(clip0);
            }
            if (GUI.Button(new Rect(10, 30, 100, 20), "noteon"))
            {
                station.Instrument[0].NoteOn(0, 72, 127);
            }
            if (GUI.Button(new Rect(110, 30, 100, 20), "noteoff"))
            {
                station.Instrument[0].NoteOff(0, 72);
            }
        }
    }

    In initialization, retrieve the reference to MySyntheStation and MyMMLPLayer,
    When the button is pressed in OnGUI, we will do the processing.
    In addition, since MySyntheStation is initializing during Awake, if you expect to have been initialized definitely, please access it later than Start.

  5. It is completed!
    Please play and press the button.

    It will be successful if sound comes out!
    Shot05

If you want to run it other than Editor or Standalone, you need to change the setting.
Shot06
Select Assets / MySynthesizer / plugins / MySynthesizer in ProjectWindow
Please check the platform required by Inspector 's Select platforms for plugin.

We plan to improve it in future version.

#Code explanation
MyMMLClip is a class that holds mml text and compiled data.
Just set the text in mml and pass it to MyMMLPlayer for playback.
Calling PrepareClip of MySyntheStation
In the coroutine, mml is compiled and the tone color is set.

If you want to manipulate the direct sound source you can access it with the Instrument member of MySyntheStation.
Instrument [0] is an FM sound source (arcade or Genesis style)
Instrument [1] is a PCM sound source (PlayStation style)
Instrument [2] is a WaveTable sound source (GameBoy style)


Next time I would like to explain about MyMMLBox as well.

If you have anything you would like me to explain, please let us know by comment or e-mail.


MySynthesizerの使い方。

Unityアセットストアで公開中のMy Synthesizerの使い方について解説します。

今回は最小限で音を鳴らすまでを実践します。

  1. まずは新しい空のプロジェクトを作成します。
    Shot01_2

  2. アセットストアにアクセスして"My Synthesizer"で検索、インポートしてください。
    Shot02
    最低限必要なのは"plugins"と"scripts"になります。
    なお、今更気が付いたのですがパッケージ名が"My[ ]Synthesizer"にしてしまっていますね。。
    このため"MySynthesizer"で検索してもでてきません。
    大失敗。。

  3. 次にMainCameraへコンポーネントを追加します。
    Shot03_2
    AddComponent -> MySynthesizer/MySyntheStation と MyMMLPlayerを追加してください。
    MySyntheStationがシンセサイザーを管理するクラスで、必ずAudioListenerの付いているコンポーネントへアタッチしてください。
    MyMMLPlayerはMMLの再生を手軽にするためのクラスです。こちらはどこにつけても複数つけても問題ないです。

  4. MySynthesizerを使う準備ができたので、次は鳴らすためのコードを書いていきます。
    Shot04
    適当に空のGameObjectを追加して、新規スクリプトを追加します。
    今回はTutorial01と名付けました。

    コードはこんな感じ。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class Tutorial01 : MonoBehaviour
    {
        private MySpace.MyMMLPlayer player;
        private MySpace.MySyntheStation station;
        private MySpace.MyMMLClip clip0;

        private bool started = false;
        void OnEnable()
        {
            if (started)
            {
                OnReady();
            }
        }
        void Start()
        {
            OnReady();
            started = true;
        }
        void OnReady()
        {
            station = FindObjectOfType<MySpace.MySyntheStation>();
            player = FindObjectOfType<MySpace.MyMMLPlayer>();

            clip0 = new MySpace.MyMMLClip("clip0", ""
                + "$t00 = 2:0\n"
                + "$@(tone) = @ct8[0 0 5[1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 31 29 27 25 23 21 19 17 15 13 11 9 7 5 3 1] env[0 1 0 29 5 1 7 4] lfo[0 127 0 0 31 0 0 0 0]]\n"
                + "!tempo 180\n"
                + "!volume - 80, 4\n"
                + "t0 = @vm0, 1@(tone)o6e16o5b8.\n");
        }
        void OnDisable()
        {
            player = null;
            station = null;
        }

        void OnGUI()
        {
            if(GUI.Button(new Rect(10, 10, 100,20), "playmml"))
            {
                player.Play(clip0);
            }
            if (GUI.Button(new Rect(10, 30, 100, 20), "noteon"))
            {
                station.Instrument[0].NoteOn(0, 72, 127);
            }
            if (GUI.Button(new Rect(110, 30, 100, 20), "noteoff"))
            {
                station.Instrument[0].NoteOff(0, 72);
            }
        }
    }

    初期化でMySYntheStationとMyMMLPLayerへの参照を取り出し、
    OnGUIの中でボタンが押されたら処理を行います。
    なお、MySyntheStationはAwake中で初期化を行っているので確実に初期化済みを期待する場合はStartより後でアクセスしてください。

  5. これで完成!Playしてボタンを押してみてください。音が出れば成功です!
    Shot05
    何か不具合があればお知らせ下さい。

なおEditorやStandalone以外で実行する場合は設定を変える必要があります。
Shot06
ProjectWindowでAssets/MySynthesizer/plugins/MySynthesizerを選び
InspectorのSelect platforms for pluginで必要なプラットフォームをチェックしてください。
将来のバージョンで改善する予定です。

・コードの解説
MyMMLClipがmmlのテキストとコンパイル後のデータを保持するクラスです。
mmlにテキストを設定しMyMMLPlayerに渡すだけで再生が可能です。
MySyntheStationのPrepareClipを呼び出すと
コルーチンの中でmmlのコンパイル及び音色の設定が行なわれます。

直接音源を操作したい場合はMySyntheStationのInstrumentメンバでアクセスできます。
Instrument[0]がFM音源(アーケードやMegaDrive風)
Instrument[1]がPCM音源(PlayStation風)
Instrument[2]がWaveTable音源(GameBoy風)


次回はMyMMLBoxあたりも解説したいと思います。

また何か説明してほしい内容があればコメントかメールでお知らせください。

2017年1月28日 (土)

MySynthesizerでAndroidとか。

先日お問い合わせがあったので説明を。

MySynthesizerはデフォルトではUWPとStandalone,Editor向けになっています。
そのため他のプラットフォームで動かそうとしてもエラーが出ていると思います。

これはMySynthesizer.dllのプラットフォーム毎の設定がされていないためです。

他のプラットフォームで使う場合はProjectウインドウから
Assets/MySynthesizer/plugins/MySynthesizerを選択し
InspectorのSelect platforms for pluginで
使用したいプラットフォームをチェックしてください。

Pluginsetting

UWP以外は全てMySynthesizer.dllだけで行けるのですが
UWPではスレッドがなくなった為に別のdllに分かれています。

unity上でのプラットフォーム設定にdenyがあればよかったのですが
インストールされていないプラットフォームも表示されないし
さらにデフォルト設定も無いためにMySynthesizer.dllのallを外して
standaloneとEditorのみチェックしています。

そしてMySynthesizerUWP.dllはstoreアプリのみチェックしているのですが・・
もしかしてプラットフォーム削除していると設定も消える?
消えたまま上げてしまったかな?

とりあえずこういう状況なので
大変申し訳ないのですが個別に必要なプラットフォームをチェックしてください。

いっそデフォルトはUWPを無効化しておいたほうが使いやすいかもですね。
次回があれば検討しておきます。

(てかそもそもuwpからスレッドが消えているのがおかしいんです!
たしかにtaskは便利だけれど、スレッドも大事なんです!
今度のwindows10ではゲーミングモードもできるらしいですが、
単にプライオリティをいじるんでなく、
スレッドが数十ミリ秒単位でしか起きない問題を直してほしい!!
リアルタイムOS的にタイマーやイベントオブジェクト待ちは即座に解除で
たとえば20m~50m過ぎたら通常のタイムシェアリングになるとかね。)

ちなみにこちらではAndroid4.2.2でASUSのMemoPad?で動作確認しました。
むっちゃ処理落ちしていました>w<
FM音源はやはり重いですね。
リアルタイム演奏に使うなら発音数を制限するとか
WaveTable音源(CT8)を使用してください。
AudioClipに書き出すのは多少遅くても問題ないので
効果音などには積極的に使ってもらうのもありです!

もしdllのネイティブ化をお望みの場合であれば
個別に受注して開発することも可能です。

unityの面白いお仕事募集中です!

PS4とかVRの経験もあります!

2017年1月 7日 (土)

MySynthesizerの1年。

MySynthesizerを公開してもうすぐ1年です。

1年間のアセットストアでのダウンロード数を調べてみました。

月、DL数、MySynthesizerの公開日、バージョン
2016/1  39 1/11 1.0
2016/2  49 2/23 1.1
2016/3  37 3/23 1.2
2016/4  39
2016/5  35
2016/6  17
2016/7  48 7/6 1.3
2016/8  25
2016/9  24
2016/10 23
2016/11 32
2016/12 53 12/5 1.4
2017/1  7

無料アセットなのでもう少し気軽にDLされるかと思ったのですが
思った以上に少ないようです。
人の目に触れる機会が無いのもあるけれど、
そもそも需要がなかったのかな。

MMLでシンセサイザーって他にないから行けるとおもったんですけど・・。
BGMや効果音のデータをものすごく小さくできるから
DL販売のゲームに向いてると思うし、
FM音源や波形テーブル音源のチップチューン的な音も良いと思うのですが。
ただ処理が重いのでモバイルのアクションには向かないですね。

一つ不思議なのが、DL数に比べて動画の再生数が少ないようです。
ということはDLのほとんどが内容見ないでただ落としてるだけなのかも?

ちなみにここのブログも1日数回のビューしかないので
宣伝にもなっていません(笑)

もう少し検索にひっかかりやすいサービスを使うとか
twitterなどソーシャルも活用したほうが良いのでしょうね。

人の目に触れなければ何にも始まらないですから。

フィードバックも無いし次のネタも無いので更新はひとまず終了です。

シンセ以外にも小ネタはこちらのブログでちょいちょい上げていきますので、
今後ともよろしくお願いします。

2016年11月24日 (木)

MySynthesizer1.4

昨晩MySynthesizerの新バージョンをunityへ提出しました!
※2016/11/30 公開されました!!

今回の目玉はSMF(スタンダードMIDIファイル)から
MML(MusicMacroLanguage)へ変換するツールを同梱!

ツールはソースコード付きです。

またシンセ本体の機能拡張も行いました。
・expression追加
・ボイス数を指定できるように(最大32、現行は8)
・ベースの周波数を指定できるように(8000~、デフォルトは31250)

よりチープな演奏から豪華な演奏まで?対応できます。

unityスクリプトからはあえて変えられないよう制限してますが
コードを見ればすぐに分かると思います。

ちなみに制限の理由は今までとの互換性と
チップチューン的な音が元々の目的だったので。
あと負荷が著しく高いですから・・。

ツールのほうには制限を入れていません。

あとはバグ修正です。。
いまだにあちこちでバグが見つかり恥ずかしい限り。
私自身は音楽の素養が無くてうまくバグだしできなくて。。

仕様変更もありますので気を付けてください。
・volumeshift,temposhift -> volumescale,temposcale
・/**/のコメントをどこでも使えるように。

ところでSMFコンバーターですが、
これがとても難しかったです。。
振り返ると大したことしてないのですが(笑)

・SMFを読み込み。
・音色などの情報を収集出力。
・ノートOnとノートOffの対を見つけて長さ情報を取得しステップ変換。
・ステップを追いながら同時発音のスロットを管理しつつMML出力。

私のMMLの仕様が独自なのもあり管理がややこしかったです。
・小節などを単位として全てのトラックが同期する。
・1トラック内で最大同時8音管理。
これに合わせるために音符の長さを細かく分割して
出力する必要がありました。

MMLでは音の長さを分数で表現し、SMFではステップ数となります。
そのため計算を簡単に正確にするために
私のMMLの最小単位である128分の1音符を1ステップとしました。
タイミング調整のために休符とタイだらけになってしまいます。

一般的にSMFだと四分音符一つ当たり96~480(960?)ステップなので
今回の32ステップはかなり粗いですね。。
細かいニュアンスは飛んでしまうと思います。

それと音符の出力ですが、
ここは手を抜いてノートナンバーをそのまま出力しています。
情報は足りているのでabc~へ変換できるのだけれどもう疲れました>w<

さらに音色マップも結局すべて矩形波のみに・・。
余裕があればいつかGM音源マップを作ります。

音色マップですがドラムのほうはちょっとややこしくなってしまいました。
音色定義とは別にマクロ定義も必要になります。
マクロのほうでパンや実際のノート、ボリュームなどを指定します。
音色データにこの辺りを含めるか迷いましたが
どっちみち演奏により調整したい事も多いだろうとこの仕様に。
マクロは書き間違うと分かりにくいバグになるのでご注意。

今回このツールを作るにあたってこちらのサイトにお世話になりました!
全曲無料・フリー音楽素材/魔王魂

とてもゲームらしい素敵な音楽を多数公開されています!
ライセンスなどきちんと読んで是非活用してみてください。
オーダーの料金もお手ごろなので
いつかゲームを作るときにはこちらへ発注してみようかな。

注意点として公開されているSMFはGM音源向けなので
私のコンバーターを通すとまったくの別物になってしまいます。

が、例えば4音に制限して矩形波のみで流すと
まさにファミコンやゲームボーイっぽい音!
これはこれで素敵。

32音に増やすとほぼ元の音は出ていますが音色がやっぱり残念です。
せめてドラムだけでもちゃんと作りたいですね。

ストアで公開されたらまたこちらでお知らせします。

2016年7月 2日 (土)

MySynthesizer 1.3

先ほどMySynthesizer1.3を提出しました。
(公開されました!2016/7/6)

今回の変更点
・Unityで使いやすいスクリプトを追加。
・たくさんのバグ修正>w<

今まではサンプルとしてのスクリプトでしたが、
もう一つ使いにくいし、プラグインを生でたたくのも面倒でしたよね。
そこでUnityから使いやすくなるようにいろいろと修正して
サンプルから独立させてみました。

エディタ拡張も多数入れてみました。
*.mml.txtというファイルがあればヒエラルキへ
ドラッグアンドドロップができます。
また実行中ならインスペクタ上で試聴もできます。

またクリップにaudioClipを生成するスイッチをつけたので
効果音等に使いやすくなったのではないでしょうか?

バグについては・・ほんといろいろ申し訳ないです。
ボイスマスクが正しく動作していなかった。
パーサーの改行処理のバグ。
シーケンサー実行中にシンセを直接操作するとおかしくなる。
等・・。

またthredingやdisposingの対応が適切でなかったりして
場合によっては不安定になっていました。

まだまだテストは十分と言えないので
何かおかしな挙動があればお知らせください。



今回のバージョンアップは4月に開催されたunite tokyoで刺激を受けて
スクリプト周りを見直たところから始まりました。
uniteではいろいろと勉強になったのでそれらを反映させようとしたのですが・・
ほんといろいろ難しかったです。

エディタ拡張ではなかなか思い通りにいかず苦戦しました。
本当はカスタムエディタを書くべきところで無理やりカスタムプロパティですませたりも。。
エディタ上で試聴を実装したかったけれど、
OnAudioFilterが呼ばれないとかUpdateの挙動が違うとかで断念したり。
なんだかエディタが不安定になることが増えてきて原因を追跡したら
どうやらスレッドがらみでの廃棄処理に問題が起こっていました。
このあたりの見直しもずいぶん苦労しましたです。

ただ、まだこれでいいのか不安もあります。。

それからちょっと興味本位でUWPとiPhoneで実行しようとしたのですが、
これもまた大はまり!
Unityのバグを踏みまくるし、UWPは.Net3.5と共存できないし・・。
が、何とか最後はどちらでも一応は動きました!

テストに使ったのはSnapDragon210のWindows10Mobile
ドスパラのDiginnosという端末です。
安くて意外といいですよ!
Windows10Mobileって不満点もあるけれど、
ちょうどiPhoneとAndroidの中間的でわりと個人的には気に入っています。
もっとこれから普及してほしいですね。

iPhoneはついにサポートの切れる4Sです。
スナドラ210よりかなり遅くて処理落ちしてしまいますが
まぁ一応は動いたということで。
クロックや実行効率は4sのが上のはずですが
コア数の差が効いたのかもしれません。

IL2cppのコードは現状はあんまり品質よくないようですね。


Unityはいますごい勢いで進化中なのでこれからも楽しみです。

もっとUintyに関わりたいのでお仕事も募集してます!
私はフリーランスのゲーム系プログラマで
ネイティブならVR、PS4、VITAなどの経験があります!

よろしくお願いします。

より以前の記事一覧

その他のカテゴリー