曲げセンサで音を鳴らす。SiON

by umi_kappa forked from Gainerで曲げセンサを使ってみる (diff: 55)
Gainerで値をとることができたから、
* 次はSiONライブラリを使って音をならしてみる。
* ナイキのあれみたいだね
* あそこまでいいものじゃないけど(笑)
* 
* SiONのことなら、ほかのサイトさんを参考にした
* SiONの練習シリーズをどうぞ
* http://wonderfl.net/c/ttPL
* 
♥0 | Line 50 | Modified 2010-06-30 12:11:47 | MIT License
play

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);
		}
    }
}

Forked