<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Web Audio API &#8211; Mach3.laBlog</title>
	<atom:link href="https://blog.mach3.jp/tag/web-audio-api/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.mach3.jp</link>
	<description></description>
	<lastBuildDate>Tue, 11 Nov 2014 04:48:30 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>Web Audio でマトリックスシーケンサーを作ってみた</title>
		<link>https://blog.mach3.jp/2014/11/11/tonegrid-js.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Tue, 11 Nov 2014 04:48:30 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Matrix]]></category>
		<category><![CDATA[Sequencer]]></category>
		<category><![CDATA[Web Audio API]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=3893</guid>

					<description><![CDATA[今回のお題は「マトリックスシーケンサー」。 昔Flashで実装された物があったのをふと思い出し、今ならWeb Audio APIで作れそう！と思って作ってみました。 きっと同じ事考えて作って見た人はいるはず。 マトリック [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>今回のお題は「マトリックスシーケンサー」。 昔Flashで実装された物があったのをふと思い出し、今ならWeb Audio APIで作れそう！と思って作ってみました。 きっと同じ事考えて作って見た人はいるはず。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/-cqC0wmdf4nY/VGGS_z3E4SI/AAAAAAAACmw/4QxHIqi7_sU/s400/2014-1111-00.png" alt="Web Audio でマトリックスシーケンサーを作ってみた"/></figure>



<p></p>



<span id="more-3893"></span>



<h2 class="wp-block-heading">マトリックスシーケンサーとは</h2>



<p>マトリックスシーケンサーとは、整列配置されたボタンをトグルしてループミュージックを奏でる事ができるシーケンサーです。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/-HsfpIr6oSKA/VGGS_1NaMPI/AAAAAAAACmw/OxxpjAfLN6Y/s500/2014-1111-01.png" alt="マトリックスシーケンサー"/></figure>



<p></p>



<p>多くの場合縦軸が音階を、横軸がフレーム（時間）を表し、 左から右にフレームが移動してONにされたボタンに割り当てられた音が鳴る仕組みです。 縦軸の「音」はスケール（調）に則って配置されているので、 相当いい加減にやってもまともな演奏になってしまう所がマトリックスシーケンサーの魅力の一つです。</p>



<p>ハードで知られているのがYAMAHAの「TENORI-ON」ですが現在は生産完了品で、 同製品をiOSアプリにした「<a href="http://appstore.com/app/tnri">TNR-i</a>」/「<a href="http://appstore.com/app/tnre">TNR-e</a>」がリリースされています。 また、その他にも無料・有料含めてiOS向けのマトリックスシーケンサーアプリは多数リリースされています。</p>



<ul class="wp-block-list">
<li><a href="http://jp.yamaha.com/products/musical-instruments/entertainment/tenori-on/">TENORI-ON &#8211; ヤマハ株式会社</a></li>
</ul>



<h2 class="wp-block-heading">作ってみた物: ToneGrid.js</h2>



<figure class="wp-block-image"><a href="http://mach3.github.io/tonegrid.js/"><img decoding="async" src="https://lh6.googleusercontent.com/-R6kPg0IyUAQ/VGGTAGNECmI/AAAAAAAACmw/HpwvHOoGidU/s500/2014-1111-02.png" alt="ToneGrid.js"/></a></figure>



<p></p>



<p>今回は JavaScript + Web Audio API でマトリックスシーケンサーを再現してみました。 勿論 Web Audio API に非対応の環境ではウンともスンとも言いませんので悪しからず。 Chrome/Firefox/Safariあたりで動作確認しています。</p>



<p>「PLAY」ボタンを押すと演奏が開始されるので、配置されているボタンやコントロールを適当にポチポチ押して遊んでみてください。</p>



<ul class="wp-block-list">
<li>デモ: <a href="http://mach3.github.io/tonegrid.js/">ToneGrid Demo</a></li>



<li>リポジトリ: <a href="https://github.com/mach3/tonegrid.js">mach3/tonegrid.js</a></li>
</ul>



<h3 class="wp-block-heading">特徴</h3>



<p>オルゴールのように各音階のオシレータを用意してタイミングをあわせてボリュームを変更する仕組みです。</p>



<ul class="wp-block-list">
<li>スピード・サウンドのイージングを調節できる</li>



<li>スケール（調）を変更できる</li>



<li>音の種類は、Web Audio APIにデフォルトから実装されている Sine/Square/Triangle/Sawtooth から選択可能</li>
</ul>



<h3 class="wp-block-heading">未定な予定</h3>



<ul class="wp-block-list">
<li>SMF形式への変換機能でもつけてみようかとも思っていますが、 使われるかどうかわからないので、あくまでも「気が向いたら」</li>



<li>iOSでも動かなくはないですが、使いやすいように整形してあげたいです。</li>
</ul>



<h2 class="wp-block-heading">まとめ</h2>



<p>Webの技術で楽器が作れる時代です。 楽器をやる人間としては、楽しい事この上無いですね。現場からは以上です。</p>



<p><iframe src="http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=FFFFFF&amp;IS2=1&amp;nou=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=mach3ss-22&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=ss_til&amp;asins=B002WLHHBK" style="width:120px;height:240px;float:left;margin-right:1em;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>



<p><iframe src="http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=FFFFFF&amp;IS2=1&amp;nou=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=mach3ss-22&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=ss_til&amp;asins=B002WLLA18" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>モールス信号で遊び、学ぶアプリ 「TOOTONE（ツートン）」</title>
		<link>https://blog.mach3.jp/2014/09/02/tootone-net.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Tue, 02 Sep 2014 01:36:39 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Morse]]></category>
		<category><![CDATA[Web Audio API]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=3874</guid>

					<description><![CDATA[JavaScript でモールス信号を再現するアプリケーション「TOOTNE（ツートン）」を公開しました。 TOOTNE [ツートン] TOOTONE [ツートン] &#8211; モールス信号で遊び、学ぶ。 TOOTO [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>JavaScript でモールス信号を再現するアプリケーション「TOOTNE（ツートン）」を公開しました。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh6.googleusercontent.com/-a7W0rqlDvP4/VAVTzz0x6uI/AAAAAAAACkE/kdCfTlbDsKQ/s400/2014-0902-00.png" alt="モールス信号で遊び、学ぶアプリ 「TOOTONE（ツートン）」"/></figure>



<p></p>



<span id="more-3874"></span>



<h2 class="wp-block-heading">TOOTNE [ツートン]</h2>



<p><a href="http://tootone.net/">TOOTONE [ツートン] &#8211; モールス信号で遊び、学ぶ。</a></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>TOOTONEは、モールス信号で遊びながら学ぶアプリケーションです。<br />
  手で打ったり、テキスト変換をしたりしながら思う存分ツートンしましょう。</p>
</blockquote>



<p>「JavaScriptでモールス信号」というのは少し前から課題にしていたのですが、 ある程度まとまった形になったのでWebアプリケーションにしてみました。</p>



<h3 class="wp-block-heading">使い方</h3>



<p>誰しもおおまかな所はしっているとは思いますが、「モールス信号」そのものについては <a href="http://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%BC%E3%83%AB%E3%82%B9%E7%AC%A6%E5%8F%B7">Wikipediaの説明</a> でも見て頂くとしましょう。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh5.googleusercontent.com/-KnVyBC_doZo/VATHRFJwbZI/AAAAAAAACjk/43TG29wNSGo/s500/2014-0902-01.png" alt="TOOTNE"/></figure>



<p></p>



<p>TOOTONE では次の4つの方法でツートンする事ができます。</p>



<ol class="wp-block-list">
<li>キーボードの「T」をたたく</li>



<li>マウスでクリックする</li>



<li>スマートフォン・タブレット端末でタッチする</li>



<li>文章を入力して変換する</li>
</ol>



<p>「判定がシビアだ！」といった声を頂いておりますが、がんばってください。 長点と短点の差をハッキリさせて、ゆっくり打つのがコツです。</p>



<h3 class="wp-block-heading">ツートン辞書をみる</h3>



<p>アルファベット・カナ別に変換テーブルを掲載しています。 分からなくなったら参照してみましょう。</p>



<figure class="wp-block-image"><a href="http://tootone.net/dictionary"><img decoding="async" src="https://lh3.googleusercontent.com/-mB91XPdvy-E/VATHQwaDZ1I/AAAAAAAACjk/gZJh7tzPRFI/s500/2014-0902-02.png" alt="ツートン辞書"/></a></figure>



<p></p>



<h3 class="wp-block-heading">記録して、シェアする</h3>



<p>「記録」ボタンを押してツートンするか、「テキスト入力」モードで文章を入力すると、 そのメッセージをURLで「シェア」する事ができます。 シェアしたメッセージをお友達に送ってあげましょう。</p>



<p><a href="http://tootone.net/message/Wkf">TOOTONE [ツートン] &#8211; お預かりしているツートンメッセージです</a></p>



<figure class="wp-block-image"><a href="http://tootone.net/message/Wkf"><img decoding="async" src="https://lh4.googleusercontent.com/-xqZIzoQxkUo/VATHRbGeGqI/AAAAAAAACjk/VZEViH4UeB0/s500/2014-0902-03.png" alt="シェア"/></a></figure>



<p></p>



<h2 class="wp-block-heading">こぼれ話など</h2>



<p>以前LT枠で参加させて頂いた「HTML5飯」では「Web Audio APIとモールス信号」をお題とさせていただきました。 （発表のスライドは<a href="http://www.slideshare.net/mach3ss/slide-37613454">こちら</a>）</p>



<p>LTした時点ではオシレータについてよく理解していなかったので、信号の音声ファイルを作ってそれを読み込んで再生していましたが、 参加者の方からオシレータを勧められて試しに実装してみたところ、中身が非常にシンプルにまとまるではないですか！ さらに、悩まされていた iOS での不具合も解消されているのです。</p>



<p>これは面白いと思って、ついつい脇道にそれまくって出来上がったのが <a href="http://mach3.github.io/oscy.js/">Oscy.js</a> でした。 （楽器はTOOTONEの後に着手しようと思っていたのですが…）</p>



<p>cf) <a href="/2014/08/19/oscyjs.html">Web Audio API の Oscillator で楽器を作りたい話 – Mach3.laBlog</a></p>



<h2 class="wp-block-heading">まとめ</h2>



<p>Web Audio API 面白いですね！</p>



<p>対応環境が増えて普通に使えるようになる日を心待ちにしています。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Web Audio API の Oscillator で楽器を作りたい話</title>
		<link>https://blog.mach3.jp/2014/08/19/oscyjs.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Tue, 19 Aug 2014 01:00:50 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Oscillator]]></category>
		<category><![CDATA[Slides]]></category>
		<category><![CDATA[Web Audio API]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=3867</guid>

					<description><![CDATA[横浜で行われたHTML5飯でWeb Audio APIでモールス信号を表現してみる話をさせて頂いたのが今月頭の話。 その際に「Oscillator使えばよい」というアドバイスを頂いたので調べてみたところ、 「これで楽器を [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>横浜で行われた<a href="http://level0.kayac.com/#!2014/08/5.php">HTML5飯</a>でWeb Audio APIでモールス信号を表現してみる話をさせて頂いたのが今月頭の話。 その際に「Oscillator使えばよい」というアドバイスを頂いたので調べてみたところ、 「これで楽器をつくってみたい」と思って試してみた話を <a href="http://togetter.com/li/707885">Yokohama.js</a> でしゃべらせていただきました。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/-ddF26QXnohM/U_H_wggI7yI/AAAAAAAAChg/ZMdQcqhlpf0/s400/2014-0818-00.png" alt="Web Audio API の Oscillator で楽器を作りたい話"/></figure>



<p></p>



<span id="more-3867"></span>



<h2 class="wp-block-heading">Oscillator で楽器を作りたい！</h2>



<p><iframe src="http://www.slideshare.net/slideshow/embed_code/38061901" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen=""> </iframe></p>



<p>こちらが当日の資料です。ざっくり言うと…</p>



<ul class="wp-block-list">
<li>Oscillator はオシレーターであってオスシレーターではない</li>



<li>Oscillator は周波数・デチューン・波形をいじることでいろんな音になる</li>



<li>作ってみた物の紹介・デモ</li>
</ul>



<p>といった内容をお話しました。</p>



<h2 class="wp-block-heading">作ってみたデモ（Oscy.js）</h2>



<p>そして作ってみたデモがこちら。 <strong>触ると音が出るのでご注意ください。</strong></p>



<ul class="wp-block-list">
<li><a href="http://mach3.github.io/oscy.js/">Oscy.js (http://mach3.github.io/oscy.js)</a></li>
</ul>



<p>Web Audio API に対応していない環境ではウンともスンとも言わないどころか描画もしませんのでご了承ください。 デスクトップのChromeやFirefox、iOS Safariなどで動きます。 Android は Chrome等であれば動くようです。</p>



<h2 class="wp-block-heading">Oscillator の使い方をものすごくざっくり説明する</h2>



<p>環境によってクラス名やメソッド名が違ったりするのでご注意ください。 AudioContext が webkitAudioContext だったり、createGain が createGainNode だったりします。</p>



<h3 class="wp-block-heading">とりあえず鳴らす</h3>



<p>まずはじめにAudioContextを用意します。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">var</span> context = <span class="hljs-keyword">new</span> AudioContext();
</code></span></pre>


<p>次に、Oscillatorノード（音を生成する人）と Gainノード（音量を調節する人）を用意します。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">var</span> oscillator = context.createOscillator();
<span class="hljs-keyword">var</span> gain = context.createGain();
</code></span></pre>


<p>これらを出力先（destination）に接続します。Gainノードは生成元と出力先の間に挟まってエフェクタのように機能します。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-comment">// oscillator =&gt; gain =&gt; destination</span>
oscillator.connect(gain);
gain.connect(context.destination);
</code></span></pre>


<p>音を出します。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">oscillator.start(<span class="hljs-number">0</span>); <span class="hljs-comment">// &lt; プーーーーーーーーー</span>
</code></span></pre>


<h3 class="wp-block-heading">音を変えてみる</h3>



<p>周波数（frequency）・デチューン（detune）・波形（type）を変える事で様々な音に変化します。 音量の調節は Gainノードで行います。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-comment">// AからA#の音にかわります</span>
oscillator.frequency.value = (<span class="hljs-number">440</span> * <span class="hljs-number">1.06</span>);

<span class="hljs-comment">// 微妙に音高がかわります</span>
oscillator.detune.value = <span class="hljs-number">100</span>;

<span class="hljs-comment">// "sine" から "triangle" の音に変わります。少し硬い音になります。</span>
oscillator.type = <span class="hljs-string">"triangle"</span>;

<span class="hljs-comment">// 音量の調節はGainノードで調節します。</span>
gain.gain.value = <span class="hljs-number">0.5</span>;
</code></span></pre>


<h2 class="wp-block-heading">調べていきたい事・課題など</h2>



<h3 class="wp-block-heading">リバーブエフェクト</h3>



<p>デモでは音量をイージング関数でいじって似非リバーブエフェクトをかけていますが、 Convolver を使う事でより自然な音響効果を付与する事が出来るようです。 その為には音響効果の元となるインパルスレスポンス（IR）データが必要になります。 IRデータをシェアするWebサイト等もあるので参考にしてみましょう。</p>



<ul class="wp-block-list">
<li><a href="http://www.voxengo.com/impulses/">Free Reverb Impulse Responses &#8211; Voxengo</a></li>



<li><a href="http://www.openairlib.net/">OpenAIR | The Open Acoustic Impulse Response Library</a></li>
</ul>



<h3 class="wp-block-heading">自作の波形テーブル</h3>



<p>createPeriodicWave / setPeriodicWave を使用して自作の波形テーブルを指定する事で様々な音色を出すことができます。 が、スペクトラムとかハーモニクスとかフーリエとかちょっとなにいってんのかぜんぜんわかんないので、今度の課題にしましょう。</p>



<p>Chromiumのリポジトリに波形テーブルのサンプルがありましたので、こちらも参考まで。</p>



<ul class="wp-block-list">
<li><a href="http://chromium.googlecode.com/svn/trunk/samples/audio/wave-tables">http://chromium.googlecode.com/svn/trunk/samples/audio/wave-tables</a></li>
</ul>



<h2 class="wp-block-heading">まとめ</h2>



<p>音の生成はちょっと踏み込むとドツボにはまりそうな奥深さがありますが、かなり面白いテーマですね。 またアップデートしていきたいと思います。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
