Spielen Sie einen Sound vor oder nach dem Laden von GRUB

14

Ich habe einen coolen Sound von Linux Defender oder Knoppix (oder etwas anderes, an das ich mich nicht erinnere), der "Startsequenz einleiten" sagt. Und ich möchte ihn so früh wie möglich beim Booten verwenden. Wenn ich mich anmelde, macht es nicht viel Sinn, es zu spielen, wenn GRUB startet. Kann es gemacht werden?

Ruben
quelle
2
Es war Knoppix. :) Ich erinnere mich nur, weil es meine erste Linux-Distribution war.
Azendale
Faire Warnung: Das wird wahrscheinlich sehr laut.
Nonny Moose

Antworten:

9

Nach dem GRUB-Handbuch ist die erste Note ein 'Tempo', und jedes folgende Zahlenpaar ist Dauer und Tonhöhe.

Die Tonhöhe ist in Hz. Um also gut klingende Noten (die gestimmt sind) zu spielen, benötigen Sie die Frequenzen der Noten in der westlichen Temperamentskala:

http://pastebin.com/rJY30FmM

Im Übrigen habe ich mir Folgendes ausgedacht, nachdem ich den von mir eingefügten Java-Code geschrieben und verwendet habe:

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"

Dies spielt ein 4-Noten-Arpeggio von A, F # m, D, E.

Adam
quelle
Funktioniert super! +1
Wilf
Das Tempo ist die Anzahl der Schläge pro Minute, also 60 bedeutet 1 Schlag pro Sekunde, 120 bedeutet 2 Schläge pro Sekunde usw. Und die Dauer wird in Schlägen gemessen, also bei einem Tempo von 60 und einer Dauer von 2 der Klang sollte 2 Sekunden dauern.
Jpaugh
Das stimmt genau mit dem überein, was Sie erwarten, und ich habe es experimentell sowie aus dem Handbuch überprüft .
Jpaugh
7

Wie

Stellen Sie in der Datei /etc/default/grubdie Variable GRUB_INIT_TUNEauf die gewünschte Melodie ein.

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

Sobald Sie fertig sind, übernehmen Sie Ihre Änderungen mit sudo update-grub2.


Bestehende Melodien

(Die ich finden konnte)

  • 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
  • Der kaiserliche Todesmarsch von 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
  • xiè-jìléi's melodie (aufsteigend):2000 400 4 0 1 500 4 0 1 600 4 0 1 800 6
  • Adams 'Melodie (für mich wie ein Klingelton):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

Mehr davon hier .


Verstehe eine Melodie

Die Syntax lautet: GRUB_INIT_TUNE="tempo [pitch1 duration1] [pitch2 duration2] ..."

Das Tempo ist die Basis für alle Notendauern. 60 ergibt eine Basis von 1 Sekunde, 120 eine Basis von einer halben Sekunde usw. Die Tonhöhen sind Hz. Stellen Sie die Tonhöhe auf 0, um eine Pause zu machen.

Quelle: die Grub-Dokumentation , die Grub- Play- Kommandodokumentation (gleiche Seite).


Vorschau / Test einer Melodie

Wenn Sie die Melodie testen möchten: Installieren soxund verwenden Sie das Skript aus dem ubuntuforum.org-Thread (von mir leicht modifiziert, um Warnungen zu entfernen):

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

Um es ausführbar zu machen chmod +x grub-playtune

Anwendungsbeispiel:

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

Häufigkeit einer Note

Ein Python3-basiertes Skript zur Berechnung der Häufigkeit einer Note:

Tonhöhe

#!/bin/bash

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

Verwenden Sie Beispiele:

$ 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

Häufigkeitstabelle

Eine ist hier erhältlich . Es kann auch mit dem obigen Skript wie folgt generiert werden:

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

Sie fragen, kann es getan werden? Die einfache Antwort? Ja anscheinend Wie geht das? Sie müssen mehr Geld in den Schlitz für diese Antwort einsetzen. Nur mein kleiner Witz. Das Beste, was ich tun kann, ist Folgendes:

Das GRUB-Handbuch

Gehen Sie zu Abschnitt 5.1 Simple Configuration Handling und suchen Sie nach der Zeile GRUB_INIT_TUNE. Sie müssen den Links zu Wiedergabe und Dateinamensyntax folgen. Sie müssen eine Grub-Datei manuell bearbeiten.

grahammechanisch
quelle
Danke für den Link! (Warum nicht direkt auf Kapitel 5 verlinken ? Gnu.org/software/grub/manual/grub.html#Configuration )
jpaugh
3
  1. Bearbeiten Sie die Datei so /etc/default/grub, dass sie folgende Zeile enthält (hier ist meine Init-Melodie):

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

  2. Führen Sie aus sudo update-grub2, um die Änderung zu übernehmen.

Xiè Jìléi
quelle
0

Ich habe ein Python-Skript erstellt, das MIDI-Dateien in die folgenden Init-Melodien konvertiert:

https://gitlab.com/lukasfink1/midi2grub

Es braucht die Mido-Bibliothek, um zu laufen. Beachten Sie auch, dass der Befehl „Grub Play“ nur monophone Melodien abspielen kann, sodass Ihre Midis möglicherweise seltsam klingen, wenn dies nicht der Fall ist.

Lukas Fink
quelle
Ich hatte es versehentlich privat. Jetzt sollte es klappen.
Lukas Fink