Comment
Dans le fichier /etc/default/grub
, définissez la variable GRUB_INIT_TUNE
sur la mélodie souhaitée.
Par exemple: GRUB_INIT_TUNE="2000 400 4 0 1 500 4 0 1 600 4 0 1 800 6"
Une fois terminé, appliquez vos modifications avec sudo update-grub2
.
Morceaux existants
(Ceux que j'ai pu trouver)
- Mario Bros. Champignon Powerup :
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
- Marche de la mort impériale de Star Wars :
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
- Air de xiè-jìléi (ascendant):
2000 400 4 0 1 500 4 0 1 600 4 0 1 800 6
- La mélodie d'Adams (comme une sonnerie pour moi):
480 220 1 277 1 330 1 440 1 185 1 220 1 277 1 370 1 294 1 370 1 440 1 587 1 330 1 415 1 494 1 659 1
Plus ici .
Comprendre une mélodie
La syntaxe est: GRUB_INIT_TUNE="
tempo [pitch1 duration1] [pitch2 duration2] ...
"
Le tempo est la base de toutes les durées de note. 60 donne une base d'une seconde, 120 donne une base d'une demi-seconde, etc. Les hauteurs sont en Hz. Réglez la hauteur sur 0 pour produire un repos.
Source: la documentation de grub , la documentation de la commande grub play (même page).
Prévisualiser / tester un morceau
Si vous voulez tester la mélodie: Installez sox
et utilisez le script de ce fil ubuntuforum.org (légèrement modifié par moi pour supprimer les avertissements):
grub-playtune
#!/bin/dash
if [ $# -lt 3 ]; then
echo "Usage: $0 tempo freq dur [freq dur freq dur...]" >&2
exit 1
fi
tempo=$1; shift
tmpdir=$(mktemp -d)
while [ -n "$*" ]; do
freq=$1; shift
dur=$1; shift
dur=$(echo "$dur*(60/$tempo)"|bc -l)
sox -e mu-law -r 8000 -n -t raw - synth $dur sine $freq >>$tmpdir/grubtune.ul 2> /dev/null
done
play -q -c1 -r 8000 $tmpdir/grubtune.ul
rm -r $tmpdir
Pour le rendre exécutable chmod +x grub-playtune
Exemple d'utilisation:
grub-playtune 2000 400 4 0 1 500 4 0 1 600 4 0 1 800 6
Fréquence d'une note
Un script basé sur python3 pour calculer la fréquence d'une note:
pas
#!/bin/bash
python3 -c "print(*(int(0.5 + 440 * 2 ** (note/12)) for note in (${*/%/,})))"
Utilisez des exemples:
$ pitch 0 # gives you A_4
440
$ pitch 2 # gives you B_4
494
$ pitch -2 # gives you G_3
392
$ pitch -12 0 12 # gives you A_3, A_4 and A_5
220 440 880
Tableau des fréquences
Un est disponible ici . Il peut également être généré, en utilisant le script ci-dessus comme ceci:
$ pitch {-12..0} # A_3 to A_4
220 233 247 262 277 294 311 330 349 370 392 415 440
$ pitch {0..12} # A_4 to A_5
440 466 494 523 554 587 622 659 698 740 784 831 880
$ pitch {12..24} # A_5 to A_6
880 932 988 1047 1109 1175 1245 1319 1397 1480 1568 1661 1760