カテゴリー「Android」の42件の記事

2017年3月23日 (木曜日)

SC-04E カスタムROM、おサイフ、セルスタンバイ問題

 いまさらながらSC-04Eを購入した。DOCOMOのGalaxy S4。長いことSC-03D Galaxy SII LTEをKitKatで使っていたのだが、最新のOSを使ってみたくなり。

 SC-04Eにしたのは、単に中古でちょっと安く出ていたから。たまたま行ったブックオフで値札1万円のところ2000円OFFとのシール、すなわち8000円くらいで売られており、その場で調べる。どうやら、Android 7.0が動くらしい。その場で購入した次第。

続きを読む "SC-04E カスタムROM、おサイフ、セルスタンバイ問題"

| | コメント (0) | トラックバック (0)

2015年12月25日 (金曜日)

KORG iDS-10買った。すんげー楽しい。

 いまさら。iPod touchだと画面小さい。iPhone 6以上ならいいのかな。

 iPad 2で動かそうとしたらだめだったよ。がっかり。

 とりあえず、ボコーダー(?)は楽しい。ちまちまとパッチングするのも楽しい。まだぜんぜんわかんないけど。そういえば、iMS-20でもパッチングはほとんどやってなかった。R2D2ごっことかしたりしている。

 半額セールは28日までだよ。

続きを読む "KORG iDS-10買った。すんげー楽しい。"

| | コメント (0) | トラックバック (0)

2015年10月16日 (金曜日)

初音ミクとブラウザで会話できるやつ作った。しゃべるよ(ただし、要ポケット・ミク)

Chatscreenshot

 初音ミクと会話できるウェブサービスというかウェブアプリを作りました。ちゃんと初音ミクの声でしゃべるのがポイント。ただし、声を聞くにはポケット・ミクが必要だ(なくても会話は楽しめます)。こんな感じ↓で遊びます(動画は現在のバージョンとはちょっと違ってますが)。

(追記:2015/10/20)ポケミクなしでも音声で返答できるようにしました。詳しくは最後(追記終わり)

 パソコンだけでも楽しめますが、ポケット・ミクがあれば、より楽しめます。

 文字入力はキーボードのほか、Chromeの音声認識も利用可能(iOSを除く)。

 自分のアイコンは変更可能(会話設定)。URL指定のほか、ツイッターのIDでも指定OK。

 ポケット・ミクは設定不要で自動認識されます。

 ミクはなぜか関西弁です(NTT雑談対話API使用のため)。

 ポケット・ミクによる発声にはWeb MIDI APIというのを使用。そんなわけでブラウザはChromeを使います。iOSのChromeはWeb MIDI API未対応なので、無料で使用できるWeb MIDI Browserを使ってください。

 というわけで、以下のリンクから。


 39 Chat (仮)

 
 とりあえず、まずはブラウザだけで遊んでみてください。

 あと、APIなどの使用制限でサービスが停止する場合があります(そこまで人気が出るとは思いませんが)。その場合は翌日まで待つとかしてください。

 それと、おもしろい会話の履歴があったら教えて下さい。ニコニコ動画にアップしてもらってもいいですよ(たぶん)。ニコニコ生放送で使ってもらってもうれしいです(見に行きます&コンテンツツリー登録お願いします)。

続きを読む "初音ミクとブラウザで会話できるやつ作った。しゃべるよ(ただし、要ポケット・ミク)"

| | コメント (0) | トラックバック (0)

2015年3月27日 (金曜日)

VAIO Z1VEでAndroid-x86、タッチパッドが動作しない

 「VAIO PCG-Z1VEにAndroid-x86をインストール」の続き。内蔵タッチパッドが効かない問題の解決方法。ここにヒントが。

 Android-x86 4.4 r1 のタッチパッドが使えなくなったら(TouchPad Disabled on Boot): ムムのファイル置き場

 手順はこんな感じ。

 端末エミュレータを立ち上げ、suでrootに。

 dumpsys input | less でそれらしきデバイスを見る。「|」はShift+「む」スペースキーで2ページ目を表示、Ctrl+Cで抜けられる。2ページめに表示された「AlpsPS/2 ALPS GlidePoint」が内蔵タッチパッドの模様。ConfigulationFileの項目には、「/system.usr.idc/GenericTouch.idc」が指定されている。

 一方、「cd /system/usr/idc」して「ll」(ファイルをリストアップ、DOSでいうdir)でファイルを見ると、GenericTouch.idcは存在せず。タッチパッドのファイルらしき「SynPS_2_Synaptics_touchPad.idc」は存在し、lessで中身を見ると、確かにそれっぽい。ということで、このファイルをコピーして、GenericTouch.idcを作る。「cp SynPS_2_Synaptics_touchPad.idc GenericTouch.idc」とする。これで「reboot」すれば、無事再起動、タッチパッドが使えるようになった。

続きを読む "VAIO Z1VEでAndroid-x86、タッチパッドが動作しない"

| | コメント (0) | トラックバック (0)

2015年3月26日 (木曜日)

VAIO PCG-Z1VEにAndroid-x86をインストール

 古いマシンを有効活用したい。動作確認とかになら使えるかな、とか思い。動くまでえらく時間がかかった。テキトーに調べてテキトーに始めたらびっくりするほどはまりまくり。それでも最大解像度で起動するまではいけた。

 最初は最新が4.3しかないと思い、それでブータブルDVD-Rを焼いた(CD-Rメディアが手元になかったので。あと、USBブートできない機種なので)。起動せず。メディアから起動できるLive CDとかいうやつで起動しないので、インストールしてもやっぱりだめ。そういうもんか。やっぱり。そしたら、4.4も発見。同じページの上にちゃんとあった。最新は別の枠かあ。と思い、さっそく新たなメディアに焼く。結果は同じ。むー。

 で、さらに調べると、CentrinoなPentium M搭載機はSSE3に対応しておらず、それが原因であるという。non SSE3なビルドがあるというので、それを焼く。試す。LiveCDモードで起動。だめ。VESA Modeとかいうのも選べるので、それにすると起動する。タッチパッドはだめだけど、外付けマウスでとりあえず動く。じゃあ、HDDにインストールだ。

続きを読む "VAIO PCG-Z1VEにAndroid-x86をインストール"

| | コメント (0) | トラックバック (0)

2015年3月19日 (木曜日)

Web MIDI API、Androidでsendのtimestampが無視されるので無理やり対処

 「AndroidのChromeのWeb MIDI APIでsendのtimestampが無視されているっぽい」の続き。Web MIDI APIが持っている時間制御がうまくいかないなら時前でやるしかないんだなあ、という結論に。

 ということで、いろいろやったこと、調べたことをメモ。

 まずは、棒読みシーケンサーで作ったやつを利用しようと思ったのだけど、もっと汎用性があるものにしようと判断。オリジナルのsendメソッドに代わるものを作って追加しようと思った。  調べてみると、メソッドの上書きができる模様。新しいメソッド内にオリジナルのメソッドを入れると無限ループみたいになってしまったので、オリジナルはコピーしておいて、それを新しいメソッド内で使うことで対処。無理やり。JavaScriptの、というかプログラミングの作法がまだわかってないけど、それなりに動くようになった。

 sendメソッドのtimestampは、時間を指定する。window.performance.now()で現在の時刻(ブラウザを開いた時点からカウントアップされている)を取得し、xxミリ秒後に発音するなら、「window.performance.now() + xx」みたいな感じで指定する。以下に例を挙げる。

続きを読む "Web MIDI API、Androidでsendのtimestampが無視されるので無理やり対処"

| | コメント (0) | トラックバック (0)

2015年3月17日 (火曜日)

ポケミクに棒読みさせる - ブラウザで動くシーケンサー作った Web MIDI API

 ポケット・ミクに棒読みさせるシーケンサーをWeb MIDI APIで作りました。音楽の演奏よりしゃべらせるほうがおもしろいんじゃないかと思ったり。

 シーケンサーというのは、機械とかで自動演奏させるやつ(雑な説明)。Web MIDI APIのおかげで、JavaScriptで1つプログラムを作れば、Windows/Macはもちろん、iPadとかAndroidのブラウザで電子楽器を制御できます。こんな感じ。


ポケミク 棒読みシーケンサー / POCKET MIKU speaks in a monotone by Web MIDI API Sequencer

 ということで、試せるページはこれ。

 棒読み+ シーケンサー for ポケット・ミク(仮)

使い方

 自動演奏用のデータ、というかシーケンスは16個のスイッチのON/OFFで発音タイミングを。棒読み用なので、音程は考えない方向で。

 とはいえ、それだけだとつまらないので、音程を上下させるツマミ(ノブ)も配置。MIDI信号のピッチベンドを使用しています。一応、画像も。

Pokemikubo

 ページを開いた際にはMIDIデバイスを指定する必要あり。シーケンサーの再生ボタンを押した時にMIDIデバイスが設定されていなければ、設定用ダイアログが出ます。

 SENDと書かれたボタンが右にある入力欄は、歌詞入力用。棒読み用だから、歌詞じゃないか。

 シーケンスには2種のプリセットの読み込みと、全部消すボタンも。手抜きなので、iOSやAndroidだと反応がにぶい(タッチ対応してない)。

デバイスなどの準備

 ポケミクをブラウザで動かすには、Windows、Mac、AndroidではChromeを使用。iOSデバイスではWeb MIDI Browserを使用します(App Storeのリンクは最後)。いずれも無料です。すばらしい。

 Chromeでは最初に以下のURLをブラウザで開いて設定が必要。

 chrome://flags/#enable-web-midi

 「Web MIDI APIを有効にする」の欄にある「有効にする」 をクリックして、Chromeを再起動します。

 とか、そのへんはこのプログラムの元になったヤマハのGitHubのページ「Yamaha-WebMusic GitHubPage」に詳しい。

 Web MIDI Browserは面倒な設定は不要。すばらしい。ただ、CHromeももうすぐ上記設定が不要になる模様。

続きを読む "ポケミクに棒読みさせる - ブラウザで動くシーケンサー作った Web MIDI API"

| | コメント (0) | トラックバック (0)

2015年3月12日 (木曜日)

AndroidのChromeのWeb MIDI APIでsendのtimestampが無視されているっぽい

 AndroidのChromeを対象にWeb MIDI APIをテスト。.sendメソッドでデータを送る際にtimestampをパラメータとして与えても無視される。そのため、即時送信されている模様。「Web MIDI APIでAndroidのChromeだけで発生するタイミング問題で困っています。」の続きです。

 以下、調べてわかったこと、その時点で思ったことを時系列に記録。無駄に長い。

 テストしているプログラムの一例はこれ。

 Wrapper for Web MIDI API

 「Fire MIDI」ボタンのクリックでで、ドラミファソラシドと鳴るのだけど、AndroidのChromeでは、すべて一瞬で鳴っているのか、「プツッ」って鳴って終わり。1音だけではないような気がするけど、一瞬すぎてわからない。

 最初は使われている(と、思っていた)ライブラリWebMIDIAPI.jsのせいかと思ったら、現在のChromeではそもそも使われていない模様。Web MIDI API未対応のブラウザのためのものだったようで(何もわからず、AndroidのChromeからadbでログを拾ったりと、えんえんいろいろチェックしてしまったのだけど、なんのヒントも見つけられず。該当ライブラリが使われてないことだけがわかった)。

 で、再度、メインのプログラムを見る。データをMIDIデバイスへの送信に使われているのはsendメソッド。

 sendメソッドではポートにデータの送信を開始する時刻をtimestampで指定できるのだという。以下のリンクにあった。

 Web MIDI API (日本語訳)

 これがちゃんと機能していない。無視される。Chrome Beta(Ver. 41.0.2272.90)でも結果は同じ。

 上のドキュメントの日本語訳を見ると、timestampは「Optional」となっている。むむ。

 オプションだから、AndroidのChromeではサポートされてないのか? RFCのOPTIONALについての文章では、ベンダーの裁量により選択するみたいなことが書いてある(テキトーな解釈)。

 結局、現状ではこのtimestampに頼らずにコードを書いてなんとかするしかなさそう。

 という、素人なりの結論に達した。

 デスクトップのChromeとは別のやり方をしなくてはらないというのは、かなり面倒。どうしよう。今、手を付けているのを放り出したくなった。

 なんか勘違いだったら、逆にうれしいのだけど。

 どなたか、ご存知でしたら教えて下さい。

続きを読む "AndroidのChromeのWeb MIDI APIでsendのtimestampが無視されているっぽい"

| | コメント (0) | トラックバック (0)

2015年3月11日 (水曜日)

Web MIDI APIでAndroidのChromeだけで発生するタイミング問題で困っています。

 先日からいろいろやっている「ポケミクに音声認識でしゃべらせる」が、AndroidのChromeで動かないかな? といろいろやっているのですが、手詰まり。

 音声認識もできてるし、発音データはSysExで送れているのですが、発音がうまくいかない。数十msごとに送られるはずのNote Onがまとまって送られているのか、20文字がたった0.1秒で発音されてるという感じ。もちろん、何を言っているかはわからない。タイミングが変。

 このへんのロジックはオリジナルのKodamaそのまま。

 問題解決へのヒント的なものはここで使われているライブラリ「WebMIDIAPI.js」にありそう。
 (追記:この推測は外れでした。次のエントリに詳細あり)

続きを読む "Web MIDI APIでAndroidのChromeだけで発生するタイミング問題で困っています。"

| | コメント (0) | トラックバック (0)

2015年2月27日 (金曜日)

JavaScriptのタッチ操作ではまる。マウスイベントとタッチイベント、Bootstrapのhoverとか。

Flatkeyboardwebmidibrowser

 iOSでWeb MIDI APIが使えるようになった。Web MIDI Browserによって。ということで、プログラミングを久々に再開。PC上では動くようになったので、iOSで試してみる。反応が遅い。jQueryのせいかと思ったのだけど、そうではなく、.clickで発火させていたからだった。プログラムのタッチ対応が必要。そこでいろいろ試行錯誤。

 参考にしようとしたのは、Ryoya KAWAIさんが公開しているflatkeyboard.js」。以前試した際には、タッチイベントとマウスイベントの両方が発生するWindows 8のChromeでうまくいかず、無理やりな対処をしたのだったけど、今回、改めてチェックすると、それへの対処がすでになされていた。ラッキー。ありがとうございます。しかし、コードを読んでもいまいち理解できず。圧倒的な自分のスキルのなさを再確認。

 自分で作ったコードにあまり手を入れずになんとかできるものがないかと探したら、これを発見。

 【jQuery】コピペOK!タッチ操作とマウス操作の動作定義をまとめる | ユガラボ はてなブックマーク - 【jQuery】コピペOK!タッチ操作とマウス操作の動作定義をまとめる | ユガラボ

 最小限の修正でうまく動いた。すばらしい! ありがとうございます。

 で、動作はするようになったのだけど、表示周りで別の問題が発生。Bootstrapを使ったのだけど、PCとスマホで表示が違う。というか、マウス操作とタッチ操作で挙動が異なる。問題はhover。PCではhoverで色が変わる。マウスカーソルを外すと色が戻る。タッチだと、hoverないのだけど、タッチした時に色が変わる。離しても変わったまんま。別のボタンを押すとそちらが色が変わり、さっきタッチしていたボタンの色が戻る。そんな感じ。むむう。

 ということで、別途classを指定してそれで制御する方向に。しかし、元の擬似クラスhoverが存在するので、うまいこといかない。jQueryではhoverなどの擬似クラスは制御できないということを知る。

 CSSの疑似クラスは非DOM。JavaScript/jQueryで直接操作は不可能。style要素の動的変更で対処せよ - プログラミングとIT技術をコツコツ勉強するブログ はてなブックマーク - CSSの疑似クラスは非DOM。JavaScript/jQueryで直接操作は不可能。style要素の動的変更で対処せよ - プログラミングとIT技術をコツコツ勉強するブログ

 ということで、cssにて:hoverを上書き。hoverで色が変わるのをやめる。というか、hoverした際に、元の色になるように。オリジナルのbootstrapのcssファイルにてを付けずに、別のcssファイルを作成してそれで。今後、なんらかの差し替えがあったときに最小限の修正で済ませられるようにとの目論見。もっとスマートな方法があるんだろうけど、今の自分ではここまでしかできない。

 このほか、ボタンまわりを操作している際にスクロールしない技などもいろいろ調べる。IEのみのやつだとcssで-ms-touch-actionとかtouch-actionで、指定できたりするのだけど、そうでない場合はやっぱりイベントを見てpreventDefaultとかする必要があったりとか。そのへんも今回初めて知った。

 で、これで思った通りの動きになった。イベントリスナー的なものがいっぱいになったので、動作が遅くなってるのかもしれない(あまりわかってない)。コードもだいぶ長くなってしまった。もう少し何とかならないかと、再度、flatKeyboard.jsのコードを眺める。わからない部分をいろいろ検索しながら調べていくと、たまたまこんなのを発見。

 jquery - Javascript click and mousedown conflicting - Stack Overflow

 フラグを用意して、それで判断するという方法。短いコードでサンプルが出ているので、わかりやすかった。あらためて、flatKeyboard.jsを見たら、何をしようとしているかがわかってきた。

 こらからこれでもう一度やってみようと思う。メモ。

続きを読む "JavaScriptのタッチ操作ではまる。マウスイベントとタッチイベント、Bootstrapのhoverとか。"

| | コメント (0) | トラックバック (0)

より以前の記事一覧