スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

らしさってなにさ


幼少のころから、何かを作って他人にお披露目したときなどに、「なかなか君らしさが出ているね」的なことを言われることが多いわけですが、まぁ、これは「特に褒めるべきところがない」とほぼ同じ意味だということは、いくらワタクシでも薄々勘付いてはいるのです。

生まれてこのかた、誰かから何かを期待されることがなかったワタクシ、誰かの期待に応えるようなものを作れるわけもなく、ただただ、ひねもす、のんべんだらりと、こう、こねくり回しているうちに何かが出来ることが多いので、当然、自分が作りたい物の斜め上を行くパターンが多い。
いや、「自分が作りたい物」の存在自体が怪しいんだけど。

先日、新たに作った物を数少ない知人に披露したところ「君らしくない」と言われて、途方に暮れる。

ワタクシのような者は、日がな一日こねくり回して、自分の予想を裏切る駄作を排出していくしか方法を知らないないのです。
と、再認識したところで、非生産的な一日を過ごすこととする。

継続は力なり。
ホントか?

スポンサーサイト

迷うところ【Unity ? Cocos ?】


ちょっと思いついたことがあって、新たにアプリを作ろうかと思うんだけど、開発環境で悩む。

例のごとく、音まわりは Pure Data を使う予定なんだけど、ネッツ検索をしたらこんな物が。

uPD
kalimba
libpd4unity

そうなのです、Pure Data の Unity のアセットがあるようなのです。
技術的にも、Unity には興味があるので、ちょっと使ってみたい気もしているのですが、さすがに「ちょっと思いついた」で、新たに C# と、Unity と Pd アセットの使い方を憶えるのは、少し腰が重くなる。

もう1つの方法としては、 Android Studio + Cocos2d-x + pd-for-android があるんですが(今回は選択肢から java オンリー + pd-for-android は除外)、こちらも、Android Studio を、つい先日使い始めたばかり。

ちょっとしたアイデアメモっぽい感じだし、使い慣れているツールがあれば、イチもニもなくその環境で着手するのですが、うーん、どうしたもんじゃろのお。

実はちょっとしたもののほうが Unity に向いているような気がしないでもないところが悩みどころ。
やってみないと分からないことが多すぎなのである。人生日々これ勉強。


上野樹里結婚


まじか!?
え? てるてる家族って何年前?
えっ? えっ? 相武紗季と同い年?

UC-16を使ったときのメモ帳


昨日、ちょっと Native Instruments 製品を触る機会があったんだけど、NI 社のソフトを持っていると連携性がバツグンだな、KONTROL。
まぁ、空きスペースと懐具合の関係で、しばらくは導入はできなそうだけど。

てなわけで、ツマミグリグリ系はまだまだ EVOLUTION の UC-16 でいくぜぃなワタクシ、ツマミに、どのプラグインの何を割り振って、何番に保存したかすぐ忘れてしまうので、メモ帳を作ってみました。
もう、UC-16 ユーザーも少なくなったとは思いますが、良かったらダウンロードしてお使いください。
これに、コード進行表か譜面、レコーディング・チャートがあれば完璧よね。

UC-16メモ

Cocos2d-x 3.11 の MessageBox が・・・。


Eclipse + ADT & Cocos2d-x 3.06 で作ったプロジェクトを Android Studio に移行していたのですが、ついでだからと Cocos2d-x を 3.11 に上げたら、MessageBox の表示が変わっているような???

なぜか2行までしかテキストを表示しないんですけど、これって、元からだったかなぁ?

複数行にわたってコピーライト表記してるので、マズイんですよねぇ。
JNI で Java で表示するかー。面倒だから、 MessageBox 使ったんだけどなぁ。

Cocos2d-x のダイアログ非対応は、結構、ネット検索してもヒットするんだけど、対応する方向じゃなくて、無くす方向に進んでいるのかしらねぇ。

【追記】

悩んでいてもしょうがいないので、やってみた。MessageBox を アラート・ダイアログに置き換えただけ。
.h は省略。

Main.cpp

void Main::AlertDialog(const char* title, const char* msg){
    InterfaceJNI::funcAlertDialog(title, msg);
}



InterfaceJNI.cpp

void InterfaceJNI::funcAlertDialog(const char* title, const char* msg){
    JniMethodInfo t;
    if(JniHelper::getStaticMethodInfo(t, CLASS_NAME, "funcAlertDialog", "(Ljava/lang/String;Ljava/lang/String;)V")){

        jstring stringArg1 = t.env->NewStringUTF(title);
        jstring stringArg2 = t.env->NewStringUTF(msg);

        t.env->CallStaticVoidMethod(t.classID, t.methodID, stringArg1, stringArg2);
        t.env->DeleteLocalRef(stringArg1);
        t.env->DeleteLocalRef(stringArg2);
        t.env->DeleteLocalRef(t.classID);
    }



AppActivity.java

public static void funcAlertDialog(final String title, final String msg){

    Cocos2dxHelper.getActivity().runOnUiThread(new Runnable() {
        @Override
        public void run() {
        new AlertDialog.Builder(getContext())
            .setTitle(title)
            .setMessage(msg)
            .setPositiveButton("OK", null)
            .show();
        }
    });
}



意外に、AppActivity 側でハマった。

runOnUiThread を使わなきゃいけないところと、引数を渡すのに final を使うところ。
って、基本じゃねーか。

拡張すれば、アラート・ダイアログのボタンを押したときのコールバックなんかも作れるかも知れませんね。
やらないけど。


【追記その2】

あ、もしかしたら、MessageBox のテキスト順序が変わったのかも知れない。

以前は、
MessageBox("表示したい内容", "タイトル");

だったけど、
MessageBox("タイトル", "表示したい内容");

という、真っ当(?)な順序になったのか? そういや、タイトルが下に来てたなぁ。

確認してみたらビンゴでした。
返して! ワタシの今日1日を返して!

Android Studio で Cocos2d-x 【cocos compile 後の No Changes to Deploy問題】


cocos compile -p android --android-studio を実行したあとに、Run しても、cpp ソースの変更が反映されないという問題ですが、 その後、調べたところ、multidex に関連しているもよう。

一瞬だけ警告が出ているみたいで、見逃していた。

なので、昨日対処した方法 を試してみる。

AndroidManifest.xml

    <application

        android:name="android.support.multidex.MultiDexApplication"
    >



アプリの build.gradle

    defaultConfig {

        // Enabling multidex support.
        multiDexEnabled true
    }


dependencies {

    compile 'com.android.support:multidex:1.0.0'
}



一応、これで、cocos compile 後に、Run するだけで、cpp の変更が反映されるようになりました。
これまでは、セーブしてから、cocos compile してたんですが、それも必要なさそうです。
良かった、良かった。


話は変わるけど、Android Studio 関連の作業中、Pure Data のことを調べていたら、libpd4unity なる物をを発見した。
Github のタイムスタンプを見るとそれほど活発な動きではないみたいだけど、ちょっと試してみたい気もする。


Eclipse + ADT & Cocos2d-x で作ったプロジェクトを Android Studio に移行する


注意:
表題の必要が出てきたので、試してみるつもりですが、上手く行かないことは想定済み。
何をやってダメだったか、あとで検証するための工程メモみたいなものなので、斜め読みしてマネしないで下さい。


環境:
Cocos2d-x 3.11
旧Cocos2d-x 3.6
Android Studio 2.11
pd-for-android (PdCore) 1.0.1
MacOSX


1. cocos new で、新たにプロジェクトを作る
既存のプロジェクトを cocos new で生成したときは、proj.android-studio というフォルダが作られていなかったので、新たに cocos new する必要がありそげ。
上手くすれば、Classes と Resources の中身を入れ替えるだけでいいんじゃね? とか、虫の良いことを考える。


2. Android Studio へプロジェクトの読み込み
いつもの手順、「Open an existing Android Studio project」 で proj.android-studio を読み込む。

3. proj.android-studio/app/jni/Android.mk と Application.mk の書き換え
こちらもいつもの手順。

Android.mk

LOCAL_SRC_FILES := hellocpp/main.cpp \
                  ../../../Classes/AppDelegate.cpp \
                   ../../../Classes/HelloWorldScene.cpp



CPP_FILES := $(shell find $(LOCAL_PATH)/../../../Classes -name *.cpp)
LOCAL_SRC_FILES := hellocpp/main.cpp
LOCAL_SRC_FILES +=$(CPP_FILES:$(LOCAL_PATH)/%=%)


に書き換え。


LOCAL_STATIC_LIBRARIES += cocos_extension_static

$(call import-module, extensions)


をそれぞれの位置に追加。

Application.mk


APP_PLATFORM = android-14

APP_ABI:=armeabi armeabi-v7a x86


を追加。


4. Android Studio の Terminal から cocos compile -p android --android-studio の実行 & Android Studio で Build > Clean project して Run
Cocos2d-x のロゴと「Hello World」の表示を確認。


5. pd-for-android(pd-core-1.0.1.aar) の読み込みと、build.gradle へ compile 'org.puredata.android:pd-core:1.0.1' の追記。
詳しい手順はこちら。一応、Run して動作確認。


6. Classes と Resources を、旧プロジェクトから新プロジェクトへコピペして cocos compile -p android --android-studio する
Run する。当然エラー。


7. 旧プロジェクト/proj.android/src/org/cocos2dx/cpp/AppActivity.java の内容を、新プロジェクトの AppActivity.java にコピペして Run
当然、エラー。見たことがあるようなエラーだったので、File > Project Structure で、アプリの Dependencies に appcompat-v7 と、support-v4 を追加してみる。
ついでに、アプリの build.gradle の、compileSdkVersion と targetSdkVersion を 23 に変更。


8. 旧プロジェクト/proj.android/AndroidManifest.xml の内容から、必要な箇所をコピペして Run
当然、エラーが出るものの、エラー内容が変わる。
自作の JNI 関数が解決できないと言われているもよう。


9. おっと、忘れた。Pd パッチを拡張子なしで、proj.android-studio/app/res/raw にコピペしなきゃ。ってか、旧プロジェクトporj.android/res フォルダの中身を、proj.android-studio/app/res へコピペ。

で、Run 。debug/AndroidManifest.xml の android:icon="@mipmap/ic_launcher" の ic_launcher と同じ名前がないと言ってるもよう。
うむ、res/drawable-xxxx の中には icon.png ってファイルしかないからね。
そう言われれば、Eclipse のときに ic_launcher の 名前を変えるというような作業をやったような気がするようなしないような。
Android Studio ではどうやるのか良く分からないので、android:icon="@mipmap/ic_launcher" の ic_kauncer を icon に書き換えて Clean project してみるも、手動で書き換えらないようなので、同じエラーが出る。
しょうがないので、icon.png を ic_launcher.png にリネームして Clean project 。
けど、エラーが変わらず。

以前、テストで新規作成してたアプリの .proj.android-studio/app/res を確認すると、drawable-xxxx が、mipmap-xxxx になっていたので、フォルダ名を変更。


10. つまり、res/drawable-xxxx/ic_launcher を、res/mipmap-xxxx/ic_launcher.png に変更して、Clean project して Run。
Error:The number of method references in a .dex file cannot exceed 64K.
Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html

ネッツ検索で、こちら様のサイト を参考にして、アプリの AndroidManiest.xml と build.gradle に追加。

AndroidManifest.xml

    <application

        android:name="android.support.multidex.MultiDexApplication"
    >



アプリの build.gradle

    defaultConfig {

        // Enabling multidex support.
        multiDexEnabled true
    }


dependencies {

    compile 'com.android.support:multidex:1.0.0'
}



で、Run したら、一応、実行できました。
基本、コピペで行けそうなので、良かった。

ダイアログ関係で、ちょっと表示系が変わっているのは cocos のバージョンが違うからかしら?


音楽ストリーミング配信というより、ちゃんと音楽を売るにはどうしたら良いのか【愚考】


LINE MUSIC の30日間の無料お試し期間が終わったあとのレビューと、そのレビューに対する反応 がネット記事になったり。
今さら何言ってんの? という気もしつつ。

賛否両論あるみたいだけど、音質を気にしなければ、Youtube とかに著作権を無視してアップされている動画で音楽が聴けちゃうので、乱暴な推論だけど、定額制から無料の方向に行くかもなぁ、という感想。善し悪しの判断はなしで。

となると、広告収入モデルになるのかな、と。
配信業者は、JASRAC に代表される著作権管理団体と定額(?)の包括契約を結んで、聞き放題サービスを受けている人に掛け放題してるわけで、その費用を含んだ諸々の経費を広告収入で賄えて、儲けが出れば良いわけ。

一方、包括契約ってのは、以前から、テレビ・ラジオの放送局では使われてきた契約方法だけど、これがクセ者で、作曲者など(著作権団体に楽曲の管理を委託している人)から、利益が公平に分配されていないんじゃないかという声が上がっていたりするのです。
包括ってくらいなんで、どの曲がどれだけ使われたかとか一々カウントしてないわけです。
ある一定期間にその類の集計を取って、それをもとに収入を分配しちゃう。
その期間に曲がテレビやラジオで流れなきゃ、たとえ、集計期間以降に曲が使われても収入がないわけですね。
まぁ、ネット配信なんで、やろうと思えば、集計取れるような気もするんですけどね。

どちらにせよ、聞き放題サービスで楽曲を配信するには、楽曲の直作権の管理委託した管理団体に包括契約を結んで貰わなくちゃならないわけです。

で、まぁ、前置きが長くなっちゃったけど、じゃぁ、将来、無料聞き放題サービスが主流になるとして、音楽を売るとしたらどういう手段があるんだろうということを、考えていたりいなかったりのバカの考え休みに似たりの愚考。

・対面販売
地下アイドルちゃんとか、ライブで物販やってますが、あんな感じ。
まぁ、メジャーには向かないけど。
とか考えてたら、地下アイドルちゃん、ライブ会場で刺されちゃったりして、これはこれで問題あるかなぁ。

・特典てんこ盛り作戦
国産アニメのDVDみたいに、ブックレットとかボーナス・トラックをつける・・・、って、もうやってるか。

うーん、あんまり出てこないなぁ。

まぁ、メジャーの人達に限って言えば、この辺のことは、事務所やレコード会社が考えてくれんだろうけど、ワタシも含めたアマチュアがね。
けっ、結局、自分のことしか考えてないのかよ。

ほぼ無料で楽曲登録できる著作権管理団体もあるけど、聞き放題サービスに楽曲が提供できるかどうかは別の話なので、聞き放題サービスが主流になると、アマチュアの曲を発表&販売できる場がなくなりそうな気もしなくもない。

動画配信サイトで発表して、話題になる→聞き放題サービスに登録?
うーん、気が長いなぁ。

なんか、この辺、聞き放題サービスが主流になると、せっかく、ダウンロード販売や、格安CDスタンプ業者さん&即売会なんかで育ってきたアマチュア音楽販売の流れが堰き止められそうな気もしますね。

うーん、まぁ、この辺を含めて考えると Sound Cloud や my space が進んでいる考え方なんだと思うんだけど、楽曲提供者への還元がないんだよなぁ。

楽曲再生数(再生時間)をキッチリ集計して、広告収入を適正に分配するシステムを作ったらどうだろうか。
まぁ、問題としては、楽曲ばかり集まって聞く人がいないとか、Youtube の違法アップロード問題みたいなことは起きるだろうなってことは、今からでも予測はつくんだよなぁ。

まぁ、でも、スマホ・アプリなら、広告収入高めの全面広告を垂れ流してても、あんまり邪魔にならないところが、音楽の良いところではある。

音楽を売るにはどうするかじゃなくて、アマチュア(著作権管理団体に属してない)の音楽をいかにお金にするかになっちゃったなぁ。

・アマチュア向けの聞き放題サービスを構築する。
・再生回数(再生時間)を集計して、広告収入をキッチリ分配する。

Android Studio 2.1 で Cocos2d-x を使ってみる【cpp ファイルの編集】


Android Studio 2.1 で Cocos2d-x を使ってみる【悲しいお知らせ】 で書きましたが、プロジェクトのClassフォルダ内の cppと h を編集するには、 別途エディターで編集するか、こちら様 の 「Classes内のソースの修正、ビルド」で紹介されているように New window でプロジェクトを開いてやるしかないみたい。

なんとか、同一の Window 内で処理できないものかとネッツ検索したところ、こちら様 を発見。

バージョンの違いからか、ちょっと手順が違ったので、備忘録。

settings.gradle で Classes と Resources を include してパスを設定するのは同じ。

setteings.gradle


で、結果を確認したけど、どうもエクスプローラーに表示されないみたいので、

Gradle projects をリフレッシュしてみた。

Gradle Projects


で、確認してみたら、Classes と Resources が追加されたので、

赤丸のドロップダウン・メニューを、 Android から Project に変更。

AS projects


すると、フォルダを開けるようになるので、編集したいファイルをダブル・クリックすると、エディターにファイルが追加され、編集可能になります。

編集したあとは、Android Studio の Terminal から cocos compile -p android --android-studio でコンパイル。

それから、Run すれば良いはずなんですが、結構な頻度で、「No Changes to deploy」が出る。

そしたら、Build > Clean Project して、再び Run 。

なんの拍子か分からないけど、たまにプロジェクト・エクスプローラーから、Classes と Resources が消えちゃうことがあるので、そういうときは慌てずに Gradle projects をリフレッシュ。

Eclipse から Android Studio へ移行する【pd-for-android 付き】の修正


昨日の Eclipse から Android Studio へ移行する【pd-for-android 付き】 ですが、もしかしたら、下記の手順のほうが大幅にラクになるかもです。

おおざっぱなインポート手順は変わりませんが、「Import Project from ADT (Eclipse Android)」 のところ、デフォルトのまま、全部にチェックを入れてインポートしてから、pd-for-android の pd-core-1.0.1.aar ファイルを追加したほうが面倒が少ないかも知れません。


AS import option


こちらの手順だと、google-play-services_lib も、自動で google-play-services に置き換えてくれるようなので、今、ムリして Firebase 対応にして、google-services.json を入手する必要はなさそうです。


Replaced Libraries with Dependencies:
-------------------------------------
The importer recognized the following library projects as third party
libraries and replaced them with Gradle dependencies instead. This has
the advantage that more explicit version information is known, and the
libraries can be updated automatically. However, it is possible that
the source files in your project were of an older version than the
dependency we picked, which could render the project not compileable.
You can disable the library replacement in the import wizard and try
again:

google-play-services_lib => [com.google.android.gms:play-services:+]



まぁ、どちらにしても、Admob 公式 の組み込み手順でも Firebase の組み込みを紹介している ので、今後は必要になるような気もしますが。

昨日、FATAL EXCEPTION で、実機でアプリが起動しなかったと書きましたが、原因はライブラリーの追加に抜けがあったからでした。
こちらの手順だと、あとで、以前紹介した手順で、pd-core-1.0.1.aar を追加&指定すれば良い ので、そういう意味でも安心かも。

で、「Select Modules to Include in Project Subset」 で、アプリ以外のものは全部チェックを外してやって、「OK」。
setting.gradle には、これらの ライブラリーが include で指定されているので、アプリと pd-core-1.0.1 以外を、不要なら削除
同じく、プロジェクトのルートに指定したフォルダに、ライブラリーのフォルダが出来ているので、削除。

というわけで、ちょっとラクかも? な手順でした。

しかし、Cocos2dx を使ったプロジェクトの移行という難題が残っているのだった。
まだ、新規プロジェクトも、まともにコンパイルできないのに・・・。




上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。