I’m done playing with this so grab some notes in MP3 format and run the script. Do adapt it to your own likings and have fun!
<html>
<head>
<title>Music Bogosort</title>
<script>
function bogosortAndPlay() {
var notes = ["C", "D", "E", "F", "G", "A", "B"];
var sortedNotes = [];
while (sortedNotes.length < 6) {
var randomIndex = Math.floor(Math.random() * notes.length);
var randomNote = notes[randomIndex];
if (!sortedNotes.includes(randomNote)) {
sortedNotes.push(randomNote);
}
}
document.getElementById("unsorted_notes").innerHTML = "Unsorted notes: " + sortedNotes.join(", ");
// Bogosort (this is extremely inefficient)
while (!isSorted(sortedNotes)) {
shuffleArray(sortedNotes);
}
document.getElementById("sorted_notes").innerHTML = "Sorted notes: " + sortedNotes.join(", ");
playNotes(sortedNotes);
}
function isSorted(array) {
for (var i = 0; i < array.length - 1; i++) {
if (array[i] > array[i + 1]) {
return false;
}
}
return true;
}
function shuffleArray(array) {
for (var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
function playNotes(notes) {
var index = 0;
function playNextNote() {
if (index < notes.length) {
var audio = new Audio("notes/" + notes[index] + ".mp3");
audio.play();
index++;
// Delay between notes (adjust as needed)
setTimeout(playNextNote, 1000); // Delay of 1 second between notes
}
}
playNextNote();
}
</script>
</head>
<body>
<h1>Music Bogosort</h1>
<button onclick="bogosortAndPlay()">Sort and Play</button>
<p id="unsorted_notes"></p>
<p id="sorted_notes"></p>
</body>
</html>
![]()