So after 13 year of off and on drumming I have learned a thing or two about music. Not much about tuning a guitar. Thanks to a class that I got a D in, Musical Acoustics, I know every note produces a frequency and a wavelength. With that you can now you Flash to produce a frequency and that is what I did, the six notes from left to right are the notes of a regularly tuned guitar.
Since I lost my Musical Acoustics book from UNT I had to look it up to find the Frequency of All Notes
and that pick the ones I wanted starting w/ E4.
So if you don't have a guitar tuner...here you go.
To view this you will need Flash Player 10
View Code:
-
package
-
{
-
import flash.display.*;
-
import flash.events.*;
-
import flash.media.Sound;
-
import flash.text.TextField;
-
-
public class GuitarTuner extends Sprite
-
{
-
private var _key1:Sprite;
-
private var _key2:Sprite;
-
private var _key3:Sprite;
-
private var _key4:Sprite;
-
private var _key5:Sprite;
-
private var _key6:Sprite;
-
-
private var _sound:Sound;
-
private var _note:Number = 0;
-
private var noise:Number = 0;
-
private var text:TextField = new TextField();
-
-
//Constants
-
private static const E4:String = "E4";
-
private static const A4:String = "A4";
-
private static const D4:String = "D5";
-
private static const G5:String = "G5";
-
private static const B5:String = "B5";
-
private static const E6:String = "E6";
-
-
public function GuitarTuner()
-
{
-
stage.scaleMode = StageScaleMode.NO_SCALE;
-
stage.align = StageAlign.TOP_LEFT;
-
_key1 = makeKey();
-
_key1.name = GuitarTuner.E4;
-
_key1.addEventListener(MouseEvent.CLICK, onClick, false, 0, true);
-
addChild(_key1);
-
-
_key2 = makeKey();
-
_key2.name = GuitarTuner.A4;
-
_key2.addEventListener(MouseEvent.CLICK, onClick, false, 0, true);
-
addChild(_key2);
-
_key2.x = spaceFromSibling(_key1, _key2);
-
-
_key3 = makeKey();
-
_key3.name = GuitarTuner.D4;
-
_key3.addEventListener(MouseEvent.CLICK, onClick, false, 0, true);
-
addChild(_key3);
-
_key3.x = spaceFromSibling(_key2, _key3);
-
-
_key4 = makeKey();
-
_key4.name = GuitarTuner.G5;
-
_key4.addEventListener(MouseEvent.CLICK, onClick, false, 0, true);
-
addChild(_key4);
-
_key4.x = spaceFromSibling(_key3, _key4);
-
-
_key5 = makeKey();
-
_key5.name = GuitarTuner.B5;
-
_key5.addEventListener(MouseEvent.CLICK, onClick, false, 0, true);
-
addChild(_key5);
-
_key5.x = spaceFromSibling(_key4, _key5);
-
-
_key6 = makeKey();
-
_key6.name = GuitarTuner.E6;
-
_key6.addEventListener(MouseEvent.CLICK, onClick, false, 0, true);
-
addChild(_key6);
-
_key6.x = spaceFromSibling(_key5, _key6);
-
-
addChild(text);
-
text.x = 300;
-
-
}
-
private function onCallback(e:SamplesCallbackEvent):void
-
{
-
for(var i:uint=0; i<512; i++)
-
{
-
noise += _note/ 44100;
-
-
var sample:Number = noise * Math.PI * 2;
-
_sound.samplesCallbackData.writeFloat(Math.sin(sample));
-
_sound.samplesCallbackData.writeFloat(Math.sin(sample));
-
}
-
}
-
-
private function onClick(evt:MouseEvent):void
-
{
-
-
_sound = new Sound();
-
_sound.addEventListener(Event.SAMPLES_CALLBACK, onCallback);
-
_sound.play();
-
var sprite:Sprite = Sprite(evt.currentTarget);
-
switch(sprite.name)
-
{
-
case "midC":
-
-
_note = 277.18;
-
-
break;
-
-
case GuitarTuner.E4:
-
-
_note = 329.63;
-
-
break;
-
-
case GuitarTuner.A4:
-
-
_note = 440.00;
-
-
break;
-
-
case GuitarTuner.D4:
-
_note = 587.33;
-
break;
-
-
case GuitarTuner.G5:
-
_note = 783.99;
-
break;
-
-
case GuitarTuner.B5:
-
_note = 987.77;
-
break;
-
-
case GuitarTuner.E6:
-
_note = 1318.51;
-
break;
-
}
-
-
text.text = String(_note);
-
-
}
-
-
private function makeKey():Sprite
-
{
-
var key:Sprite = new Sprite()
-
key.graphics.lineStyle(1, 0x000000);
-
key.graphics.beginFill(0xFFFFFF, 1);
-
key.graphics.drawRect(0, 0, 20, 50);
-
key.graphics.endFill();
-
return key;
-
}
-
-
public function spaceFromSibling(sibling:DisplayObject, target:DisplayObject,
-
coordinate:String = "x", distance:Number = 0):Number
-
{
-
var value:int;
-
-
switch(coordinate)
-
{
-
case "x":
-
value = sibling.x + sibling.width + distance;
-
break;
-
-
case "y":
-
value = sibling.y + sibling.height + distance;
-
-
break;
-
}
-
-
return Math.floor(value);
-
}
-
}
-
}
If this code doesn't make sense check out Lee Brimelow's tutorial on Dynamic Sound.
Last 5 posts in actionscript
- Flash Player 10 Dynamic Sound Generation - May 20th, 2008
- How to compile and examples for Flash Player 10 or ASTRO BETA - May 16th, 2008
- How to use Bitmap and BitmapData in ActionScript 3 - v2 - April 23rd, 2008
- How to use Bitmap and BitmapData in ActionScript 3 - v1 - April 21st, 2008
- How to add and remove Mediators in a actionscript-3 puremvc app - March 30th, 2008
Last 5 posts in as3
- Flash Player 10 Dynamic Sound Generation - May 20th, 2008
- How to load Pixel Bender in Flash Player 10 - May 19th, 2008
- How to compile and examples for Flash Player 10 or ASTRO BETA - May 16th, 2008
- How to use Bitmap and BitmapData in ActionScript 3 - v3 - April 29th, 2008
- How to use Bitmap and BitmapData in ActionScript 3 - v2 - April 23rd, 2008
Last 5 posts in flash
- Flash Player 10 Dynamic Sound Generation - May 20th, 2008
- How to load Pixel Bender in Flash Player 10 - May 19th, 2008
- How to compile and examples for Flash Player 10 or ASTRO BETA - May 16th, 2008
- How to use Bitmap and BitmapData in ActionScript 3 - v3 - April 29th, 2008
- How to use Bitmap and BitmapData in ActionScript 3 - v2 - April 23rd, 2008
Josh Weatherspoon, A self-proclaimed millionaire who for some reason has to work as a Flash Developer, at Travelocity in Dallas(Southlake), TX.


Sorry, no comments yet.