「ひろの」の徒然日記帳 [IT tools, programming, software and more...]

プログラミング、ITツール、人工知能等興味のあることを徒然と書きます。Microsoft、C#が好きです

Xamarin Live Player でWindows環境だけでのiOSアプリ開発

ひろのです。

梅雨が近づいてきてPCつけっぱなしの部屋だと蒸し暑さが出てきました。
クーラーをつけずに我慢していましたがそろそろ限界&パソコンが大丈夫か・・も心配。

さて、通常iOSアプリの開発には、Macの環境が必須です。
Xamarinを使うことでコーディング等はWindows上でできますが、
ビルドはMac側で実施されます。

そんな中、Build2017でXamarin Live Playerが発表されました。
噂によるとWindowsiPhoneだけでアプリが作れてしまうとか・・。


www.xamarin.com




1. 初回はVisual Studio上のQRコード
iOSアプリ(Xamarin Live Player)でスキャンし、接続します。
2. Xamarinを使ってVisual Studio上で開発したアプリが動作しながらデバッグもできる

といった流れのようです。

iOSアプリも出ています。

f:id:ino-hiro1012:20170513183140p:plain



Setup方法や環境は以下に詳細があるのでそちらを参照。
どうやら今のところ Visual Studio 2017 15.3 Preview版で動作する模様。ここは注意。

Xamarin Live Player Setup - Xamarin

発想としてはC#XAML等のソースやリソースをインタープリタ的に
Xamarin Live Player上で実行しているようですね。
便利な世の中です^^

15.3 Previewの環境を導入してから試してみる予定です!

旧Visual Studio2013, Visual Studio2015 Preview/RC 等の一括アンインストールツール

こんにちは。

まだまだ花粉症の「ひろの」です。


Visual Studioの環境をインストールしているといつの間にかよくわからないソフトウェアが
「アプリと機能」「アプリケーションの追加と削除」画面にあふれていることありませんか?

Microsoft純正のツールで一括削除出来ると聞いたので、
幾つかのパソコンでやってみました。

Visual Studio Uninstaller

github.com

  1. ソフトウェアのダウンロード
  2. ダウンロードしたファイルを解凍
  3. 管理者権限でコマンドプロンプトを実行
  4. Uninstaller(Setup.ForcedUninstall.exe)を実行
  5. 確認で「Y」を押して開始

手順にそって実施していくだけですね。凄くシンプルです。

Twitterライク!自由でオープンなMastodonの構築 ( AWS EC2 - Ubuntu 16.04 - Docker環境編 )

ひろのです。


ちょっとBlog書いていなかったけど、
久しぶりに書き留めたいような内容だったので書いてみる。

Mastodonというサービスが急にはやり始めているようなので早速構築してみました。
Twitter風なオープンソースな分散型なサービスのようです。


github.com


構築してみた環境前提

  1. AWS EC2
  2. (Ubuntu Server 16.04)
  3. (Docker)
  4. (Docker-compose)

AWS環境構築

EC2でUbuntu16.04をベースにインスタンスを立ち上げ。
特に変わったことはしていません。

Dockerの導入

いろいろ作った環境をさくっと戻したりするのに便利です。

Docker composeの導入

Mastodon 公式で便利な設定を用意してくれているので
コマンド一つで沢山の環境が構築できます。


手順

GitからMastodonをClone

git clone https://github.com/tootsuite/mastodon

設定を変更する

cd mastodon
cp .env.production.sample .env.production
vi .env.production

特に設定しておくのは以下のあたり。
1.ドメインSSL有効かどうか。無効にする場合はfalse
2.各種Keyの設定。これは後でコマンドで3つ作り、
それをコピー&ペーストして設定する。
3.メール関連の設定。

LOCAL_DOMAIN=example.com
LOCAL_HTTPS=true

PAPERCLIP_SECRET=
SECRET_KEY_BASE=
OTP_SECRET=

SMTP_SERVER=smtp.mailgun.org
SMTP_PORT=587
SMTP_LOGIN=
SMTP_PASSWORD=
SMTP_FROM_ADDRESS=notifications@example.com

Keyは以下のコマンドで。最初だけは各種ビルドが走るので遅いです。
このコマンドを3回実行して、3回ともに表示されるKeyを設定します。
PAPERCLIP_SECRET, SECRET_KEY_BASE, OTP_SECRETのところ。

docker-compose run --rm web rake secret

実行。

docker-compose run --rm web rails assets:precompile
docker-compose run --rm web rails db:migrate
docker-compose up

東京リージョンの場合は、以下のようなURLでアクセスするとMastodonが表示される?!
AWSのセキュリティグループで3000番をあけてください。
http://ec2-XXX-XXX-XXX-XXX.ap-northeast-1.compute.amazonaws.com:3000

こんな感じのログイン画面が表示されたら成功です!

f:id:ino-hiro1012:20170415004829p:plain

一旦ここまで。

Linux各種コマンド(scp tar rm cp ls vi kill)

ひろのです。

引っ越し後にルーターを11ac対応に変えました。
今まではあまり気にならなかったのですが、家全体が縦長になり、
ルーターの位置とPCやスマートフォンを利用する距離が遠くなり
気になった次第です。
今まで使っていたのは11nまで対応していたのですが、
少しでも速度も早くなればと思って買い換えました。
buffalo.jp
5,700円程で購入出来たので一昔前に比べるとこの性能の割には
かなり安くなったと思っています。

速度実測は20~30Mbpsといったところです。(インターネット越し)
実際の使用感としては、引っ越し前とあまりかわらず快適に使えています。


Linuxの各種コマンドについての自分用メモです。
よく使うものを纏めています。
各種オプションの詳細は他サイトも確認下さい。

scpコマンド (ファイルのダウンロード、アップロード)

scp (コピー元) (コピー先)


scp username@host:~/tmp/data /tmp
hostホストから、usernameユーザーで
~/tmp/dataデータをローカルの/tmpに
ダウンロードしています。

tarコマンド(tar.xzファイルを展開)

tar Jxvf (tar.xz形式の圧縮ファイル名を指定)



tar Jxvf archive.tar.xz
展開されます。

rmコマンド(ディレクトリ削除)

rm -r target_dir

cpコマンド(コピー、ディレクトリ内含む)

cp -r source_dir target_dir

  • rオプションでディレクトリ内ファイル毎コピーできます。

lsコマンド(ファイル一覧表示)

ls -al

  • aオプションで.ファイル表示します。
  • lオプションで詳細表示します。

vi内(文章内で文字列全体置換)

viのコマンドで文章全体の置換

:%s/置換え前/置換え後/g


:%s/aaa/bbb/g
文章内のaaaを全てbbbに変更します。

killコマンド(プロセス終了)

kill -9 xxxx

xxxはプロセスのID

Essentia & Gaia により音響解析 ( Ubuntu 14.04環境編 )

ひろのです。




前回まではMac OS上にて構築し解析していましたが、
VagrantUbuntu環境で再度構築したので記事にしました。



MacOS記事は以下となります。
ino-hiro1012.hatenablog.com

手元にはVagrantのBoxファイルありますが、容量が1GB程なので未公開です。



環境前提

  1. Ubuntu14.04
  2. Vagrant環境(Virtual Box含む)

Essentiaの導入

Essentia ダウンロード先。Ubuntu14.04はv2.1_beta2である必要があります。
https://github.com/MTG/essentia/archive/v2.1_beta2.zip

test/audioフォルダのみ下記よりダウンロードします。
https://github.com/MTG/essentia/releases/tag/v2.0.1

High-Level解析用のGaiaライブラリは以下よりダウンロードします。
https://github.com/MTG/gaia

Gaia動作用に必要なSVMは以下よりダウンロードします。
http://essentia.upf.edu/documentation/svm_models/

Gaia動作用のhistoryファイルの作成方法は以下となります。
http://essentia.upf.edu/documentation/streaming_extractor_music.html



必要ライブラリの導入

sudo apt-get install build-essential libyaml-dev libfftw3-dev libavcodec-dev libavformat-dev libavutil-dev libavresample-dev python-dev libsamplerate0-dev libtag1-dev
sudo apt-get install python-numpy-dev python-numpy python-yaml

Gaia ビルド&インストール

デフォルトだとメモリ不足によりビルドが通らないので
VirtualBoxより該当仮想マシン設定でメモリを2GBに手動で増やします。

sudo apt-get install build-essential libqt4-dev libyaml-dev swig python-dev pkg-config


Gaiaソース配下にて以下を実行します。

./waf configure --download
./waf
sudo ./waf install

Essentiaビルド&インストール


point.h が足らないのでGaiaソースよりコピーしておきます。
sudo cp (gaia_src)/src/point.h /usr/local/include/gaia2/parser/



Essentiaソース配下にて以下を実行します。

./waf configure --mode=release --with-python --with-cpptests --with-examples --with-vamp --with-gaia

(2.1beta2だと--build-staticは外す)

./waf
sudo ./waf install
./waf run_tests でテスト実行できます。

その後の実動作はMacOS版と同様となります。

Essentia による音響解析 Gaiaライブラリ編

ひろのです。


最近パンにはまってます。同じクルミ入りのパンでも店によってかなり味が違う。。
新居の周りにはパン屋がなぜか多いので色んな所をめぐってるところです。
食べ過ぎないように気をつけよう。
www.super-kinokuniya.jp



音響解析について音源からLowLevelの解析以外に、ジャンルや男性女性ボーカル、カラオケ版か
どうか等、より深い解析ができるのでその方法を記載しました。

High-Level解析の為にGaiaインストール&ビルド&サンプル実行です。

Music extractor — Essentia 2.1-dev documentation

High-Levelにて取得できる項目は以下となります。
http://essentia.upf.edu/documentation/svm_models/accuracies_v2.1_beta1.html


導入

Essentia基本環境

前回記事を参考に構築
ino-hiro1012.hatenablog.com


Gaia2をインストール

gaiaをDL&解凍 https://github.com/MTG/gaia/tree/master
brew install gaia --HEAD
./waf configure --download
./waf
./waf install

(gaia src)/src/point.hファイルだけ/usr/local/include/gaia2/parser にコピー必要しておく。
cp /(gaia_src)/src/point.h /usr/local/include/gaia2/parser/

essentiaの設定変更

以下はGaiaではなく、Essentiaのソースは以下のwafに対してです。
./waf configure --mode=release --build-static --with-python --with-cpptests --with-examples --with-vamp --with-gaia
「--with-gaia」を追加。
./waf
./waf install

サンプル実行

YAMLファイルを作成。(例:sample.yaml) 取得したい値により変更します。

highlevel:
compute: 1
svm_models: ['svm_models/genre_tzanetakis.history', 'svm_models/mood_sad.history']

すべて取得したい場合は以下のような指定になります。

highlevel:
compute: 1
svm_models: ['svm_models/danceability.history', 'svm_models/gender.history', 'svm_models/genre_dortmund.history', 'svm_models/genre_electronic.history', 'svm_models/genre_rosamerica.history', 'svm_models/genre_tzanetakis.history', 'svm_models/ismir04_rhythm.history', 'svm_models/mood_acoustic.history', 'svm_models/mood_aggressive.history', 'svm_models/mood_electronic.history', 'svm_models/mood_happy.history', 'svm_models/mood_party.history', 'svm_models/mood_relaxed.history', 'svm_models/mood_sad.history', 'svm_models/moods_mirex.history', 'svm_models/timbre.history', 'svm_models/tonal_atonal.history', 'svm_models/voice_instrumental.history']

http://essentia.upf.edu/documentation/svm_models/ からhistoryファイル等を取得し、
build/src/examplesに配置

(1) essentia_streaming_extractor_music sample.mp3 result.txt
※Essentiaにて解析。
(2) essentia_streaming_extractor_music_svm result.txt result2.txt sample.yaml で実行
_svmを付ける
※Essentiaいて解析した結果ファイルを引数にGaiaにて解析。

http://essentia.upf.edu/documentation/svm_models/accuracies_v2.1_beta1.html
取得出来る値は上記の通りとなります。

Genreについての補足は以下が参考になります。
https://acousticbrainz.org/datasets/accuracy


moods_mirexについては以下が参考になります。

http://www.music-ir.org/mirex/wiki/2015:Audio_Classification_(Train/Test)_Tasks

Cluster_1: passionate, rousing, confident,boisterous, rowdy
Cluster_2: rollicking, cheerful, fun, sweet, amiable/good natured
Cluster_3: literate, poignant, wistful, bittersweet, autumnal, brooding
Cluster_4: humorous, silly, campy, quirky, whimsical, witty, wry
Cluster_5: aggressive, fiery,tense/anxious, intense, volatile,visceral

[Excite翻訳]
Cluster_1:情熱的であること、起きること、自信があること、騒々しいこと、乱暴者
Cluster_2:大いに楽しむこと、快活であること、および楽しみ、甘味 性質なので、好意的/よい
Cluster_3:教育のある人、痛烈で、物欲しそうで、ビタースイート、秋であり、卵を抱く
Cluster_4:ユーモラスで、馬鹿、ホモっぽく、奇抜で、気まぐれで、機知に富み、皮肉である
Cluster_5:攻撃的で、火であり、緊張/心配し、強烈で、揮発性で、本能的である

[Google翻訳]
Cluster_1: 情熱的な活発な自信を持って、騒々しい、騒々しい
Cluster_2: 陽気、陽気な楽しい、甘い、愛想のいい/良い温厚な
Cluster_3: 読み書き、痛烈な哀愁を帯びた、ほろ苦い、紅葉、陰気な
Cluster_4: ユーモラスな愚かな、古くさい、風変わりな、気まぐれな、機知に富んだ、皮肉
Cluster_5: 積極的な激しい、緊張・不安、強烈な揮発性、内臓

手元の楽曲数が多かったので、リストを事前に作り、
リストを個別に読み込ませながら複数のコア(CPU)で実行させました。
数十万曲とかあると結構日数かかりそうです。。

Essentia C++版による音響解析(サンプル動作編)

ひろのです。


会社で金平糖をいただき、久しぶりに食べました。
なかなか美味しいです。
商品のご案内|金平糖は京都の老舗、緑寿庵清水



先日環境を作った Essentia によるサンプル動作を行いました。
音源はもともと用意されていたものではなく、手元にあった音源を使いました。

Essentia は C++版を利用します。
MP4データだったのでFFmpegを利用してMP3に変換しました。
FFmpeg


導入

音源の変換 MP4からMP3へ

変換したいMP4のファイル名、返還後のMP3のファイル名の順で指定するだけです。

$ ffmpeg -i filiname.mp4 filename.mp3

C++版動作

ビルド後のサンプルフォルダに移動し、用意されている実行ファイルを
実行します。第一引数は音源ファイル(MP3)、第二引数が出力ファイルです。

$ cd ./essentia-master/build/src/examples
$ essentia_streaming_extractor_music sample.mp3 result.txt

Music extractor — Essentia 2.1-dev documentation
が出力されます。

追記

あとあと分かりましたが、EssentiaではMP4のまま
Loadすることが出来ました。ffmpegによる変換は不要ですね。