曲げセンサで音を鳴らす。SiON
forked from Gainerで曲げセンサを使ってみる (diff: 55)
Gainerで値をとることができたから、 * 次はSiONライブラリを使って音をならしてみる。 * ナイキのあれみたいだね * あそこまでいいものじゃないけど(笑) * * SiONのことなら、ほかのサイトさんを参考にした * SiONの練習シリーズをどうぞ * http://wonderfl.net/c/ttPL *
ActionScript3 source code
/**
* Copyright umi_kappa ( http://wonderfl.net/user/umi_kappa )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/4qkP
*/
// forked from umi_kappa's Gainerで曲げセンサを使ってみる
/*Gainerで値をとることができたから、
* 次はSiONライブラリを使って音をならしてみる。
* ナイキのあれみたいだね
* あそこまでいいものじゃないけど(笑)
*
* SiONのことなら、ほかのサイトさんを参考にした
* SiONの練習シリーズをどうぞ
* http://wonderfl.net/c/ttPL
* */
package {
import flash.display.*;
import flash.events.*;
import flash.text.*;
import funnel.*;
import org.si.sion.*;
import org.si.sion.utils.*;
public class Main extends Sprite {
//Gainer--------------------------------------------------------
private var _gio:Gainer;
//曲げセンサーの入力を入れるピン
private var _mage_Pin:Pin;
//曲げセンサの値を表示するTextField
private var _tf:TextField;
//曲げセンサの値を保存する変数
private var _mage_value:int = 0;
//--------------------------------------------------------------
//SiON----------------------------------------------------------
private var sion_Driver:SiONDriver;
private var prisetVoice:SiONPresetVoice;
private var voice:SiONVoice;
//--------------------------------------------------------------
public function Main() {
_tf = new TextField();
addChild(_tf);
addEventListener(Event.ADDED_TO_STAGE, add);
}
//配置完了!
private function add(e:Event):void
{
removeEventListener(Event.ADDED_TO_STAGE, add);
gainer_set();
SiON_set();
addEventListener(Event.ENTER_FRAME, onEF);
}
private function SiON_set():void
{
sion_Driver = new SiONDriver;
prisetVoice = new SiONPresetVoice;
voice = new SiONVoice;
voice = prisetVoice["valsound.lead10"];
sion_Driver.play();
}
private function gainer_set():void
{
_gio = new Gainer();
//アナログINの0を使うよ
_mage_Pin = _gio.analogInput(0);
//フィルターをかける
_mage_Pin.addFilter(new Scaler(0.5, 0.8, 40, 120, Scaler.LINEAR, true));
_mage_Pin.addFilter(new Convolution(Convolution.MOVING_AVERAGE));
}
private function onEF(e:Event):void
{
//曲げセンサーの値を毎フレーム見る。
_mage_value = Math.round(_mage_Pin.value);
_tf.text = String(_mage_value);
//曲げセンサーの値をSiONに対応させる
sion_Driver.noteOn(_mage_value, voice, 1, 0, 0, 0, true);
}
}
}
