Skip to content

Instantly share code, notes, and snippets.

@ArtBIT
Last active October 5, 2025 06:37
Show Gist options
  • Select an option

  • Save ArtBIT/cfb030c0791b42330381acce33f82ca0 to your computer and use it in GitHub Desktop.

Select an option

Save ArtBIT/cfb030c0791b42330381acce33f82ca0 to your computer and use it in GitHub Desktop.
A collection of GRUB init tunes

Super Mario

GRUB_INIT_TUNE="1000 334 1 334 1 0 1 334 1 0 1 261 1 334 1 0 1 392 2 0 4 196 2"

Demo

Super Mario - Coin

GRUB_INIT_TUNE="600 988 1 1319 8"

Demo

Super Mario - Mushroom

GRUB_INIT_TUNE="1750 523 1 392 1 523 1 659 1 784 1 1047 1 784 1 415 1 523 1 622 1 831 1 622 1 831 1 1046 1 1244 1 1661 1 1244 1 466 1 587 1 698 1 932 1 1195 1 1397 1 1865 1 1397 1"

Demo

Close Encounters

GRUB_INIT_TUNE="220 900 2 1000 2 800 2 400 2 600 3"

Demo

Für Elise

GRUB_INIT_TUNE="480 420 1 400 1 420 1 400 1 420 1 315 1 370 1 335 1 282 3 180 1 215 1 282 1 315 3 213 1 262 1 315 1 335 3 213 1 420 1 400 1 420 1 400 1 420 1 315 1 370 1 335 1 282 3 180 1 215 1 282 1 315 3 213 1 330 1 315 1 282 3"

Demo

Star Wars: Imperial March

GRUB_INIT_TUNE="480 440 4 440 4 440 4 349 3 523 1 440 4 349 3 523 1 440 8 659 4 659 4 659 4 698 3 523 1 415 4 349 3 523 1 440 8"

Demo

Wolfenstein 3D

GRUB_INIT_TUNE="300 131 1 196 1 196 1 196 1 294 1 196 1 294 1 196 1 131 1"

Demo

Mall (Nothing Special)

GRUB_INIT_TUNE="180 440 1 554 1 659 1"

Demo

My Little Pony

GRUB_INIT_TUNE="2400 587 18 554 4 587 8 659 12 587 16 0 10 587 4 659 4 740 8 587 4 784 12 740 8 659 8 587 4 740 20 587 40"

Demo

@ivystopia
Copy link

Secret / unlock jingle from classic Zelda games

GRUB_INIT_TUNE="500 784 1 740 1 622 1 440 1 415 1 659 1 831 1 1047 3"

@Zwero1
Copy link

Zwero1 commented Aug 23, 2025

surasshu - eek!

880 72 4 0 4 53 2 0 4 53 1 0 1 72 4 0 4 53 2 0 4 53 1 0 1 72 4 0 4 53 2 0 4 53 1 0 1 36 4 0 8 427 4 504 1 537 1 570 2 852 1 0 3 1015 1 0 3 1135 1 0 3 852 1 0 1 804 1 0 1 758 4 0 4 570 2 674 1 0 1 715 4 759 1 0 3 852 4 1015 1 0 3 715 4 0 12 599 1 640 1 715 2 852 1 0 3 952 1 0 3 852 1 0 3 1204 1 0 1 952 1 0 1 851 4 0 4 849 2 804 1 0 1 759 4 570 1 0 3 640 4 570 1 0 3 537 4 0 12 429 1 453 1 478 2 952 1 0 3 1135 1 0 3 1275 1 0 3 952 1 0 1 901 1 0 1 851 4 0 4 759 2 852 1 0 1 852 1 901 3 759 1 0 3 429 1 453 3 382 1 0 3 286 4 0 12 504 1 537 1 570 2 852 1 0 3 1015 1 0 3 1135 1 0 3 852 1 0 1 804 1 0 1 758 4 0 4 570 2 674 1 0 1 715 4 759 1 0 3 852 4 1015 1 0 3 715 4 0 12 599 1 640 1 715 2 852 1 0 3 952 1 0 3 852 1 0 3 1204 1 0 1 952 1 0 1 852 4 0 4 849 2 804 1 0 1 759 4 570 1 0 3 640 4 570 1 0 3 537 4 0 12 429 1 453 1 478 2 952 1 0 3 1135 1 0 3 1275 1 0 3 952 1 0 1 901 1 0 1 851 4 0 4 759 2 852 1 0 1 852 1 901 3 759 1 0 3 429 1 453 3 382 1 0 3 286 4 0 12 97 1 118 1 145 1 118 1 145 1 191 1 145 1 191 1 239 1 189 1 239 1 284 1 239 1 284 1 374 1 469 1 109 1 145 1 169 1 145 1 169 1 222 1 169 1 222 1 283 1 222 1 283 1 334 1 285 1 334 1 448 1 557 1 119 1 155 1 191 1 156 1 193 1 242 1 192 1 241 1 314 1 242 1 314 1 378 1 314 1 378 1 471 1 623 1 131 1 156 1 213 1 156 1 213 1 266 1 213 1 266 1 315 1 266 1 315 1 422 1 314 1 422 1 526 1 622 1 709 8 559 2 666 2 707 2 841 2 933 1 1002 3 1128 2 934 1 1001 3 1128 2 834 1 784 1 749 2 697 1 659 1 559 2 498 2 417 2 372 2 333 2 280 2 567 5 567 1 567 1 700 1 555 1 498 2 422 1 397 1 372 2 351 2 294 1 314 1 352 2 417 2 470 2 557 1 588 1 627 2 707 2 841 2 945 4 1268 2 1197 2 944 2 842 2 707 2 629 2 696 1 753 3 842 2 944 2 1128 2 1268 2 1128 2 841 2 947 3 945 1 935 1 1048 1 944 2 841 2 749 2 707 2 559 2 738 1 697 1 749 2 842 2 749 2 706 2 666 2 627 2 593 2 559 2 933 1 1116 1 1268 2 1418 2 1268 2 1128 2 944 2 841 2 738 1 696 1 749 2 707 2 628 2 559 2 944 2 841 2 628 2 565 4

@CmosTheBattery
Copy link

rude buster

3000 0 1 261 1 196 1 146 1 110 1 92 8 220 1 246 1 329 1 185 1 0 2 261 1 196 1 146 1 110 1 92 2 261 1 196 1 146 1 110 1 0 2 220 1 246 1 329 1 185 1 0 2 261 1 196 1 146 1 110 1 98 8 261 1 196 1 146 1 98 1 0 2 98 12 220 1 246 1 329 1 98 1 0 2 261 1 196 1 146 1 110 1 98 8 261 1 196 1 146 1 110 1 277 1 370 1 196 1 277 1 370 1 196 1 277 1 370 1 261 1 196 1 146 1 110 1 61 8 138 1 146 1 220 1 123 1 0 2 261 1 196 1 146 1 110 1 61 2 261 1 196 1 146 1 110 1 0 2 138 1 146 1 220 1 123 1 0 2 261 1 196 1 146 1 110 1 69 8 261 1 196 1 146 1 138 1 0 2 69 12 155 1 174 1 233 1 138 1 0 2 261 1 196 1 146 1 110 1 82 6 92 2 261 1 196 1 146 1 110 1 220 1 277 1 185 1 220 1 277 1 185 1 220 1 277 1 261 1 196 1 146 1 110 1 92 8 220 1 246 1 329 1 185 1 0 2 261 1 196 1 146 1 110 1 92 2 261 1 196 1 146 1 110 1 0 2 220 1 246 1 329 1 185 1 0 2 261 1 196 1 146 1 110 1 98 8 261 1 196 1 146 1 98 1 0 2 98 12 220 1 246 1 329 1 98 1 0 2 261 1 196 1 146 1 110 1 98 8 261 1 196 1 146 1 110 1 277 1 370 1 196 1 277 1 370 1 196 1 277 1 370 1 261 1 196 1 73 1 146 1 185 1 220 1 277 1 146 1 185 1 220 1 277 1 146 1 0 6 261 1 196 1 69 1 138 1 164 1 207 1 246 1 138 1 164 1 207 1 246 1 138 1 164 1 207 1 246 1 138 1 164 1 207 1 261 1 196 1 146 1 110 1 0 8 261 1 196 1 92 1 185 1 220 1 277 1 329 1 185 1 220 1 277 1 329 1 185 1 220 1 277 1 329 1 185 1 220 1 277 1 329 1 185 1 220 1 277 1 329 1 185 1 261 1 196 1 146 1 110 1 207 2 0 6 185 1 220 2 185 1 220 2 185 1 220 2 185 1
preview
(note : i did NOT do this by hand, i used a dev build of furnace)

@unique-EJ
Copy link

Mall / Customer Service call sounds good to me as

https://breadmaker.github.io/grub-tune-tester/?tune=170%20440%201%20554%201%20659%202 ( 170 440 1 554 1 659 2 )

@unique-EJ
Copy link

unique-EJ commented Sep 2, 2025

@maimere
Copy link

maimere commented Sep 4, 2025

Classic Game Boy opening tune (demo)
600 1046 1 2093 5

@TheRedBlueCube3
Copy link

TheRedBlueCube3 commented Sep 9, 2025

here's the code to convert this to a beep shell script

// GIT2BEEPSH by neon1246
const fs = require("node:fs");

const tune = fs.readFileSync("tune.txt", { "encoding": "utf-8" });
const nums = tune.split(" ");

const tempo = parseInt(nums[0]);

let beepscript = `#!/bin/bash
beep --verbose `;
let thingended;

nums.forEach((v, i) => {
    if (i == 0) return;
    if (i % 2) {
        thingended = false;
        beepscript += `-f ${v == 0 ? 1 : v} `
    } else {
        thingended = true;
        beepscript += `-l ${(60 / tempo * parseInt(v)) * 1000} `
    }
    if (thingended && i != nums.length - 1) beepscript += "-n ";
})

fs.writeFileSync("beep.sh", beepscript);
fs.chmod("beep.sh", 0o755, () => console.log("beep"));

@janosmolnar
Copy link

Duke Nukem 3d intro :

12913 47 36 55 36 0 36 62 36 0 36 0 36 47 36 62 36 0 36 70 36 0 36 0 36 47 36 70 36 0 36 74 36 0 36 47 36 0 36 70 76 62 36 55 36 47 36 42 36 44 36 47 36 50 76 62 36 55 36 47 36 47 36 55 36 0 36 62 36 0 36 0 36 47 36 62 36 0 36 70 36 0 36 0 36 47 36 70 36 0 36 74 36 0 36 47 36 0 36 70 76 62 36 55 36 47 36 50 36 53 36 62 36 50 76 62 36 55 36 50 36

@denilsonsa
Copy link

denilsonsa commented Oct 1, 2025

Based on the previous tune, I've done some variations that are shorter:

The beginning of the Duke Nukem 3D theme, lasting 5.3 seconds (essentially, the first half of the previous comment).

360 47 1 55 1 0 1 62 1 0 1 0 1 47 1 62 1 0 1 70 1 0 1 0 1 47 1 70 1 0 1 74 1 0 1 47 1 0 1 70 2 62 1 55 1 47 1 42 1 44 1 47 1 50 2 62 1 55 1 47 1

The first two parts of the Duke Nukem 3D theme, 12 notes, 2 seconds:

360 47 1 55 1 0 1 62 1 0 1 0 1 47 1 62 1 0 1 70 1 0 1 0 1

Only the first part of the Duke Nukem 3D theme, 6 notes, 1 second:

360 47 1 55 1 0 1 62 1 0 1 0 1

Shameless plug: I've curated some short tunes in a comment in the middle of this Gist. Why short tunes? Because playing these pc-speaker tunes blocks the boot process, and I don't want a computer taking considerably longer booting for this reason.

@unique-EJ
Copy link

unique-EJ commented Oct 2, 2025

On this subject of tunes from note tones, I used an online tone generator to help me add effects to my humming in Audacity (a free software multi-track audio editor), please would you share, listen to or comment on my original short "alien music" tune here ?? (in a playlist on YouTube Music)
Or the "music video" itself, link: https://www.youtube.com/watch?v=LsxiDU0M7FU - because the original audio track I uploaded to YouTube Music isn't public content.

@janosmolnar
Copy link

hmm not sure how the 360 works with the 1 my brain no understand :D

Based on the previous tune, I've done some variations that are shorter:

The beginning of the Duke Nukem 3D theme, lasting 5.3 seconds (essentially, the first half of the previous comment).

360 47 1 55 1 0 1 62 1 0 1 0 1 47 1 62 1 0 1 70 1 0 1 0 1 47 1 70 1 0 1 74 1 0 1 47 1 0 1 70 2 62 1 55 1 47 1 42 1 44 1 47 1 50 2 62 1 55 1 47 1

The first two parts of the Duke Nukem 3D theme, 12 notes, 2 seconds:

360 47 1 55 1 0 1 62 1 0 1 0 1 47 1 62 1 0 1 70 1 0 1 0 1

Only the first part of the Duke Nukem 3D theme, 6 notes, 1 second:

360 47 1 55 1 0 1 62 1 0 1 0 1

Shameless plug: I've curated some short tunes in a comment in the middle of this Gist. Why short tunes? Because playing these pc-speaker tunes blocks the boot process, and I don't want a computer taking considerably longer booting for this reason.

hmm not sure how the 360 works with the 1 my brain no understand :D but thanks for simplifying it. . Wish i could get the tune to play over the grub selection menu instead of before it.

@demperor-music
Copy link

Spooky scary skeletons:
115200 392 432 0 144 392 432 0 144 370 432 0 144 370 432 0 144 247 432 0 144 294 240 0 144 247 624 0 144 247 432 0 144 392 240 0 144 392 624 0 144 370 432 0 144 370 432 0 144 247 432 0 1296 247 240 0 336 392 432 0 144 392 432 0 144 370 432 0 144 370 432 0 144 247 432 0 144 294 432 0 144 247 912 0 240 294 432 0 144 330 432 0 144 277 432 0 144 294 432 0 144 247 432

@unique-EJ
Copy link

unique-EJ commented Oct 4, 2025

Spooky scary skeletons: 115200 392 432 0 144 392 432 0 144 370 432 0 144 370 432 0 144 247 432 0 144 294 240 0 144 247 624 0 144 247 432 0 144 392 240 0 144 392 624 0 144 370 432 0 144 370 432 0 144 247 432 0 1296 247 240 0 336 392 432 0 144 392 432 0 144 370 432 0 144 370 432 0 144 247 432 0 144 294 432 0 144 247 912 0 240 294 432 0 144 330 432 0 144 277 432 0 144 294 432 0 144 247 432

Nice, thank you! @demperor-music 👍

@denilsonsa
Copy link

hmm not sure how the 360 works with the 1 my brain no understand :D but thanks for simplifying it.

As per the description in that page:

tempo
The base time for all note durations, as beats per minute. 60 means 1 second notes. 120 means 0.5s notes, etc.

duration
Indicates its duration measured in bars. With a tempo of 60, 1 means a one second note, 2 means a two seconds note.

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