-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNokiaPlayer.js
More file actions
79 lines (58 loc) · 1.45 KB
/
Copy pathNokiaPlayer.js
File metadata and controls
79 lines (58 loc) · 1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*
A minimalistic player for Bruce firmware devices (equipped with a speaker)
that uses melodies written using RTTTS format.
Proper preparation of the melodies file took longer than writing of the code
by gib
*/
const keyboard = require('keyboard');
const storage = require('storage');
const display = require("display");
const dialog = require('dialog');
const melodyFile = {fs: "sd", path:"/melodies.rttts"};
display.setTextColor(BRUCE_PRICOLOR);
display.fill(BRUCE_BGCOLOR);
function loadFile(name){
var raw = storage.read(name);
raw = raw.replace(/\r/g, "");
var lined = raw.split("\n");
return lined;
}
function getIndex(ofWhat){
var chosen = dialog.choice(ofWhat);
for(var i = 0; i < ofWhat.length; i++){
if(ofWhat[i].indexOf(chosen) === 0){
return i;
}
}
}
function extractNames(fromWhat){
var tmpList = [];
for(var i = 0; i < fromWhat.length; i++){
tmpList.push(fromWhat[i].split(":")[0]);
}
return tmpList;
}
function playSong(tune){
serial.cmd("music_player " + tune);
}
function displayStuff(what){
display.fill(BRUCE_BGCOLOR);
dialog.drawStatusBar();
display.setTextSize(2.5);
display.setCursor(0, 50);
display.println("Playing:\n" + what);
}
function main(){
var bDoRun = true;
var melody = loadFile(melodyFile);
var names = extractNames(melody);
while(bDoRun){
if(keyboard.getEscPress()){
bDoRun = false;
}
var index = getIndex(names);
displayStuff(names[index]);
playSong(melody[index]);
}
}
main();