Jouer un son avant ou après le chargement de GRUB

14

J'ai reçu un son sympa de Linux Defender ou Knoppix (ou autre chose, je ne me souviens pas lequel) qui dit "lancer la séquence de démarrage" Et je veux l'utiliser aussi tôt que possible dans le processus de démarrage. Le faire dire que lorsque je me connecte n'aurait pas beaucoup de sens, il serait donc préférable de le faire jouer au démarrage de GRUB. Peut-on le faire?

Ruben
la source
2
C'était knoppix. :) Je ne m'en souviens que parce que c'était ma première distribution Linux.
Azendale
Juste avertissement: ce sera probablement très fort.
Nonny Moose

Réponses:

9

Selon le manuel GRUB, la première note est un «tempo», et chaque paire de nombres suivante est la durée et la hauteur.

La hauteur est en Hz, donc pour jouer des notes agréables (qui sont accordées), vous aurez besoin des fréquences des notes dans l'échelle de tempérament égale occidentale:

http://pastebin.com/rJY30FmM

Soit dit en passant, voici ce que j'ai trouvé après avoir écrit et utilisé le code Java que j'ai collé:

GRUB_INIT_TUNE="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"

Cela joue un arpège de 4 notes de A, F # m, D, E.

Adam
la source
Fonctionne très bien! +1
Wilf
Le tempo est le nombre de battements par minute, donc 60 signifie 1 battement par seconde, 120 signifie 2 battements par seconde, etc. Et, la durée est mesurée en battements, donc avec un tempo de 60 et une durée de 2, le son devrait durer 2 secondes.
jpaugh
Cela correspond exactement à ce que vous attendez, et je l'ai vérifié expérimentalement, ainsi que dans le manuel .
jpaugh
7

Comment

Dans le fichier /etc/default/grub, définissez la variable GRUB_INIT_TUNEsur 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 soxet 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
loxaxs
la source
3

Vous demandez: est-ce possible? La réponse simple? Oui, apparemment. Comment ceci peut être fait? Vous devez mettre plus d'argent dans la fente pour cette réponse. Juste ma petite blague. Le mieux que je puisse faire est le suivant:

Le manuel GRUB

Allez à la section 5.1 Gestion de configuration simple et recherchez la ligne, GRUB_INIT_TUNE. Vous devrez suivre les liens vers Play et la syntaxe du nom de fichier. Vous devrez éditer manuellement un fichier Grub.

grahammechanical
la source
Merci pour le lien! (Mais, pourquoi ne pas créer un lien direct vers le chapitre 5? Gnu.org/software/grub/manual/grub.html#Configuration )
jpaugh
3
  1. Modifier le fichier /etc/default/grubpour inclure la ligne suivante (voici mon morceau d'init):

    GRUB_INIT_TUNE = "2000 400 4 0 1 500 4 0 1 600 4 0 1 800 6"

  2. Exécutez sudo update-grub2pour appliquer la modification.

Xiè Jìléi
la source
0

J'ai créé un script python qui convertit les fichiers midi en ces morceaux init:

https://gitlab.com/lukasfink1/midi2grub

Il a besoin de la bibliothèque mido pour fonctionner. Notez également que la commande grub play ne peut jouer que des mélodies monophoniques, donc vos midis peuvent sembler étranges s'ils ne le sont pas.

Lukas Fink
la source
Je l'ai accidentellement eu en privé. Maintenant ça devrait marcher.
Lukas Fink