That's because the keydown event uses keyCode instead of charCode, and the two don't always match. Try typing Shift+U and then '[' on this page to see what I mean: http://unixpapa.com/js/testkey.html.
Since KeyboardJS is already loaded via requirejs, we can require it and then use it to get the keyCode for each character in the for loop.
var KeyboardJS = require('lib/keyboard');
[...]
for (var i = 0; i < input.length; ++i) {
var code = KeyboardJS.key.code(input.charAt(i));
if (code) {
soundArray.push(code);
} else {
soundArray.push(32);
}
}
Since KeyboardJS is already loaded via requirejs, we can require it and then use it to get the keyCode for each character in the for loop.
Here's an updated version of the script, using your example as input: https://gist.github.com/peterjmag/489364ca58330c348c33