Riproduci un suono prima o dopo il caricamento di GRUB


14

Ho ottenuto un suono fantastico dal difensore di Linux o da Knoppix (o qualcos'altro, non ricordo quale) che dice "avviare la sequenza di avvio" E voglio usarlo il più presto possibile nel processo di avvio. Dire che quando accedo non avrebbe molto senso, quindi farlo giocare all'avvio di GRUB sarebbe meglio. Si può fare?


2
Era Knoppix. :) Ricordo solo perché era la mia prima distribuzione Linux.
Azendale,

Avviso equo: questo sarà probabilmente molto forte.
Nonny Moose,

Risposte:


9

Secondo il manuale di GRUB, la prima nota è un "tempo" e ogni coppia di numeri che segue è durata e tonalità.

Il pitch è in Hz, quindi per suonare delle note dal suono piacevole (che sono accordate), avrai bisogno delle frequenze delle note nella scala occidentale del temperamento uguale:

http://pastebin.com/rJY30FmM

Per inciso, ecco cosa mi è venuto in mente dopo aver scritto e usato il codice Java che ho incollato:

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"

Questo suona un arpeggio di 4 note di A, F # m, D, E.


Funziona alla grande! +1
Wilf,

Il tempo è il numero di battiti al minuto, quindi 60 significa 1 battito al secondo, 120 significa 2 battiti al secondo, ecc. E, la durata è misurata in battiti, quindi con un tempo di 60 e una durata di 2, il suono dovrebbe durare 2 secondi.
jpaugh,

Questo corrisponde esattamente a quello che ti aspetteresti e l'ho verificato a livello sperimentale, oltre che dal manuale .
jpaugh,

7

Come

Nel file /etc/default/grub, imposta la variabile GRUB_INIT_TUNEsulla melodia desiderata.

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

Una volta fatto, applica le modifiche con sudo update-grub2.


Melodie esistenti

(Quelle che ho trovato)

  • Mario Bros. Mushroom 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
  • Marcia della morte imperiale di 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
  • melodia di xiè-jìléi (crescente):2000 400 4 0 1 500 4 0 1 600 4 0 1 800 6
  • La melodia di Adams (per me simile a Rington):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

Altri qui .


Comprendi una melodia

La sintassi è: GRUB_INIT_TUNE="tempo [pitch1 duration1] [pitch2 duration2] ..."

Il tempo è la base per tutte le durate delle note. 60 fornisce una base da 1 secondo, 120 fornisce una base da mezzo secondo, ecc. Le tonalità sono Hz. Impostare il pitch su 0 per produrre una pausa.

Fonte: la documentazione di grub , la documentazione del comando grub play (stessa pagina).


Anteprima / test di una melodia

Se vuoi testare la melodia: Installa soxe usa lo script da quel thread ubuntuforum.org (leggermente modificato da me per rimuovere gli avvisi):

grub-visualizzarloTUNE

#!/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

Per renderlo eseguibile chmod +x grub-playtune

Usa esempio:

grub-playtune 2000 400 4 0 1 500 4 0 1 600 4 0 1 800 6

Frequenza di una nota

Uno script basato su python3 per calcolare la frequenza di una nota:

intonazione

#!/bin/bash

python3 -c "print(*(int(0.5 + 440 * 2 ** (note/12)) for note in (${*/%/,})))"

Usa esempi:

$ 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

Tabella delle frequenze

Uno è disponibile qui . Può anche essere generato, usando lo script sopra in questo modo:

$ 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

3

Chiedi, si può fare? La semplice risposta? Sì, a quanto pare. Come si può fare? Devi mettere più soldi nello slot per quella risposta. Solo il mio scherzo. Il meglio che posso fare è questo:

Il manuale di GRUB

Vai alla sezione 5.1 Gestione della configurazione semplice e cerca la riga, GRUB_INIT_TUNE. È necessario seguire i collegamenti alla sintassi del nome file e riproduzione. Dovrai modificare manualmente un file Grub.


Grazie per il link! (Ma perché non collegarsi direttamente al capitolo 5? Gnu.org/software/grub/manual/grub.html#Configuration )
jpaugh

3
  1. Modifica il file /etc/default/grubper includere la seguente riga (Ecco il mio init tune):

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

  2. Esegui sudo update-grub2per applicare la modifica.


0

Ho creato uno script Python che converte i file MIDI in questi brani di avvio:

https://gitlab.com/lukasfink1/midi2grub

Ha bisogno della libreria mido per funzionare. Nota anche che il comando grub play è in grado di riprodurre solo melodie monofoniche, quindi i tuoi midis potrebbero suonare strani se non lo sono.


L'ho avuto per caso in privato. Ora dovrebbe funzionare.
Lukas Fink
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.