Tocar um som antes ou depois do carregamento do GRUB

14

Eu recebi um som legal do linux defender ou knoppix (ou qualquer outra coisa, não me lembro qual) que diz "iniciando a sequência de inicialização" E eu quero usá-lo o mais cedo possível no processo de inicialização. Dizê-lo que, quando eu fizer o login, não faria muito sentido; portanto, jogar quando o GRUB iniciar seria o melhor. Isso pode ser feito?

Ruben
fonte
2
Era knoppix. :) Só me lembro porque foi minha primeira distribuição Linux.
Azendale 7/11
Aviso justo: provavelmente será muito alto.
Nonny Moose

Respostas:

9

De acordo com o manual do GRUB, a primeira nota é um 'andamento', e cada par de números a seguir é duração e afinação.

A afinação é em Hz; portanto, para tocar notas de bom som (afinadas), você precisará das frequências de notas na escala de temperamento igual a oeste:

http://pastebin.com/rJY30FmM

Aliás, aqui está o que eu criei depois de escrever e usar o código Java que colei:

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"

Toca um arpejo de 4 notas de A, F # m, D, E.

Adão
fonte
Funciona bem! 1
Wilf
O tempo é o número de batimentos por minuto, então 60 significa 1 batida a cada segundo, 120 significa 2 batidas a cada segundo, etc. E a duração é medida em batidas, portanto, com um ritmo de 60 e uma duração de 2, o som deve durar 2 segundos.
jpaugh
Isso corresponde exatamente ao que você esperaria, e eu o verifiquei experimentalmente, bem como no manual .
jpaugh
7

Quão

No arquivo /etc/default/grub, defina a variável GRUB_INIT_TUNEpara a música que você deseja.

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

Depois de concluído, aplique suas alterações com sudo update-grub2.


Músicas existentes

(Os que eu pude encontrar)

  • Mario Bros. Cogumelo 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 Imperial da Morte 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
  • A música de xiè-jìléi (ascendente):2000 400 4 0 1 500 4 0 1 600 4 0 1 800 6
  • A música de Adams (rington-like para mim):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

Mais deles aqui .


Entenda uma música

A sintaxe é: GRUB_INIT_TUNE="tempo [pitch1 duration1] [pitch2 duration2] ..."

O andamento é a base para todas as durações das notas. 60 fornece uma base de 1 segundo, 120 fornece uma base de meio segundo, etc. Os arremessos são Hz. Defina o tom como 0 para produzir um descanso.

Fonte: a documentação do grub , a documentação do comando grub play (mesma página).


Visualizar / testar uma música

Se você quiser testar a melodia: Instale soxe use o script desse segmento do ubuntuforum.org (modificado levemente por mim para remover avisos):

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 torná-lo executável chmod +x grub-playtune

Use exemplo:

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

Frequência de uma nota

Um script baseado em python3 para calcular a frequência de uma nota:

arremesso

#!/bin/bash

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

Use exemplos:

$ 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

Tabela de frequência

Um está disponível aqui . Também pode ser gerado, usando o script acima da seguinte maneira:

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

Você pergunta, isso pode ser feito? A resposta simples? Sim, aparentemente. Como pode ser feito? Você precisa colocar mais dinheiro no espaço para essa resposta. Apenas minha pequena piada. O melhor que posso fazer é o seguinte:

O manual do GRUB

Vá para a seção 5.1 Simple Configuration Handling e procure a linha GRUB_INIT_TUNE. Você precisará seguir os links para a sintaxe Play e File name. Você terá que editar manualmente um arquivo Grub.

mecânico
fonte
Obrigado pelo link! (Mas, por que não ligar diretamente para o capítulo 5? Gnu.org/software/grub/manual/grub.html#Configuration )
jpaugh
3
  1. Edite o arquivo /etc/default/grubpara incluir a seguinte linha (Aqui está a minha sintonia de inicialização):

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

  2. Execute sudo update-grub2para aplicar a alteração.

Xiè Jìléi
fonte
0

Eu criei um script python que converte arquivos midi para essas músicas de inicialização:

https://gitlab.com/lukasfink1/midi2grub

Ele precisa da biblioteca mido para ser executada. Observe também que o comando grub play só pode tocar melodias monofônicas, portanto, seus midis podem parecer estranhos se não estiverem.

Lukas Fink
fonte
Eu acidentalmente tive isso em privado. Agora deve funcionar.
Lukas Fink