Skip to content

Commit 1874e2a

Browse files
authored
Merge pull request #24 from rocketinventor/master
Updated song parser for JS
2 parents 71bf181 + 143532f commit 1874e2a

File tree

4 files changed

+427
-48
lines changed

4 files changed

+427
-48
lines changed

In Javascript/airgap.html

+32-3
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,38 @@
1616
<div class="content">
1717
</br>
1818
<input type="button" value="Play Song" onclick="start()"></br></br>
19-
<textarea id="logs" style="width:70%;min-height:300px">Tested with Chrome at 1560Khz
20-
</textarea>
21-
<div style="font-size:14px">Ported by Yeo Quan Yang. Credits to the original author William Entriken @https://github.com/fulldecent</div><br/>
19+
<textarea id="logs" style="width:70%;min-height:100px">Tested with Chrome at 1560Khz</textarea>
20+
<p style="font-size:14px">Feel free to edit the code below or copy and paste any <em>valid</em> code.<br>Column one is time in <i>milliseconds</i>, and column two is <i>frequency</i>.</p>
21+
<textarea id="tones" style="width:70%;min-height:200px">
22+
400 2673
23+
400 2349
24+
400 2093
25+
400 2349
26+
400 2673
27+
400 2673
28+
790 2673
29+
400 2349
30+
400 2349
31+
790 2349
32+
400 2673
33+
400 3136
34+
790 3136
35+
400 2673
36+
400 2349
37+
400 2093
38+
400 2349
39+
400 2673
40+
400 2673
41+
400 2673
42+
400 2673
43+
400 2349
44+
400 2349
45+
400 2673
46+
400 2349
47+
790 2093</textarea>
48+
<div style="font-size:14px">Ported by <a href="https://github.com/quanyang">Yeo Quan Yang</a> & maintained by <a href="https://github.com/rocketinventor">Elliot Gerchak</a>.
49+
<br>
50+
Original machine code by <a href="https://github.com/fulldecent">William Entriken</a>.</div><br/>
2251
<div style="font-size:14px">Project site at <a href="https://github.com/fulldecent/system-bus-radio">https://github.com/fulldecent/system-bus-radio</a></div><br/>
2352
<div style="font-size:14px">List of computers that work and what frequency to try at <a href="https://github.com/fulldecent/system-bus-radio/blob/master/TEST-DATA.tsv">https://github.com/fulldecent/system-bus-radio/blob/master/TEST-DATA.tsv</a></div>
2453
</div>

In Javascript/airgap.js

+32-45
Original file line numberDiff line numberDiff line change
@@ -3,56 +3,43 @@
33
//Tested to be working on Chrome at 1560khz
44

55
function now() {
6-
return performance.now()*1000000;
6+
return window.performance.now() * 1000000;
77
}
88

99
var NSEC_PER_SEC = 1000000000;
10-
var register = 3.1415
10+
var register = 3.1415;
1111

12-
function square_am_signal(time,freq) {
13-
document.getElementById('logs').value += "Playing / "+time+" seconds / "+freq+"Hz\n";
14-
var period = NSEC_PER_SEC/freq;
15-
var start = now();
16-
var end = now()+time*NSEC_PER_SEC;
17-
while (now() < end) {
18-
var mid = start+period/2;
19-
var reset = start+period;
20-
while (now()<mid) {
21-
for (i = 0; i < 100; i++) {
22-
register = 1 - Math.log(register) / 1.7193
23-
}
24-
}
25-
while(now() < reset){
26-
}
27-
start = reset
28-
}
12+
function square_am_signal(time, freq) {
13+
document.getElementById('logs').value += "Playing / " + time + " seconds / " + freq + "Hz\n";
14+
var period = NSEC_PER_SEC / freq;
15+
var start = now();
16+
var end = now() + time * NSEC_PER_SEC;
17+
while (now() < end) {
18+
var mid = start + period / 2;
19+
var reset = start + period;
20+
while (now() < mid) {
21+
for (var i = 0; i < 100; i++) {
22+
register = 1 - Math.log(register) / 1.7193;
23+
}
24+
}
25+
while (now() < reset) {}
26+
start = reset;
27+
}
2928
}
3029

3130
function start() {
32-
square_am_signal(0.400, 2673);
33-
square_am_signal(0.400, 2349);
34-
square_am_signal(0.400, 2093);
35-
square_am_signal(0.400, 2349);
36-
square_am_signal(0.400, 2673);
37-
square_am_signal(0.400, 2673);
38-
square_am_signal(0.790, 2673);
39-
square_am_signal(0.400, 2349);
40-
square_am_signal(0.400, 2349);
41-
square_am_signal(0.790, 2349);
42-
square_am_signal(0.400, 2673);
43-
square_am_signal(0.400, 3136);
44-
square_am_signal(0.790, 3136);
45-
square_am_signal(0.400, 2673);
46-
square_am_signal(0.400, 2349);
47-
square_am_signal(0.400, 2093);
48-
square_am_signal(0.400, 2349);
49-
square_am_signal(0.400, 2673);
50-
square_am_signal(0.400, 2673);
51-
square_am_signal(0.400, 2673);
52-
square_am_signal(0.400, 2673);
53-
square_am_signal(0.400, 2349);
54-
square_am_signal(0.400, 2349);
55-
square_am_signal(0.400, 2673);
56-
square_am_signal(0.400, 2349);
57-
square_am_signal(0.790, 2093);
31+
var song = document.getElementById("tones").value.split("\n");
32+
var length = song.length;
33+
var line, time, freq;
34+
for (var i = 0; i < length; i++) {
35+
line = song[i].split(" ");
36+
if (line[1] == "0") {
37+
// delay
38+
}
39+
else {
40+
freq = +line[1];
41+
time = +line[0];
42+
square_am_signal(time, freq);
43+
}
44+
}
5845
}

In Javascript/main.css

+11
Original file line numberDiff line numberDiff line change
@@ -97,4 +97,15 @@ input[type="text"]:focus ,input[type="password"]:focus,textarea:focus,select:foc
9797
input, textarea, keygen, select, button, isindex {
9898
outline:none;
9999
resize: none;
100+
}
101+
a
102+
{
103+
color: white;
104+
font-weight:bold;
105+
background-color: rgba(220, 220, 220, 0.35);
106+
text-decoration:none;
107+
}
108+
a:hover
109+
{
110+
background-color: rgba(240, 240, 240, 0.52);
100111
}

0 commit comments

Comments
 (0)