Last active
August 29, 2015 14:18
-
-
Save snekse/5b2137dc3351f5d19ca8 to your computer and use it in GitHub Desktop.
Bitsbox Sound Explorer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//State config | |
var letterSize = 72 | |
var letterXPadding = 20 | |
var letterYPadding = 2 | |
var soundSize = 48 | |
var backLocation = [575, letterSize] | |
console.log(c123) | |
console.log(sounds) | |
//Cache master lists | |
var betArray = initAlphabetArray() | |
var betArrayLen = betArray.length | |
var sounds = c123.sounds | |
var showingAlphabet = false | |
var soundGrid | |
showAlphabet(); | |
function tap() { | |
showingAlphabet ? alphabetTap(x, y) : listTap(x, y) | |
} | |
function alphabetTap(x, y) { | |
var clickedItem = findGridClickItem(betArray, x, y) | |
if (clickedItem) { | |
showSounds(clickedItem.content) | |
} | |
} | |
function listTap(x, y) { | |
if (x >= backLocation[0] && y <= backLocation[1]) { | |
soundManager.stopAll() | |
showAlphabet() | |
return; | |
} else { | |
var clickedItem = findGridClickItem(soundGrid, x, y) | |
if (clickedItem) { | |
console.log('Clicked ' + clickedItem) | |
soundManager.createSound({ | |
url: clickedItem.content.file, | |
id: clickedItem.content.name | |
}) | |
soundManager.play(clickedItem.content.name) | |
//c123.Library.prototype.loadSound_(obj.content.name, obj.content.file) | |
//sound(obj.content.name) | |
} | |
} | |
} | |
function findGridClickItem(grid, x, y) { | |
for (var i = 0, l = grid.length, obj; i < l; i++) { | |
obj = grid[i] | |
if (x >= obj.x1 && x < obj.x2 && y > obj.y1 && y < obj.y2) { | |
return obj | |
} | |
} | |
return null | |
} | |
function showSounds(letter) { | |
reset() | |
soundGrid = [] | |
var colWidth = 386 | |
var count = 0 | |
var spacing = 10 | |
var x = 10 | |
var y = letterSize + soundSize //Offset by lettersize | |
for (s in sounds) { | |
if (sounds.hasOwnProperty(s)) { | |
var first = s.charAt(0); | |
console.log(sounds[s]) | |
if (letter.toLowerCase() == first.toLowerCase()) { | |
text(s, x, y, soundSize) | |
soundGrid[count] = new GridItem(new SoundObj(s, sounds[s]), x, x + colWidth - 10, y - soundSize, y) | |
count++; | |
if (count == 15) { | |
x += colWidth | |
y = letterSize + soundSize | |
} else { | |
y += soundSize + spacing | |
} | |
} | |
} | |
} | |
text('Back', 576, letterSize, letterSize) | |
showingAlphabet = false | |
} | |
function showAlphabet() { | |
reset() | |
for (var i = 0, obj; i < betArrayLen; i++) { | |
obj = betArray[i] | |
text(obj.content, obj.x1 + letterXPadding, obj.y2 - letterYPadding, letterSize) | |
} | |
showingAlphabet = true | |
} | |
function initAlphabetArray() { | |
var a = [], | |
bet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("") | |
var letter, x1, y1, x2, y2 | |
var letterYOffset = 5, | |
letterCharWidth = 50 | |
//Our starting positions | |
var x1 = 192 | |
var x2 = x1 + letterXPadding + letterCharWidth + letterXPadding | |
var y1, y2 = letterYOffset | |
for (var i = 0, l = bet.length; i < l; i++) { | |
letter = bet[i] | |
y1 = y2 + 1 | |
y2 = y1 + letterYPadding + letterSize + letterYPadding | |
console.log('Coord: ' + x1 + ' ' + x2 + ' ' + y1 + ' ' + y2 + ' ') | |
a[i] = new GridItem(letter, x1, x2, y1, y2) | |
if (i == 12) { | |
x1 = x2 + 225 - letterXPadding | |
x2 = x1 + letterXPadding + letterCharWidth + letterXPadding | |
y2 = letterYOffset | |
} | |
} | |
return a | |
} | |
function GridItem(content, x1, x2, y1, y2) { | |
this.content = content | |
this.x1 = x1 | |
this.x2 = x2 | |
this.y1 = y1 | |
this.y2 = y2 | |
return this | |
} | |
function SoundObj(name, file) { | |
this.name = name | |
this.file = file | |
return this | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
A quick Bitsbox app to explore the sounds available via the SoundManager. Note: These may not be available using the global
sound
function as not every sound it initialized during bootstrapping.