ATTINY2313とか

ちょっと流行を逃している感じだけど、ATTINY2313へプログラムを書き込める環境を用意。とは言っても大したものではなく、中華製の激安USBAVRライタと、20pinのZIF-ICソケットを準備してブレッドボード上で配線しただけ。しかしUSBAVRライタを準備したことでドライバの動作について意識する必要がほぼなくなったのが嬉しい。今までCH340搭載のArduino Nano互換機のドライバの動作にイライラしたり、FT232RLのFTDIドライバでイライラしたりだったけど。USBAVRライタ経由に置き換えちゃうことにしよう。

開発環境としてはArduinoIDEにATTINY用の定義ファイルをインクルードして、スケッチの書き込みができるところまで確認。ここまでは順調。

お決まりの罠としてBODか外部クロックの設定をしようとしてヒューズビットを書き換えてしまい、それ以降書き込みできなくなる現象に当たってしまった。ので、ヒューズリセットについて色々調べる回り道が生じた。たぶんこのマイコン使うには必要な知識なんだろう。一度書き換えると感嘆には元に戻せないという性質から、トラブルが起きたときの切り分けが難しい部分なので、悩んだらすぐにリセットできるようにヒューズリセッタを準備しておいたほうが良いと思った。そのうちユニバーサル基板上でリセット回路組もう。

 

ロータリエンコーダのマトリクス

rotary_matrix複数のロータリエンコーダの回転の検出続き。

用意したロータリエンコーダはALPSのEC11互換品を謳うもの。ALPSのサイトのデータシートによれば、ロータリエンコーダの内部回路はスイッチが二つ並列になっているだけのように見える。エンコーダ16個ならばスイッチが32個分ということで、シフトレジスタを用いた単純なIOポートの増設よりもキーマトリクス回路の方が良いのではないかってことで回路図を書いた。

Webではロータリエンコーダをマトリクスで構成するという作例があまり見つからなかった。この回路図で期待通りの動作をするかは未検証。たぶんA相とB相の信号が逆流しないようにダイオードを入れる必要がある気がする。エンコーダの内部構造がフォトカプラなら逆流しないので不要だと思うが。

外装の話となるが、ケース上のエンコーダの配置は4×4になるようデザインする予定。Chiptuneのようなイメージ。今鳴っているステップが判別できるように、エンコーダのそばにLEDも光らせたい。なので、回路の話に戻るが、マトリクス回路上にLED点灯用のラインも引き回し。また、エンコーダはプッシュスイッチもついているので、スイッチの判定用のラインも引く。

ここまででちょうど64bit分の入出力となったので、16ポートのIOエクスパンダであるMCP23017を使うと簡単に制御できそうだが、I2Cなので制御用マイコンを選ぶ必要がある。手元に使っていなかった74HC154が転がっていたので、ひとまずこの回路で実験して見る予定。

2016近況

お久しぶりです。

気がつけばあっという間に2016年。なんかもう、1年という単位の重みを忘れかけてる今日この頃です。
ここDIGINOIZ:NETについてはドメイン維持する価値もほとんどないなぁ~と思いつつ、愛着あるドメインなもので、それでもレンタルサーバ代もばかにならないので自宅サーバに移管でもして最小コストで運営したいなと思うところですが、PCとかNet系で試行錯誤していた頃のモチベーションの引き出し方の感覚を失ってしまい、一言で言うと年取りました。

最近の趣味嗜好で言えばある意味で老化したというか先祖返りを起こしてしまい、自分に取っておそらく最初の趣味となった電子工作に再び興味が沸いています。きっかけは多分MonotribeのMIDI改造をしたあたりだと思うんですが、最近のマイコン搭載機器をちょっとまじめにハックしてみたいな的なノリで、中華製の激安ロジアナ買って波形見てみたり、オシロ買ってみたり、Arduinoの開発環境揃えてみたり、ロジックICの原理を復習してみたり。おかげでAliExpressで100pcsのパーツ注文するのにさほど悩まないレベルまでにはなって来ました。積みパーツですが。

いま製作しているのは16ステップのMIDIシーケンサです。もともとは半固定抵抗器いわゆるボリュームを16個、アナログマルチプレクサに接続してボリューム値をMIDIノートに変換して…というのは半日でできてしまったんですが、ステップをいじるボリュームに複数のパラメータ(最低でもノート長とベロシティくらい。できれば設定画面からパラメータも編集したい)を持たせたかったので、そうすると操作性の感覚からどうしてもロータリエンコーダを使いたくなり、さて16個のロータリエンコーダの制御はどうしたものか…と悩んでいるような。手持ちの部品だと74HC165が大量にあるんで、ロータリエンコーダの2ビットの出力を上位2ビットずつ165に入れていこうかなとか、これだと165は4つ必要になるのでもっと手軽な方法はないか模索してる最中です。

こんな感じで、ぼちぼちやっていきます。

2014近況

久々に更新。

ここ数年ですっかりMac使いになった。自宅でWindows触ることはめっきり減った。
基本iPhoneか、たまに寝ながらiPad使う。家計管理とか諸々はMacbookで。

ようやくMBPのSSDを256GBに換装した。
標準のSSDは64GBだと勘違いしていたので4倍になった!と喜んでいたのだけど、ほんとは128GBだった。
4倍になったと思ったら2倍にしかなってなかった。それでも十分足りてるけど。

嫁さんがHP作りたいと言っていたので、ここのdiginoiz.netドメインにサブドメインを設定してみた。ちょっとトリッキーな手段で実現したのでなんか問題あるかもしれない。しばらく様子見。

 

4曲目

いちおう、iPad+BeatMaker2で作成したデモ。

悪い意味で、自分の力量が見えた1曲。

無計画に作り始めて、いろいろ実験しつつ、3ヶ月くらいダラダラといじっていた曲。

結局、手を加えるほどに不満になるだけというのを思い知りました。

備忘録的に制作環境:

  • iPad2+BeatMaker2(DAW)
  • iKaossilator
  • Monotribe(MIDI化)
  • KAOSSPAD QUAD
  • ioDock

スケールはF、コードはI→II→IIImのひたすら繰り返し。何の捻りもない。

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

3曲目ですよ

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

んー、トランスです。

眠る前にでもどうぞ。

Evernote for Windows付属のENScript.exeを使う

EvernoteのAPIとか調べていたら、Windows版にはコマンドライン版のフロントエンドが添付されていることを知った。
どれどれとヘルプをざっと見た感じ、ちょっとは使えそうなものがあった。

個人的に大発見だと思ったのは、コマンドラインから検索クエリを実行できる ENScript showNotes というコマンド。

これはEvernoteの検索ボックスの代用として使えるコマンドなのだけど、ランチャーにこのコマンドを登録しておけば”保存された検索”の代用としても使えるよなぁと思い、実際に CLaunch というランチャーソフトに登録してみたという図がこれ。ランチャに登録したことで並び替えも自由にできるようになって、かなりいい感じ。

その他まとめ。

  • 標準入力や標準出力が使えるのは便利。
  • Evernote重いよ!という場合。 ENScript createNote と ENScript syncDatabase を使えば、Evernote for Windowsを起動させずにノートの作成、同期ができる。
  • 保存された検索に一気に飛びたいよ!という場合。ENScript showNotes /q “your_query” をランチャーソフトに登録してしまえ。
  • 重複されたノー トを一気に消したいよ!という場合。exportNotes と createNotebook と importNotes とPerl/Pythonなどのスクリプト言語の組み合わせで何とかなるかも。

全てのコマンド一覧もちょっとした解説つきで載せておきます。個人用メモなので内容は保証しません。

Usage: ENScript createNote [options]

Option:

/s file        file containing the plain text note contents. If omitted, note contents are read from standard input.
/n notebook    notebook to create the note in. If does not exist, lazy create. If omitted, use default notebook.
/i title    specifies note title. If omitted, note title will be generated automatically.
/t tag        specifies note tag. If tag does not exist, lazy create it. Use multiple /t options to specify multiple tags.
/a filename    specifies file attachment. Use multiple /a options to specify multiple file attachments.
/c dttm        note creation date/time. { “YYYY/MM/DD hh:mm:ss” | filetime }. If omitted, use current time.
/u username    user name if not the same as database file name.
/p password    user password to confirm Evernote service access.
/d database    database file name if user name is not specified.

If both database file name and user name are not specified, last login name is used and
if there is none, USERNAME environment variable value is used as a user name.

解説:

/sで指定した既存のファイルから新規ノートを作成する。
/sを省略した場合は、標準入力から新規ノートを作成する。パイプ処理も可能。
作成先のノートブックの指定、タイトル、タグ、作成日付、添付ファイル(プレミアム会員のみ)などを同時に指定できる。
存在しないタグは自動的に作成する。複数のタグを一度につけるには/tを繰り返す。
例えばtag1, tag2, tag3という3つのタグをつけるには、/t tag1 /t tag2 /t tag3 … と指定する。

サンプル:

$ dir /b | ENScript createNote /t file_list /t mypc

注意:

作成しただけでは同期されていないので、後述のENScript syncDatabaseコマンドを用いるか、Evernote for Windowsから同期ボタンを押す必要がある。
/c dttmで日付指定をすると、9時間先の時間(標準時間)になってしまう(バグ?)。
/c を省略した場合は、ローカル時間が正常に反映される。

TIPS:

メールでノートを作成する場合と異なり、存在しないタグは新規に作成する。これを利用すると大量のタグを一気に作成できる。日付別のタグ とか。
た だし、子タグを作ることはできない感じ。

Usage: ENScript importNotes [options]

Option:

/s {file|url}    source .enex file or url. If omitted, stdin is used to gather source specification.
/n notebook    notebook to create the note in. If does not exist, lazy create.
If omitted, use default notebook.
/u username    user name if not the same as database file name.
/p password    user password to confirm Evernote service access.
/d database    database file name if user name is not specified.

If both database file name and user name are not specified, last login name is used and
if there is none, USERNAME environment variable value is used as a user name.

解説:

上級者向け。
.enexという形式のファイルをインポートする。.enexとはEvernoteのデータベースをXMLとして出力したものである。
.enexの形式については後述のエクスポート機能で.enexファイルを出力させてテキストエディタで見てみれば分かる。

Usage: ENScript showNotes [options]

Option:

/q query – query to filter the notes. If omitted, stdin is used to gather query specification.
/u username – user name if not the same as database file name.
/p password – user password to confirm Evernote service access.
/d database – database file name if user name is not specified.

If both database file name and user name are not specified, last login name is used and
if there is none, USERNAME environment variable value is used as a user name.

解説:

/qで指定したクエリに該当するノート群をEvernote for Windows上で表示する。
/qを省略した場合、標準入力からクエリの入力を待つ。

Evernote for Windowsの検索ボックスからクエリを入力した場合と同じ動作を行う。
Evernote for Windowsが起動していない場合は、Evernote for Windowsを自動で起動させたうえ、前述の動作を行う。
/q でクエリを指定するとき、クエリにスペースを含む場合はクエリ全体を “” で囲む。

サンプル:

タグに”evernote”を含む、1週間以内に作成されたノートをEvernoteで表示

$ ENScript showNotes /q “tag:evernote created:day-7”

TIPS:

Evernote for Windowsの”保存された検索”が使いづらいよという人は、このコマンドを適当なランチャソフトに登録すると幸せになれるかも。

Usage: ENScript printNotes [options]

Option:

/q query – query to filter the notes. If omitted, stdin is used to gather query specification.
/u username – user name if not the same as database file name.
/p password – user password to confirm Evernote service access.
/d database – database file name if user name is not specified.

If both database file name and user name are not specified, last login name is used and
if there is none, USERNAME environment variable value is used as a user name.

解説:

おそらくshowNotesコマンドの旧バージョン(未確認)。Evernote for Windows 3.5.4.2343では正常に動作していないように思う
筆者の環境ではEvernote for Windowsのウィンドウがアクティブに変わるだけで、動作していないように見える。

Usage: ENScript exportNotes [options]

Option:

/q query – query to filter the notes. If omitted, stdin is used to gather query specification.
/f file – export .enex file. If omitted, stdout is used.
/u username – user name if not the same as database file name.
/p password – user password to confirm Evernote service access.
/d database – database file name if user name is not specified.

If both database file name and user name are not specified, last login name is used and
if there is none, USERNAME environment variable value is used as a user name.

解説:

上級者向け。
/qで指定したクエリに該当するノート群を.enex形式で標準出力またはファイルに出力する。
/qを省略した場合、標準入力からクエリの入力を待つ。

Usage: ENScript createNotebook [options]

Options:

/n notebook – name of the notebook to create. If omitted, the notebook name isread from standard input.
/t {local|synced} – type of the notebook to create. If omitted, creates a synchronized notebook.
/u username – user name if not the same as database file name.
/p password – user password to confirm Evernote service access.
/d database – database file name if user name is not specified.

If both database file name and user name are not specified, last login name is used and
if there is none, USERNAME environment variable value is used as a user name.

解説:

ローカルまたは同期用のノートブックを作成する。通常はEvernote for Windows上から作成すれば良いと思う。

Usage: ENScript listNotebooks [options]

Options:

/t {local|synced} – type of the notebooks to list on stdout. If omitted, listall existing notebooks.
/u username – user name if not the same as database file name.
/p password – user password to confirm Evernote service access.
/d database – database file name if user name is not specified.

If both database file name and user name are not specified, last login name is used and
if there is none, USERNAME environment variable value is used as a user name.

解説:

ノートブックの一覧を標準出力に出力する。

サンプル:

ローカルノートブックの一覧を新規ノートに追加する。

$ ENScript listNotebooks /t local | ENScript createNote

Usage: ENScript syncDatabase [options]

Options:

/l file name    log file name. Use standard log if omitted. Ignored in GUI implementation.
/u username    user name if not the same as database file name.
/p password    user password to confirm Evernote service access.
/d database    database file name if user name is not specified.

If both database file name and user name are not specified, last login name is used and
if there is none, USERNAME environment variable value is used as a user name.

解説:

同期を行う。Evernote for Windows上で同期ボタンを押した時と同じ挙動をする。
Evernote for Windowsが起動していなくても処理が行われる。

iPhone iOS4 – 単語登録で顔文字を追加できる

iOS4の日本語テンキーボード

iOS4の日本語テンキーボード

単語登録について少しネタがあった。

iOS4には、日本語テンキーボードの左下に「^_^」というボタンが増えていて、これを押すと顔文字の候補が表示されるようになった。
これはこれでiOS4のアップデートの一つなのだけど、これにちょっとしたハックがあった。

単語登録機能で「よみ」を「☻」に、「単語」に任意の単語を登録すると、前述した「^_^」ボタンを押した際の候補として追加される

というもの。どうも好きな顔文字を追加するために用意された裏技のような感じだけど、登録する単語は別になんでも構わないので、自分は顔文字ではなく定型文を中心に登録することにした。

iOS4を入れた。

iPhoneのOSがiOs4にアップデートされたので、朝方からいじくり回した。

まずは本体をアップデートしようと、iTunes上でiOS4を入手。
で、アップデートを適用っと。いきなりコケた。不明なエラーとか言われても分からない。

2時間くらい原因を追求して、どうやらPC本体のUSBポートでは電力が不足しているようだと判明。
ACアダプタから電源を供給するタイプのUSBハブを経由して、iPhoneを復元モードで起動させてiTunesからバックアップを復元。なんとか無事にiOS4にアップデート成功。

正直言って結構あせった。

今回のiOS4はアップデートの内容とても多い。よそでも書かれていることだけど、一応書いておきます。

アプリのフォルダ機能

今回の目玉機能。フォルダの作成方法は、ホーム画面のアイコンを長押しして、アイコンが揺れ始めたら他のアイコンに重ねるという独特のものだった。
デフォルトのフォルダ名は、AppStore上のカテゴリ名が自動的に付与される(「仕事効率化」とか「娯楽」とか)。

もともとホーム画面下部のDockにはアプリを置けたが、今回のアップデートでもフォルダも置けるようになった。
Dockに置いたアイコン・フォルダはホーム画面をスクロールしても固定で表示されるので、ここに何を置くかは結構重要。
複数のページに散らばったアイコンを一つのフォルダにまとめるには、以下の手順で操作すると楽だった。

1. 一時的にフォルダをDockに配置する
2. ページをフリックでめくりつつ、同類のアイコンをDock上のフォルダに放り込む

マルチタスク

iOS4のマルチタスクは少しややこしい。大きく変わった点は何よりもこれ。

今まではホームボタンを押すとアプリが終了していたが、iOS4ではアプリが終了しなくなった。する必要がなくなった。

アプリの状態をiOS4が自動的に保存・復元してくれるので、ユーザはアプリを終了させなくてもよくなった。メモリの管理もiOS4が勝手に、適切にやってくれる。

タスクを切り替えるには、ホームボタン二回押す。するとタスクマネージャ的なものがポップアップするので、切り替えたいアプリを選んでタップすればOK。
いつでも好きなときにタスクを切り替えて、終わったら元のアプリに戻るだけで元の状態に戻っている。

何らかの理由で明示的にアプリを終了させたいなら、以下の操作でできる。

  1. ホームボタンを2回押し、タスクマネージャをポップさせる
  2. 適当なアプリアイコンを長押しする
  3. アプリアイコンに(-)というバッジがつくので、終了したいアプリの(-)部分をタップする

カメラ

写真がどこで何枚くらい撮影したか、GoogleMap上にピンを表示させることで可視化されるようになった。
便利といえば便利。通信機能を持たないデジカメでは無理なことだし、スマートフォンならではの機能とも言える。
ひきこもりの自分にはどうでもいい上に、写真はすぐにPC上に転送してしまうので恩恵がほとんどなかった。

それと、シャッター音が大きくなったらしい。iPodを使ってなんかすると消せるらしいけど、動物も人もあまり撮影しないから関係ないか。

Bluetoothキーボードに対応

事前にApple Wireless Keyboardを手配しておいたほど、この機能は非常に楽しみだった。
BTキーボードのペアリングは非常に簡単。非純正は分からないけど、大して変わらないかと思う。

  1. BTキーボードの電源を入れておく
  2. 設定→一般→BlueTooth
  3. デバイス欄に近くのBTキーボードが表示されるので選択
  4. 4桁のコードの入力を求められるので、BTキーボード上から入力してEnter

複数のマシンでキーボードを使いまわす場合はペアリングの操作が煩わしいかもしれない。

で、自分的には、BTキーボードででのテキストの入力はけっこう使いづらいものだった。思っていたよりも。
自分の入力スタイルは、基本的に単語単位で変換・確定していくというものだけど、iPhoneの「予測変換機能」と「単語単位での確定」が噛み合ってないのが原因かなと。

例えば、「単語単位で」という文章を入力したい場合の(あくまで自分の)実際のキー操作は

[たんご][変換](確定)[たんい][変換](確定)[で]

となるのだけど、iPhoneの日本語変換システムは、[たんご]と入力した時点で第一候補に[単語帳]を選んでしまったりする。

言うまでもなく、「たんご」で変換した場合に期待する変換結果は「単語」であって「単語帳」ではない。
「単語帳」が第一候補になっているのに気づかないまま確定すると、自分では「単語単位で」と入力したつもりが、実際の変換結果が「単語帳単位で」になったりする。というわけ。

どちらかと言うと自分が悪いのだけど、この予測変換機能をオフにできなかったり、単語単位で確定するキーが用意されていないってのが、不満かなぁ。

あとは、iPhoneUIに配置されているボタンなどをキーボードで代用できないところも面倒。
メールの送信とかTwitterの投稿とか、小さなメッセージを繰り返し送信したいような時にいちいち画面をタップしに腕を伸ばさなきゃならない。

キーボード上から画面輝度調整が出来たり、iPodのコントロールは可能なのに、せっかくのタスク切り替えが出来ないのは残念。
ホットキーで一発でタスクを切り替えられるようになったら、かなり操作性が向上すると思うんだけど。

Amazon : Apple Wireless Keyboard (JIS) MC184J/A
Amazon : Apple Wireless Keyboard (US) MC184LL/A

単語登録

iPhoneは日本の携帯電話なら搭載されてて当たり前のものがなかったりする。単語登録機能も「なんで出来ないの?」のたぐいだと思う。
今回ようやく正式に単語登録がサポートされた。あって当たり前すぎる機能なのでコメントしようがない。

メール・カレンダー・メモの強化

メールで大きく変わったのは、複数のアカウントのメールボックスが一箇所にまとまるようになった点。
ここから未読を消化していけば全てのアカウントの未読メールが読んだことに。

Gmailとの接続で問題が生じているようだけど、自分は再現せず。プッシュも同期も全く問題ない気がする。

カレンダーはどこが変わったのかよく分からない。

メモはIMAPを利用したものかしら?よくわかってないけど。iPhone上からメモを作成するだけでGmail内にメモが作成される(勝手に”Notes”というラベルがつく)。
Gmail上ではこのメモも扱えるのだけど、iPhoneのメールアプリからはアクセスできないようだ。不具合なのか仕様なのかはちょっと不明。

こんなところ。

ブログの方針とか

基本的には管理人の記録的な、ちょっとだらっとした記事を書いていこうと思います。

自分がどうしてDTMを始めてみたのかとか、もともと音楽にどう接していたのかとか、これからDTMを始められる人にほんの少しでも良いので作曲の楽しさを伝えて行きたいなぁと。

それらの記事の執筆と平行して、blogのテーマやデザインなどを色々いじっている段階なので、その過程で必要になった情報なども、紹介していきたいと思います。

あとは、iPhone関係の話題ですかねー。DTMで面白そうなアプリの紹介とかもできればいいなと思います。