Skip to content

Instantly share code, notes, and snippets.

@snekse
Last active August 29, 2015 14:18
Show Gist options
  • Save snekse/5b2137dc3351f5d19ca8 to your computer and use it in GitHub Desktop.
Save snekse/5b2137dc3351f5d19ca8 to your computer and use it in GitHub Desktop.
Bitsbox Sound Explorer
//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
}
@snekse
Copy link
Author

snekse commented Apr 8, 2015

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment