[Work/TechInfo/mac]

CocoaEmacsにaspellを入れる / 2015-01-17 (土)

概要

国際会議の予稿を書いてて気がついたのだが,

CarbonEmacsで同梱されていた,ispellの現代版であるaspellが,CocoaEmacsには同梱されていない.なのでaspellを入れる.
cocoAspellなる.pkgもあるが/usr/localを作ってそこを汚すのが気にくわない. Yosemiteだとソースコードからのコンパイルも通らない.
なのでCarbonEmacsから持ってきたら動いた.

aspell導入の通常の手法

brewとかMacPortsとかには入っているので,どこから持ってくるのが一番楽.
cocoAspellなる,.pkg一つでインストールできるパッケージがあるので,それをインストールするのも非常に楽.

しかし,OSXで/usr/localを作られて汚されるのは,とにかく気にくわないのである!

ちなみに,自分の好み通りの場所に配置できるソースからのコンパイルは,Yosemiteではどう工夫しても通らなかった.

安藤は,OSごとホームディレクトリ以下にUtilsというディレクトリがあって,その中にbinやらetcやらlibやらがあり,自分が使うツールは,そこ全体をOSごとに分けてDropboxに突っ込んで,すべてのマシンで同期するという手法を使っている.
この方法を使うと,マシンを新規インストールしてもDropboxの同期だけが完了すれば(つまりネットにつないで放っておけば),ほぼ使える状態になるというメリットがある. なので,マシンごとに管理しなければならないbrewやらMacPortsやら.pkgのインストールはすごく面倒臭く感じるのである.

解決法 - CarbonEmacsから持ってくる

銭谷版CarbonEmacsパッケージを持ってきて,バラすと,スタティックリンクでビルドされた実行ファイルと辞書が入っているので,それをそのまま自分のホームディレクトリ以下のUtils/binとUtils/libに突っ込んだら動いた.

実行ファイルと辞書を持ってくる

銭谷版CarbonEmacsの「Emacs.app/Contents/MacOS/bin」の中の,

  • aspell
  • aspell-import
  • precat
  • preunzip
  • prezip
  • prezip-bin
  • pspell-config
  • run-with-aspell
  • word-list-compress

を,パスが通っているbinディレクトリ(ここでは$HOME/Utils/bin)に,コピー.

辞書ファイル「Emacs.app/Contents/Resources/lib」以下の「aspell-i386」ディレクトリを,任意の場所(ここでは$HOME/Utils/lib)にコピー.

ホームディレクトリ以下に「.aspell.conf」ファイルを作り(安藤はDropbox内に作ってシンボリックリンクだが),そこに

dict-dir /Users/daichi/Utils/lib/aspell-i386
lang en_US

と書く.

Emacsの設定

英語のみでいいなら,.emacsの中身は以下の通り.
(そうなんだよ,未だに.emacsなんだよ.さっさと.emacs.d/init.elに移らないと)

(add-to-list 'exec-path "/Users/daichi/Utils/bin")
(setq ispell-program-name "aspell"
      ispell-dictionary "english"
      ispell-dictionary-alist
      (let ((default '("[A-Za-z]" "[^A-Za-z]" "[']" nil
                       ("-B" "-d" "english" "--dict-dir"
                        "/Users/daichi/Util/lib/aspell-i386")
                       nil iso-8859-1)))
        `((nil ,@default)
          ("english" ,@default))))

(eval-after-load "ispell"
  '(add-to-list 'ispell-skip-region-alist '("[^\000-\377]+")))

てな感じ.

これでマシンに依存せずにispellがEmacsから使えるようになった.
もちろんコマンドラインからaspellを叩いても使える.

[ ツッコミの受付は終了しています ]
トラックバック (1)
この記事のリンク元 | 4 | 1 | 1 |

[Work/TechInfo/mac]

OSXで複数のAudioI/Fをまとめ多チャンネルXLR入力を実現 / 2008-06-25 (水)

ずいぶん前から知ってて実際に使っていたけれど,記事にはしていなかったので.

概要

Mac OS Xでは複数のオーディオインタフェースをまとめて,DAW側からは一つの仮想インタフェースとして見せることが可能である.従来は3チャンネルを越えるXLR入力を行おうとすると,マイクプリアンプを多く搭載するために高価である高性能オーディオインタフェースを用いる必要があった.この複数のインタフェースをまとめる機能を用いることで,2chのみXLR入力がある安価なオーディオインタフェースを複数組み合わせ,多チャンネルのマイク入力が行うことができるようになった.

セッティング方法

藤本健のDigital Audio Laboratory
第192回:Mac OS X “Tiger”のオーディオ機能を検証 ~ MIDIのLAN伝送に対応。CoreAudio/MIDIの未来は? ~

仮想インタフェースの構築

$ open /Applications/Utilities/Audio\ MIDI\ Setup.app

でAudio MIDI 設定を開く.
上のメニューの「オーディオ」→「機器セットエディタを開く」
機器セットのエリアで「+」ボタンを押すと新たな機器セットが出てくる.これが仮想インタフェースになる.名前を付けておく.
ここで下の「構成」エリアに現在接続されているオーディオインタフェース一覧が出るので,機器ごとの「使用」にチェックを入れていく.

クロックの設定

どれか一つの物理的オーディオインタフェースをクロックのマスターとする.「クロック」ラジオボタンにチェックを入れる.
他のオーディオインタフェースの「リサンプル」にチェックを入れる.

効果

個人ユーザが3チャンネルを越えるマイク入力を同時に行うのはコストの面で難しい. それは,ミキサを使用せずに単体でXLRでマイク4chが同時入力できるオーディオインタフェースは数少ないという理由による. さらにホール等での機材持ち込みレコーディングやライブのためにコンパクトかつバスパワーで動作可能,ある程度枯れた規格を使用という条件を付けると,MOTU TravelarM-Audio Fast Track Ultraしかない. Travelarはスタンドアロンミキサとしても同時に使える仕様であり非常に高性能だが価格が13万JPYほどであり個人で購入するにはコストの面で問題がある.Fast Track Ultraは5万JPYほどだが,それでもまだ個人ユーザには高い(音質的にも多少厳しい). それなりの性能のマイクプリアンプを搭載する必要があるため,マイクプリの価格がネックになっていて,2チャンネルがコンシューマ向けに売れる価格としては限界であるのだろう. さらに最近のオーディオインタフェースはアナログ2ch,デジタル2chという構成が多く,ライン入力4chすらできないものが多い.

この複数のオーディオインタフェースを一つの仮想インタフェースとしてまとめる方法を用いると,非常に安く4チャンネルの同時入力が可能となるため,個人ユーザが安価に多チャンネル同時入力を行うことが可能である.家に余っているインタフェースや,他の人から追加のオーディオインタフェースを借りるなどすれば,非常に安価に実現できる. ミキサを持っていく必要がないため,荷物も少なくなる.

問題点

この方法の問題点はオーディオインタフェース内蔵のミキサが使えなくなり,マイクで拾った音とコンピュータからの出力が同時にあるライブ等の用途では,外付けミキサを用いる必要があり,さらにPC内部とソフトウェアを経由した音のみしかミキシングmできなくなることにある. 例えば,安藤がライブ等でメインに使っているYAMAHA GO46はハードウェアミキサを搭載しているため,ライブ等でミキサがなくてもマイク入力の音とコンピュータの出力の音をミックスし出力することができる(ソフトウェアを通したモニタリングではないためレイテンシが最小限かつ音の劣化がない).

しかしこれでまとめてしまうと当然ハードウェアミキサの能力は当該のインタフェースから入力したチャンネルにしか効果が及ばないため,全体のミキシングができなくなる. これを解決するためには,全ての音をパラレルに出力し外付けミキサに入力し調整するという方法を用いるしかないのだが,ミキサに入ってくる音はPC内部を経由,更にはソフトウェア内部を経由してくる場合が多いので,レイテンシが非常に大きい(入出力でリサンプリングをかけるので劣化も大きい).

したがって,この方法を取る時はレコーディングのみにとどめ,ライブで使う場合は多チャンネルパラレルのグループ出力を持つ外付けミキサ+多チャンネルライン入力をもつオーディオインタフェースを使うしかない. そこまで行くとMOTU Travelerを勝った方がいいのだが.


[Work/TechInfo/mac]

Tiger on PBの装飾キーの誤動作の問題 / 2006-04-14 (金)

PowerBookのTigerでのCtrlとCapsLockの入れ換えが誤作動する件について

Tigerには装飾キーのアサインを変更できる機能があるが,
PowerBookでCapsLockにCtrlを割り当ててると,結構な頻度で誤作動する.
これは,内蔵キーボードがADB接続されていて,その制御系に問題があったという理由によるものらしい.

かなりの頻度で誤作動するため,殆ど諦めている状態であった.
学校でUSBの外付けキーボードを使っている時には誤作動は起きないため,なんらかの問題があると思っていたが,
2006.03.17付けの山本さんのMacemacsjp-usersのML投稿より

MacのCaps Lockキーは、最初は機械式ロックでした。それを引きずったのか、最近まで、Caps Lockはキーボードコントローラーのファームウェアで制御されていました。本体側からソフト的にControlと入れ替えようとしても誤動作するのは、キーボードコントローラーのファームウェアが管理するCaps Lockの状態と、OSの管理するCaps Lockの状態が、タイミングによっては矛盾するからです。このあたりは、OSX 10.4以前に同等の機能を実現していたuControlというソフトウェアがありますので、ソースを読むと泣けて来ます。

最新のPowerBookではキーボードの接続がADBからUSBに変更されたので、この問題がようやく (17年かかって!) 根本的に解決されたようです。

とのこと.
uControlの拡張版には大変御世話になった.
山本さんのページによれば,

余談だが、 Tiger ではキー配列を変更可能である。 英語キーボードを利用している場合、 “capslock” キーを “ctrl” キーに変換すると Emacs 使いには心地よい。 しかし、完全に快適なのは、キーボードが USB バスで接続されている場合のみである。 ほとんどの PowerBook G4 が USB 経由であるが、 12 インチのは USB 経由ではない。 「アップルメニュー」の「この Mac について」で調べると、 Trackpad は USB に刺さっているのに、 キーボードはそうでないことが分かる。 この Mac では、たとえ “capslock” を “ctrl” に変更しても、 押すたびに LED が点灯し、中途半端にロックすることがある。 (USB キーボードだと、LED は点灯しなくなる!) Emacs を使っていると、発狂しそうになる。 どうして、12 インチだけ中途半端なのか。。。 金返せ Apple!

との事らしい.
MacEmacsのMLでは,その後,自力でキーボード改良(配線入れ換え)をした人も登場.

まぁ今度出ると噂されるMacBook Proの13.1インチモデルならば全く問題ないだろう.
ハードウェア自体のアーキテクチャが変わったので,ADB接続なんか設けるほうがアホ臭いということで,USBに変更になっただろうし.

12インチモデルは持ち歩きが非常に楽で,この大きさにして良かったと思っていたのだが,
この事実を知って,後悔をしたわけだ.
いやまぁ……どうにもならんのだけど.


[Work/TechInfo/mac]

JIS to ASCII on 古い日本語キーPowerBook / 2004-08-10 (火)

OSXで日本語キーボードをASCII配列で使う

今まで,uControlのスペシャル版をつかって,これを実現していたのだけれど,
そっちの方は全然アップデートかかってないし,どうせならOSXの機能を使って実現するべきだ,と.

現在,日本人がMac買う時も,USキーボードのPBやらiBook買うことが当り前になっているので,
(…当り前だよね? それとも僕がおかしいのか?)
そういう人達にとってuControlは必須なのだけれど,
スペシャル版はちょいと目的が違う.単にJIStoASCIIのためだけに存在する.
普通uControlはUSキーボードユーザのために存在するのに.

なぜかというと,現在のMacの日本語キーボードはCtrlがAの脇についているからである.
これが,日本でMacのキーボードが唯一優れている点だと言われている.
ところがUSキーボードは左下.日本語キーボードではCapsLockの位置である.
即ち,デフォルトの状態ではCtrlとASCII配列が両立しないという恐ろしいジレンマ.

前にも書いたけど,NSText系を利用しているアプリ(Cocoa使ってるって事)では,Emacs調のキーバインドでも操作することが可能.
そのくせ,USキーボードではCtrlが左下っていうんだから,無茶苦茶な話である.
だから,uControlは,USキーボードを使う人には必須のユーテリティなのだ.

前置き長くなった.
で,OSXのユーザ毎のプリファレンスをつかってそれを実現する方法.
以下,ここより転載.
リンク先に書いてある通り,外部リンクはいつ消えるかわからんから.
まとめるためにちょっと改変.

あとはまぁ,本来なら,きちんとドキュメント読んでxmlで書くべきなんだろうけどね.
情報が見付かってしまった以上,もう面倒臭くなってしまったのでした.

情報元
  • http://www.sodan.ecc.u-tokyo.ac.jp/BTS/guest.cgi?project=FAQ&action=view_report&id=90
  • http://groups.google.co.jp/groups?selm=YAS.03Jan22031533%40kirk.is.tsukuba.ac.jp
ポイント
  • ~/Library/Keyboard\ Layouts/ 以下に設定ファイルを置く
  • 正しいやり方はXMLを書いたりするらしい (未確認)
  • Developer toolが必要
手順
  1. 作業用ディレクトリに移動
  2. システム標準のデータをコピー
    % cp /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Resources/Japanese.lproj/Localized.rsrc .
    	    
  3. テキスト形式に変換
    % /Developer/Tools/DeRez -useDF Localized.rsrc >  Localized.rsrc.text
    	    
  4. キーボード定義を修正.AustralianがほぼASCII配列らしいので,それを変更
    % cp Localized.rsrc.text Keyboard.rsrc.text
    % vi Keyboard.rsrc.text
    	    
    書き換え部分は次の通り.'9'の隣の部分を2個所書き換える.
    これをやらないと'`'と'~'が打てない.
    "Australian"の名前は変更しなくても大丈夫だけど,
    変更しておいた方が紛らわしくなくていいでしょう.
    < data 'KCHR' (15, "Australian", sysheap, purgeable) {
    > data 'KCHR' (15, "Australian3", sysheap, purgeable) {
    
    <  $"3900 0000 1010 1010 1010 1010 1010 1010"            /* 9............... */
    >  $"3960 5F00 1010 1010 1010 1010 1010 1010"            /* 9`_............. */
    		  
    <  $"3900 0000 1010 1010 1010 1010 1010 1010"            /* 9............... */
    >  $"397E 5F00 1010 1010 1010 1010 1010 1010"            /* 9~_............. */
    	    
  5. .rsrcファイルを作成
    % /Developer/Tools/Rez Keyboard.rsrc.text -useDF -o Keyboard.rsrc
    	    
  6. 作成したファイルを移動.cpではなく必ずmvを使う必要があるらしい.
    % mv Keyboard.rsrc ~/Library/Keyboard\ Layouts/
    	    
  7. 一度ログアウトしてから,もう一度ログイン.
  8. 「システム環境設定」→「言語環境」→「入力メニュー」タブを開き,書き換えたもの(Australian3)を選択.(必須ではないが)USをはずす.
参考文献

だそうです.
実際やってみたら,
deleteの左のバスラとパイプのキーががバッククオートとチルダになった.
んで右シフトの左上,括弧閉じのキーがバスラとパイプ.
ん,なんかちょっと気にくわね.(僕は逆の方が好き)
あとでもうちょいいじろう.

てか…もう誰かがこのプリファレンスのファイル,出してるんじゃないのか?


[Work/TechInfo/mac]

OSXのディスクイメージ / 2003-12-26 (金)

OSXのディスクイメージの扱い

dmg形式は厄介である.
確かにOSX上のみで普通に扱う分には便利なのだが,これはマスタリングされたデータではないので,他の環境に持っていってCDに焼くのが面倒.
かといってMacのファイルシステムをiso9660で扱うことは出来ない.

基本的にはRAWデータになってれば,どこでも扱えるわけなので.
RAWデータとは完全にマスタリングされたCDそのままのデータ.
内部は完全にBit配列のみとしてしか扱えない.
内部ファイルがどれだけ少なかろうが,RAWイメージの容量は650MB固定になる.
当たり前だが.
ただし,圧縮すれば,元ファイルの容量に応じて小さくなる.
最後の0が続く部分が思いっきり圧縮されるから.

なお,ここに書いた情報は,10.2.8の時点のものであるので,10.3以降では違いが生じるかもしれない.

OSXのアプリとWinのアプリを使う場合

1.dmgを用意.
2.Toastでそのdmgをマウント
3.Toast形式のディスクイメージの書き出し
4.リソースフォークをすっ飛ばしてWinへ転送
5.RAWデータが扱えるCD焼きアプリで焼く

これで可能.
容量確認してみたところ,どうやらToastのディスクイメージはRAWデータらしい.
Winのほうのアプリでは,どうやら汎用のものではB's Recorderが使える模様.残念ながらCD Manupilatorでは読めず.

Unixコマンドを使う場合

CDを挿入
ls -al /dev/disk* でCDROMのデバイスを確認.自分のユーザ名で出ているデバイス.
(ディスクを増設してなければ, /dev/disk1と/dev/disk1so0)
umount /Vodumes/CDROM でアンマウント.

cat /dev/disk1so0 > /tmp/xxx.img

dd if=/dev/disk1s0 of=/tmp/xxx.img

これでRAWデータが抽出される.
ただし,アンマウントしてしまうとCDの取出しが出来なくなるので注意.
今のMacのハードだと,必然的に再起動を迫られる


で,その後はどこにでも持っていって,cdrtoolsを使って焼けば良い,ということになる.
ちなみに,一応cdrtoolsはOSX上でもコンパイル可能のようだ.
動作はわからん.