Reproduce un sonido antes o después de cargar GRUB

14

Recibí un sonido genial de Linux Defender o Knoppix (o algo más, no recuerdo cuál) que dice "iniciando la secuencia de inicio" Y quiero usarlo lo antes posible en el proceso de arranque. Hacer que diga que cuando inicie sesión no tendría mucho sentido, por lo que sería mejor jugar cuando GRUB comience. Se puede hacer?

Rubén
fuente
2
Fue knoppix. :) Solo lo recuerdo porque fue mi primera distribución de Linux.
Azendale
Advertencia justa: esto probablemente será muy ruidoso.
Nonny Moose

Respuestas:

9

Según el manual de GRUB, la primera nota es un "tempo", y cada par de números siguientes son la duración y el tono.

El tono está en Hz, por lo que para tocar notas que suenen bien (que están afinadas), necesitará las frecuencias de las notas en la escala occidental de temperamento igual:

http://pastebin.com/rJY30FmM

Por cierto, esto es lo que se me ocurrió después de escribir y usar el código Java que pegué:

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"

Esto reproduce un arpegio de 4 notas de A, F # m, D, E.

Adán
fuente
¡Funciona genial! +1
Wilf
El tempo es el número de latidos por minuto, por lo que 60 significa 1 latido por segundo, 120 significa 2 latidos por segundo, etc. Y, la duración se mide en latidos, por lo que con un tempo de 60 y una duración de 2, el sonido debería durar 2 segundos
jpaugh
Eso coincide exactamente con lo que esperarías, y lo he verificado experimentalmente, así como del manual .
jpaugh
7

Cómo

En el archivo /etc/default/grub, configure la variable GRUB_INIT_TUNEa la melodía que desee.

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

Una vez hecho esto, aplique sus cambios con sudo update-grub2.


Melodías existentes

(Los que pude encontrar)

  • 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
  • Marcha de la muerte imperial 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
  • melodía de xiè-jìléi (ascendente):2000 400 4 0 1 500 4 0 1 600 4 0 1 800 6
  • La melodía de Adams (similar a Rington para mí):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

Más de ellos aquí .


Comprender una melodía

La sintaxis es: GRUB_INIT_TUNE="tempo [pitch1 duration1] [pitch2 duration2] ..."

El tempo es la base para todas las duraciones de las notas. 60 da una base de 1 segundo, 120 da una base de medio segundo, etc. Los tonos son Hz. Establezca el tono en 0 para producir un descanso.

Fuente: la documentación de grub , la documentación del comando grub play (misma página).


Vista previa / prueba de una melodía

Si desea probar la melodía: instale soxy use el script de ese hilo ubuntuforum.org (ligeramente modificado por mí para eliminar las advertencias):

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

Para hacerlo ejecutable chmod +x grub-playtune

Use ejemplo:

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

Frecuencia de una nota

Un script basado en python3 para calcular la frecuencia de una nota:

tono

#!/bin/bash

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

Usa ejemplos:

$ 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

Tabla de frecuencia

Uno está disponible aquí . También se puede generar, utilizando el script anterior de la siguiente manera:

$ 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
fuente
3

Usted pregunta, ¿se puede hacer? La respuesta simple? Si, aparentemente ¿Cómo puede hacerse esto? Necesita poner más dinero en la ranura para esa respuesta. Solo mi pequeña broma. Lo mejor que puedo hacer es esto:

El manual de GRUB

Vaya a la sección 5.1 Manejo de configuración simple y busque la línea, GRUB_INIT_TUNE. Deberá seguir los enlaces a la sintaxis de reproducción y nombre de archivo. Deberá editar manualmente un archivo Grub.

grahammechanical
fuente
Gracias por el enlace! (Pero, ¿por qué no vincular directamente al capítulo 5? Gnu.org/software/grub/manual/grub.html#Configuration )
jpaugh
3
  1. Editar archivo /etc/default/grubpara incluir la siguiente línea (Aquí está mi melodía init):

    GRUB_INIT_TUNE = "2000400 4 0 1 500 4 0 1 600 4 0 1800 800"

  2. Ejecute sudo update-grub2para aplicar el cambio.

Xiè Jìléi
fuente
0

Creé un script de Python que convierte archivos midi a estas melodías de inicio:

https://gitlab.com/lukasfink1/midi2grub

Necesita la biblioteca mido para ejecutarse. También tenga en cuenta que el comando grub play solo puede reproducir melodías monofónicas, por lo que su midis puede sonar extraño si no lo son.

Lukas Fink
fuente
Accidentalmente lo tuve en privado. Ahora debería funcionar.
Lukas Fink