2019年6月14日 (金曜日)

C#、UWPで謎のエラー

 Windows 10をMay 2019 Update(Version 1903)にしたら、Visual Studioで作成中のプロジェクトが謎のエラーを吐く。ひどく参った。

 それまでは問題なくビルドもでき、Windows アプリ認定キットでも合格していた。それが、アップデート以降、アプリ認証キットが通らない。

 まず気になったのは、これ。

修正されない場合は影響あり: JavaScript の実行時間を高速化するパフォーマンスの最適化として、アプリの展開時にファイル名が ".js" 拡張子で終わる JavaScript ファイルはバイトコードを生成します。この最適化は JavaScript の起動時および継続的な実行時間を大幅に改善します。

 いやいや。C#だって。JavaScriptじゃないよ。

 というわけで、いろいろエラーメッセージで検索すると、
 「そのままストアにアップロードしたらエラー出なかったので無視してOK」
 「Visual Studio 2017を2019にアップグレードしたらエラー消えた」

 といったのが出てくる。確かに前者はOK。しかし、不安は残る。後者も試したが状態変わらず。

» 続きを読む

| | コメント (0)

2019年6月13日 (木曜日)

ヤマハCBX-K1 XGのローカルオフ

 いつも忘れるのでメモ。

 トップパネル上には、MERGE ON/OFFがある。SHIFT+A2 を押すたびにON/OFFが切り替わる(SHIFTボタンは押したままで操作。以下同)。

 これは、MIDI INからのデータをMIDI OUTにそのまま出力するもの。もう1台のキーボードをつないで、1台の音源を共有するという使い方だろう。今回の本題はこれではない。

 ローカルON/OFFもこのSHIFTとA2を使うのだが、その前にいったん別の操作が必要。正しくは

 SHIFT+DECIMAL ENTER(右端のキー)
 SHIFT+A2

 これでOK。この間、SHIFTは押しっぱなしだ。A2を押すたびにディスプレイ上のON/OFFが切り替わる。

 毎回操作を忘れてマニュアルを見るはめになる。

» 続きを読む

| | コメント (0)

2019年6月 4日 (火曜日)

Windows 10 May 2019 UpdateのMIDI over Bluetoothの不具合

 Windows 10 May 2019 UpdateでMIDI over Bluetooth(BLE-MIDI)の不具合が発生している。一部のデバイスで、MIDI INが正常に動作しない。アップデート前までは普通に利用できていたものが、だ。完全に解決したとは言えないけど、ある程度解決策っぽいのが見つかったのでメモ。

 MIDI IN。Windowsに入力する側が動作しない。逆のMIDI OUTは正常に動作する。それが謎。デバイスとしてはINもOUTもちゃんと認識しているし、接続されているように見えるのだけど。そうそう。前提として、UWPアプリでの話。SONARとかMIDIberryとか。

 手元にあるもので、不具合が発生しているのは、以下のもの。

  • Quicco Sound mi.1
  • BBC micro:bit (INのみ)
  • Roland A-01

 逆に、問題ないのは以下のデバイス。

  • ROLI Lightpad Blocks
  • M5Stack M5Stack

 このうち、micro:bitとM5Stackはいわゆるマイコンで、MIDIコントローラーにするためのプログラムを書いたもの、という状態。そのプラットフォームでは一般的なライブラリを使っているので、他の人もカンタンに試せるものと考えている。で、M5StackはMIDI入出力に対応するのだけど、micro:bitは純正のBLE-MIDIのライブラリが入力のみの対応なので、「INのみ」と注釈をつけている。

 とりあえず、これが2019年6月初頭の状況。

 

» 続きを読む

| | コメント (0)

2019年5月20日 (月曜日)

Web Bluetooth / BLE-MIDIをカンタンに試せるウェブアプリを作る

Webbluetoothplaying ウェブブラウザChromeで動くやつ。Web Bluetoothを使って。

 DIYなBLE-MIDIデバイス(MIDIコントローラー)を作っているのですが、そのテスト中に何度もOSのBluetooth設定をいじる必要があります(ペアリングを繰り返したり、解除したり)。それが面倒なのもあり、作ってみました。OS側ではBluetoothをONにするだけ。あとは、ウェブアプリ側で操作が完了します。MIDIを受信して音を鳴らす機能もあるので、別途シンセやDAWを起動する必要もなし。

 ということで、ChromeがサポートするWeb Bluetoothを使ったウェブアプリです。

» 続きを読む

| | コメント (0)

2019年5月17日 (金曜日)

Orbitの初期化方法

 忘れないようにメモ。

» 続きを読む

| | コメント (0)

2019年5月15日 (水曜日)

M5Stackの種類を判別したいのだが

 M5Stack GreyとM5StickCの判別をしたいと思い、いろいろ試行錯誤。

 ライブラリを作成中。両方で動くようにしたい。
 機種に合わせて処理を変えたい(画面サイズが異なる)。

 といった感じ。
 最初は、「_M5STACK_H_」と「_M5STICKC_H」が定義されているかどうかを調べればいかと思ったのだけど、その前に

 #include  とか
 #include

 をライブラリのファイルに入れなくちゃいけないわけで。その時点で破綻している。

» 続きを読む

| | コメント (0)

2019年4月16日 (火曜日)

M5Stackで雑IRモジュール&TVリモコン

M5stackirmodule

 M5StickCで赤外線リモコンを作っていたのだけど、UIまわりが面倒なので、M5Stackでやり直し。

 UIまわりはメニューが簡単にできる M5Stack TreeView menu UI library を使用。

 モジュールの作り方とか、スケッチの詳細は後ほど。

» 続きを読む

| | コメント (0)

2019年4月15日 (月曜日)

M5Stackで赤外線リモコン 家製協(AEHA)フォーマット

 M5StickCで赤外線リモコンの続き。ほぼ同じコードをM5Stackで動かそうとする。そこで気づいた話。Panasonicで使われる家製協(AEHA)フォーマットがうまく動かないという話だ。

 前回もなんかおかしいとは思っていた。東芝のTV、REGZAは問題なく動く。しかし、PanasonicのブルーレイレコーダーDIGAがうまくいかない。JavaScriptでRawDataを作ってM5Stackに送るのは問題ないのだが、カスタムコード+コマンドデータを送る方法だとだめなのだ。

 ライブラリはこれ。前回紹介したやつ。
 SensorsIot/Arduino-IRremote: Infrared remote library for Arduino: send and receive infrared signals with multiple protocols

 これの sendPanasonic を使うのだけど、うまくいかない。

 数回送って、たまに反応する、みたいな感じだ。10回中9回は空振りする感じ。

» 続きを読む

| | コメント (0)

2019年4月10日 (水曜日)

M5StickCで赤外線リモコン

 M5StickCは赤外線のLEDを内蔵している。となれば、家電リモコンを作るしかないのです。

 1年くらい前からESP8266でリモコン作りをしているので、カンタン。と思ったものの、ESP32搭載のM5StickCはいろいろ違うのでした。そうこうしているうちにまず試したのがこんな感じ。


 M5StickC IR Remote

 M5StickCのサンプルにIRを使ったものがあり、一見よく知ってるライブラリっぽいと思ったのですが、どうやってもうまくいかず(使用するリモコンコードの並びが違うっぽい)。そこで、今まで使ったことがあるライブラリから物色。

» 続きを読む

| | コメント (0)

2019年4月 9日 (火曜日)

ESP32でWiFi Manager、設定を消去

 M5StickCをテスト中。ウェブサーバー機能を使うので、WiFiのSSIDなどの設定をカンタンにできるWiFi Managerを使用。いろいろうまくいかない。
 参考にしたのはこれ。

ESP32 WiFiのSSID、パスワードを外部から設定しアクセスポイントに接続 - Qiita

 WiFi Manager for ESP32 zhouhan0126/WIFIMANAGER-ESP32: wifimanager-esp32 を使ってみるが、うまくいかない。コンパイルができない。いろいろ探して、これにした。Brunez3BD/WIFIMANAGER-ESP32: wifimanager-esp32

 で、場合によっては一度設定したSSIDやパスワードを消去したいこともあろうと思い調べる。最初のリンクにはこうある。

記憶されたAP情報はESP32では以下のメンバ関数ではクリアできない。
wifiManager.resetSettings();
EEPROM情報をクリアする場合はESP-IDFのプロジェクトライブラリで以下のコマンドを実行する。
$ make erase_flash

 ESP32では、スケッチ側でできないのか? 参った。

 さらに調べる。 WiFi.disconnect(true); でOKという情報もあったけど、うまくいかない。とか思ってたら、ここにあった。

 WiFi.disconnect(true) problem · Issue #400 · espressif/arduino-esp32

 WiFi.disconnect(true) のあとに WiFi.begin("0","0"); するのがポイントらしい。

 ということで、書かれているように、情報を消去してからリセットすることに。リセットのあとにdelayを入れるのも重要らしい。

  WiFi.disconnect(true);   // still not erasing the ssid/pw. Will happily reconnect on next start
  WiFi.begin("0","0");       // adding this effectively seems to erase the previous stored SSID/PW
  ESP.restart();
  delay(1000);

 あとは、メインの処理を書いていくだけだ。がんばろう。

| | コメント (0)

«M5StickC届いた