Hatena::ブログ(Diary)

aikeの日記 RSSフィード

2012-01-29 ヤター!ウェブブラウザで動くシンセできたよー

最近のHTML5やWebブラウザAPIの進化はけっこうすごくて、普通にサウンドプログラミングもできるようになってきました。そんなわけでシンセサイザーアプリを作ってみました。

サウンドを扱う方法はいくつかあるみたいですが、Google Chromeで使えるWeb Audio APIEQディレイなどあらかじめ用意されていて良さげなので使いました。

 

http://aikelab.net/websynth/

 

f:id:aike:20120130010441j:image

まだ、バグもけっこうあるのでじょじょにブラッシュアップしていきます。

 

Chrome以外では動かないと思うので試せない人はこちらの動画をどうぞ。

D

 

2012-01-24 仕事で最近活躍している人の特徴

数年前の仕事のやり方が通用しなりつつありみんな疲弊しているような中、なぜか最近すごく元気な人たちに仕事で接する機会が何度かありました。状況の変化にしなやかに対応し、どんな環境でも実力を発揮して結果を出し続けるような人たちです。

 

そんな人たちを見ていると、特にスキルバランスの良さを感じます。少し前であれば、ひとつのことに特化した職人タイプのエキスパートが能力を発揮する機会がけっこうありました。でもいまはそういう職人向けの仕事は減っているように思います。

そうかといって器用貧乏タイプの人も生き残るのが難しいです。いま多くの場面で必要とされていて結果を出している人はひととおりのことが自分でできて、さらに専門家としての得意分野をひとつ持っているタイプです。

 

おそらくウェブサービスが異様な速度で発展したことがひとつの原因だと思いますが、以前より少人数で仕事を回すようになって、これまで分業していたものをひとりでやる場面が増えてきました。そうなると、これまでチームの誰かがやってくれていたようなことも自分でやらなくてはならなくなります。

 

でもまあ最初からマルチな人はいないわけで、いま元気な人たちは必要なときにさくっと勉強して最低限必要な知識やノウハウを身につけるのがうまいように見えます。

デザイナーに仕事を頼むことになったら、2〜3日デザインについて勉強して一歩踏み込んだ話ができるようになったり、プログラムが専門じゃなくても使えそうなウェブAPIを調べ上げてプログラマーと対等に議論したりといった感じ。

 

専門分野以外だからといって手を出さないのではなく、ちょっとした好奇心を持ってなんでも身に付けていく気持ちがある人とそうでない人では、これまで以上に大きな差がついていくように思います。

2012-01-03 プログラミング言語をオレオレ拡張できる汎用マクロプロセッサ作った

■概要

シンプルでパワフルなマクロプロセッサを開発しました。C++テンプレートライブラリLispマクロのようにプログラミング言語を拡張してソースコード抽象化を進めコーディングを劇的に効率化することができます。

 

もともとサンプラーソフトKONTAKTの内蔵言語KSPを効率的に書くために作りましたが、それに限らず低機能な言語を拡張するために使用できます。

 

■簡単なサンプル

シンプルなマクロの例。以下は、Javaで書かれた典型的なHelloWorldプログラムです。

public class Sample {
	public static void main (String[] args) {
		System.out.println("Hello World!");
	}
}

上記コードで固有の部分はクラス名のSampleと文字列リテラルの"Hello World!"の部分だけで、それ以外は定番的な記述です。この定型部分をマクロ定義したら以下のように書けるようになります。

include "macro.lib"

Class Sample
	Puts "Hello World!"
EndClass

マクロ定義はこんな感じ。&1, &2, ……の仮引数は展開時に実引数に置き換えられます。

defmacro Class
	public class &1 {
		public static void main (String[] args) {
endmacro

defmacro Puts
	System.out.println(&1);
endmacro

defmacro EndClass
		}
	}
endmacro

もっともJavaの場合は普通Eclipseを使うので単語の長さや定番的な記述の多さはあまり気にならないかもしれません。

 

他にもBrainf*ckのような難読言語を以下の様にわかりやすく書くようなこともできます。

defmacro inc     +
defmacro dec     -
defmacro input   ,
defmacro print   .
defmacro shift   >
defmacro unshift <
defmacro while   [
defmacro wend    ]

##

inc
while
    shift
    input
    print
    unshift
wend

 

■説明

マクロ自体は、アセンブラの時代から存在する古典的な手法で、Unix系OSにはたいていM4というツールが入っているし、C言語では#defineなどの構文をCPPプリプロセッサが処理します。C++ではboostのような強力なテンプレートライブラリがあります。他にもウェブフレームワークテンプレートエンジンやCoffeeScriptのようなソースを他の言語に変換する言語もコンセプトとしては近いものがあります。

 

しかしながら、シンプルで気軽に使えて環境や対象言語に依存しないマクロプロセッサは意外に少ないように思います。そんなわけで汎用的に使える自分用のマクロプロセッサを作りました。200行程度のAWKスクリプトなのでマクロプロセッサ自体を自分用に拡張するのも簡単です。

 

記述能力の高いモダンな言語やチーム開発にはあまり向いていませんが、HTMLCSSあるいは各種定義ファイルで毎回同じような記述をしたり、DRYに書けなくて似たような箇所がソース中に複数あるような場合はマクロを使うことで楽になるかもしれません。

 

ダウンロードはこちらから。

http://github.com/aike/macra

 

トラックバック - http://d.hatena.ne.jp/aike/20120103

2011-12-31 ソフトシンセとかのGUIが好きすぎるのでブログ作った

DTMのソフトシンセエフェクタープラグインGUIが好きすぎて困る。

 

DTMソフトでは、普通に考えてマウス操作に向いているとはとても思えないような物理的なパーツを模したようなデザインがよく使われます。操作性はそこそこで、それよりもアナログ機器に慣れた人への配慮だとか、操作自体のワクワク感とかそういったユーザーエクスペリエンスを重視する独特の文化があります。それはPCソフトやウェブスマートフォンアプリなどとも異なるデザインポリシーで、DTMの世界にしか存在しないように思います。

 

2Dとも3Dとも言いがたいこういったGUIデザインがすごく可愛いのでブログを2つ作りました。

 

ひとつめは、ソフトシンセエフェクタープラグインGUIをひたすらクリップするTumblrです。

Virtual Instruments Design

 

もうひとつは、プラグイン用の自作ノブを公開するブログです。

ノブ部

こんなノブを公開しています。

f:id:aike:20111231124832j:image

f:id:aike:20111231124831j:image

f:id:aike:20111231124830j:image

 

よろしくお願いします。

トラックバック - http://d.hatena.ne.jp/aike/20111231

2011-12-11 主人が公式ページをTumblrにして1年が過ぎました。

aike2011-12-11

Tumblrは画像や引用文をクリップするのに大変便利なミニブログサービスですが、そのシンプルなUIの裏に実は普通のブログなどとしても十分な機能を持っており、水野美紀さんをはじめ公式サイトや公式ブログとして採用する人も増えてきました。(参考リンク)

 

僕がやっている音源ライブラリ製作プロジェクト、Soundfrost Musicでも、4月にスタートして以来公式ページをTumblrで作っています(あ、まだ1年過ぎてないや)。そんなわけで実際に公式ページ使ってみて見えてきた使い勝手について書いてみます。

 

スタートの敷居が低い

 これが一番ですね。すぐに使い始めることができます。

独自ドメインが利用可能

 公式ページとして使う場合、これはありがたい。

デザインのバリエーションが多い

 まあ凝りすぎた特殊なデザインが多いし、良いデザインは有償だったりもしますが。

固定ページが作れる

 とはいえ、固定ページをたくさん作ると管理が面倒くさいです。

任意のファイルのアップロードができない

 ブログサービスとしてはありがちですが、やっぱりちょっと不便。

共通ライブラリが使えない

 CSSJavaScriptも使えますが別ファイルにはできなさそうです。そのため固定ページでjQueryプラグインを使うなど、凝ったことをやるのは難しいかもしれません。

 追記:テーマ用のファイルはアップロードできることをコメントで教えていただきました!これは便利。

ソーシャルボタンを貼るには意外とスキルがいる

 一覧表示、単一表示、検索表示などあらゆる状況で正しいLikeボタンやツイートボタンを表示しようと思うと意外と面倒。カスタムタグで条件付表示をすることになりますがelse条件がないのが不便。最近良さげなブログエントリーがあったのでそれを参考にすると良いのかな。

フォロー機能が使える

 とはいえツイッターほど普及してないのであんまりフォローされないです。

ブログ機能が使える

 これは逆にデメリットと感じる人もいるかも。まあ写真メインのブログでもない限りリブログもあんまりされない感じ。

Tumblr色を消すのは無理っぽい

 これTumblrで作ってるな、というのはフォローボタンとかでばれます。むしろTumblrが公式なんてクールだろ?くらいな気持ちで。

 

そんなわけで、ブログメインであれば十分いけますし、固定ページも2、3枚なら良い感じです。それ以上の凝ったことをやろうとするとやっぱりWordPressなどのCMSを使った方が結果的に楽になるかと思います。

 

ちなみに公式ページとしてではなく、ダラダラ閲覧したり、クリップしたりするサービスとしてはTumblrは抜群に使いやすくて気に入ってます。いま一番頻繁に使ってるウェブサービスかもしれません。

SyoichiSyoichi 2011/12/12 15:04 一応テーマ用のアップローダーならありますよ。
http://www.tumblr.com/themes/upload_static_file

aikeaike 2011/12/12 21:22 情報ありがとうございます!アップロード機能あったんですね。これは便利。