Tumblrがデフォルトで無限リブログに対応してくれた
たぶん今更感のある話題なのでみんな知っているんだと思うのだけど,久々にdashboardでrblgしようとしたら,Tumblr Lifeのキーボードショートカットがうまく働かなくなっていた。で,どこが原因なのかを調べる過程で,そもそもデフォルトでrblgやlikeのショートカットキーが用意されていたことを知った。
Macならoption+Rでrblg。option+Eでエンキュー。option+Lでlike。Windowsの場合はshift+R,shift+E,shift+Lが対応するようだ。エンドレススクロール機能もTumblr側に付いているので,標準環境でも無限rblgできるようなお膳立てがされたというわけだ。
そういう感じなので,今までお世話になったTumblr Lifeに感謝しつつ,標準ショートカットキーに乗り換えることにした。ただ,optionとの同時押しが難しいので,キーカスタマイズができるような仕組みを考えるかも。
USBサスティンペダルを作った
以前買ったmicrokey-61にはサスティンペダルを繋ぐ端子が用意されていなかったので,単体で使えるサスティンペダルを作った。これはMIDIコントローラとして動作して,ペダルを踏んだり踏まなかったりすることで,Control Changeの64番を送信する。
必要なものとしては,どこのご家庭にもあるArduinoとキーボード用のフットペダル,抵抗,LED(これはオプション)くらいのもの。Arduinoがだいたい最低でも2000円くらい,フットペダルがYAMAHAのFC-5で1000円くらいするので,3000円くらい出してもいいよって人向け。どうせ工作するならボリュームやらトグルスイッチやらを付けて,汎用MIDIコントローラとして使う方が嬉しみがあるかもしれない。
回路図。Hello Worldレベルなので私にも作れました。スイッチが絶縁状態だと電流が流れないので電圧降下も起こらず,端子電圧=VCCになるのがポイント。LEDの回路は特に必須ではないが,動作が正しいことを確認するために付けておいたもの。
完成品の写真*1。
フットペダルのインターフェイスは6.3mmのモノラルプラグなので,このような箱型のジャック部品を用意しておく。私が使ったペダルとジャックの組み合わせだと,下の写真ではんだ付けされている2つの端子がスイッチによって導通したり絶縁されたりした。スイッチを踏むと絶縁状態,足を離すと導通状態だということが分かったので,踏んだ状態がHIGHで離した状態がLOWになるよう回路を組んだ。
Arduinoのスケッチ。
int pin_switch = 12; int pin_led = 13; int prev_value = 0; void setup() { pinMode(pin_switch, INPUT); pinMode(pin_led, OUTPUT); Serial.begin(115200); } void loop() { int value = digitalRead(pin_switch); if (value != prev_value) { digitalWrite(pin_led, value); sendMidiMessage(0xb0, 64, value == HIGH ? 127 : 0); } prev_value = value; } void sendMidiMessage(unsigned char message, unsigned char control, unsigned char value) { Serial.write(message); Serial.write(control); Serial.write(value); }
実際には,MIDIと同等のデータをSerial over USBで送信しているだけなので,これをPC側でMIDI信号に変換してあげる必要がある。この変換をやってくれるのがThe Hairless MIDI to Serial Bridgeというフリーソフト。Mac環境の場合,Audioのシステム設定でIAC Driverを有効にして仮想バスを出力用に1つ作成,Bridgeの出力をそこに繋ぐ。
DAWなどのソフトウェアで,MIDI入力にキーボードと前述の仮想バスを設定することで,サスティンペダルとして使えるようになる。回路にボリュームやスイッチを増やせば,他のControl ChangeやNote On/Offの信号も送れるようになるし,PC側で工夫してあげれば,フットスイッチのON/OFFをエロゲのスペースキー代わりにするようなこともできると思う。
ちなみに,スケッチの中にSerial.begin(115200);
という行があるが,これはシリアル通信のボーレート(bps)を指定している部分で,Bridge側の設定とこの数字を合わせておかないと,うまく信号を送受信できないので注意。また,Arduino特有の注意点として,0番ピン及び1番ピン(RX/TXと印字されている)はシリアル通信に利用されるので,ここに他の入出力を繋ぐと回路が動かない原因に延々と悩むことになる(悩んだ)。
*1:実は写真の回路に付いている抵抗は上の回路図で示したものとは微妙に違うのだが,理想的には回路図に示したような値の抵抗を使うのがいいと思う。LEDを駆動するならおそらく10mAもあれば充分だし,スイッチを流れる電流はどうせ無駄なので抵抗はそれなりに大きいもののほうがよい
ピアノ独習
『休日に何してる?』と聞かれて「寝てます……」『あっ…(察し)』という流れになったので趣味を拡充しようと思い,MIDIキーボードを購入,両手でそれなりにピアノ(というかキーボード)が弾ける状態を目指すことにした。
キーボードはKORGのmicrokey-61。61鍵ながら学習机の上に置けるサイズで,KORG Legacy Collectionが付属するのでDTM用途には嬉しい製品だと思う。値段を考えれば「MIDIキーボード付きソフトウェア音源」と言ってしまってもいいだろう。サスティンペダルを接続するインターフェイスがないのが残念だが,いざとなればArduinoで自作するつもりで居る。ちなみに,練習するときはKORG Legacy Collectionの一部であるM1の音源をスタンドアローンで起動し,ピアノ系のプリセットを選んで鳴らしている。
キーボードと併せてこのスコアを買った……が,燦然と輝く「中級」のラベルに偽りなし,超初心者が突然弾ける代物でもなかったので基礎から独習することにした*1。
独習するからには何かしら教科書が必要だろう,ということで「おとなのためのピアノ教本」を購入。全5巻のシリーズで,1巻でバイエル前半レベル,2巻でバイエル後半レベルの内容が身に付くとされている*2。右手で単純なメロディを弾くところから始まり,両手を動かす練習,スリーコードの導入,8分音符や付点4分音符の導入,いくつかの簡単な伴奏形の練習,ハ長調・ヘ長調での練習曲……と言った内容が第1巻で網羅される。
個人的に嬉しいのは,指示に従って練習を進めるだけで(C Majorスケールであれば)C・F・G・G7などのごく基本的なコードの知識と,コードを使った伴奏方法を習得できるという点だ。知識面での解説が詳しくされているわけではないが,なんとなーく耳コピしたりメロディにコードを付けたりしたいと考えている私にとって,このシリーズをこなすことがひとつの足がかりになるのではないかと期待している。
ソフト音源付きMIDI鍵盤が届いた
2013-01-09 02:26:31 via web
おとなのためのピアノ教本1を独習してる
2013-01-20 01:40:50 via web
およそ2週間でピアノ教本の1冊目をあらかた弾くところまで行った。他のtodoは放置されている
2013-01-27 03:23:14 via web
そんなこんなで練習を始めてから2週間ほどで1冊目を(一応)ひと通りこなし,単純なスリーコードの伴奏とともに8分音符や付点4分音符が登場するような曲を両手で弾けるようになった……が,まだ登場する楽譜が単純なので,元々目標としていたようなピアノらしい音の響きを体感できる地点までは到達していないように感じる。これが2冊目をこなすことでどう変わっていくのかが楽しみだ。
build.xmlにjar生成用の記述を追加
Eclipseで作ったAndroidプロジェクトをコマンドラインでビルドするで作ったbuild.xmlに,jarを生成するための記述を追加するメモ。
下記の記述をproject要素の末尾に追記しておく。
<target name="jar"> <delete dir="./bin/*" /> <delete file="./hoge.jar" /> <javac srcdir="./src;./src-optional" destdir="./bin" classpath="./libs/optional.jar;${sdk.dir}/platforms/android-16/android.jar"> <!-- SDKバージョンは適宜書き換える --> </javac> <jar jarfile="./hoge.jar"> <fileset dir="./bin" includes="**/*.class" /> </jar> </target>
追記後にant jar
とすることでプロジェクト直下にhoge.jarが生成される。
ちなみに,EclipseのPackage Explorerで特定フォルダを選択した状態でexport→jarと選ぶことで,速やかに特定フォルダのjar書き出しができることを知ったので,上記のコードは不要になった。
「出、出た〜www○○奴〜www」のガイドライン
最近流行しているネットスラングで「出、出た〜www○○奴〜www」というものがある。「○○」の部分に何かしら突っ込みどころのある文言を入れる一種のあるあるネタなのだが,「煽られて必死奴〜」「文系気取り奴〜」などの例に見られるように,送り仮名をわざと省略する形で多く使われている*1。
発祥は2chだと思われるが,この1年ほどでTwitterなどのSNS・個人ブログでも使用例が散見されるようになった。また,数は少ないが,送り仮名をすべて省略して似非漢文のような形で使われている例もある*2。
微妙に変化しつつ使われ続けている,というのは間違いがなさそうなので,2chに限ってその初出と変遷をまとめてみた。
2005/02/05 - ネット実況板
http://mimizun.com/log/2ch/ogame/1107563873/
初出という意味ではおそらくここだろう,というスレ。このスレを契機に「で、でたー!」というフレーズがネット実況板で流行することになったのではないかと思う。末尾が「奴」で固定されているわけではなかったり,日本語として正しい文章になっているなどの点で今の形とは異なる。
http://mimizun.com/log/2ch/ogame/1118913807/
同年の6月頃になると,既にこのフレーズを使ったスレが乱立していた様子が伺える。
2011/03/02 - ニュー速VIP
http://mimizun.com/log/2ch/news4vip/1298994218/
現行の形が完成されたのはおそらくここだろう,というスレ。「で、でた〜」で始まり「奴〜」で終わる,日本語として不自然,などの特徴をすべて備えている。この頃までには既に2ch全板に飛び火していたようだ。
2012/06/02 - ニュー速VIP
http://mimizun.com/log/2ch/news4vip/1338567833/
送り仮名をすべて省略するスタイルが確立されたのはおそらくここだろう,というスレ。初出が7年前であることを考えると,この形に変化したのは比較的最近のことであると言える。
最後に
http://search.takatyan.info/やhttp://mimizun.com/などで検索した結果をまとめただけなので,2ch外での使用例や,過去ログとして保存されていないスレについては見逃している可能性も当然あるので注意が必要である。
また,で、でたーw◯◯奴〜wwwの元ネタによれば,「タイホー工業のクリンビューというコーティング剤のCMが元ネタ」という説もあるので,こちらも併せて参照されたい。
関連として2003年頃に流行した下記のコピペを挙げておく。
今日、電車乗ってたら、前にキモオタが二人乗ってきた。
なんか一人がデカイ声で「貴様は〜〜〜!!だから2ちゃんねるで馬鹿に
されるというのだ〜〜〜!!この〜〜〜!」
ともう片方の首を絞めました。
絞められた方は「ぐええぇーー!悪霊退散悪霊退散!!」と十字を切っていた。
割と絞められているらしく、顔がドンドンピンクになっていった。渋谷でもう一人、仲間らしい奴が乗り込んできてその二人に声をかけた。
「お!忍者キッドさんとレオンさん!奇遇ですね!」 「おお!そういう君は****(聞き取れず。何かキュンポぽい名前)ではないか!
敬礼!」
「敬礼!出た!敬礼出た!得意技!敬礼出た!敬礼!これ!敬礼出たよ〜〜!」
俺は限界だと思った。
*1:ここで普通に日本語として通る文にしてしまうと,「使い方が間違っている」などと指摘されることもあるようだ。
年末になるとはてブランキング記事の影響で1月くらいの記事が再浮上したりしますね
何かができるという状態に到達するにはどうしたらいいのか?というごく一般的な質問がある。
この質問に対する答えは「できるようになるまでできる未満のことを積み重ねる」以外にはおそらく存在しない。
個人個人の才能(センス)の有無は上達曲線の微分係数を決める程度のものでしかなくて,要するに「掛けた時間に比例して上達する」という言葉は真理なのだと思う。
勉強であったり,プログラミングであったり……何をするにしても,ぼくらができる未満のことに時間を費やすことに飽きてしまったとき,才能という言葉は便利に使われてしまう。
本当に必要なものが時間であることを頭では理解していたとしても,無意識のうちに別の要素にできない原因を求めてしまう。
ところで,時間を費やすことに飽きてしまわないことを才能と表現するひともいる。
「好きこそものの上手なれ」とはよく言ったものだし,好きがないからこそ何者にもなれないってことなのかもしれないね。
真剣に習得を求める人にとってはこれ以上ない救いの言葉であると同時に,そうでない人にとっては挫折を引き起こすのに充分すぎる言葉なんじゃないかなあと思った次第。
iOS/AndroidにおけるカスタムViewの初期化
iOSでのカスタムView初期化コード
- (void)commonInit { // initialize code } // コードで初期化する場合はこちらを呼ぶ - (id)init { self = [super init]; if (self) { [self commonInit]; } return self; } // XIBで初期化する場合はこちらが呼ばれる - (id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self) { [self commonInit]; } return self; }
AndroidでのカスタムView初期化コード
private void initComponents() { // initialize code } // コードで初期化する場合はこちらを呼ぶ public CustomView(Context context) { super(context); initComponents(); } // XMLで初期化する場合はこちらが呼ばれる public CustomView(Context context, AttributeSet attrs) { super(context, attrs); initComponents(); }
XIBで定義したカスタムViewをコードでインスタンス化する
+ (CustomUIView *)view{ NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"CustomUIView" owner:nil options:nil]; return [array objectAtIndex:0]; }