Воспроизвести звук до или после загрузки GRUB

14

Я получил классный звук от linux defender или knoppix (или чего-то еще, я не помню, какой именно), который говорит «инициализация последовательности запуска», и я хочу использовать его как можно раньше в процессе загрузки. Сказать, что когда я вхожу в систему, не имеет особого смысла, так что лучше играть, когда запускается GRUB. Это можно сделать?

Ruben
источник
2
Это был knoppix. :) Я помню только потому, что это был мой первый дистрибутив Linux.
Азендейл
Справедливое предупреждение: это, вероятно, будет очень громко.
Нонни Мус

Ответы:

9

Согласно руководству GRUB, первая нота - это «темп», а каждая следующая пара чисел - это длительность и высота тона.

Высота тона указана в Гц, поэтому для того, чтобы играть хорошо звучащие ноты (которые находятся в гармонии), вам понадобятся частоты нот в западной шкале равных темпераментов:

http://pastebin.com/rJY30FmM

Кстати, вот что я придумал после написания и использования вставленного мной кода Java:

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"

Это играет арпеджио с 4 нотами A, F # m, D, E.

Адам
источник
Прекрасно работает! +1
Уилф
Темпа это количество ударов в минуту, так что 60 означает 1 удар каждую секунду, 120 означает 2 удара каждую секунду, и т.д. Причем, длительность измеряется в ударах, так что с темпом 60 и длительностью 2, звук должно длиться 2 секунды.
jpaugh
Это точно соответствует тому, что вы ожидаете, и я проверил это экспериментально, а также из руководства .
jpaugh
7

Как

В файле /etc/default/grubустановите переменную GRUB_INIT_TUNEна нужную мелодию.

Например: GRUB_INIT_TUNE="2000 400 4 0 1 500 4 0 1 600 4 0 1 800 6"

После этого примените свои изменения с sudo update-grub2.


Существующие мелодии

(Те, которые я мог найти)

Больше их здесь .


Понять мелодию

Синтаксис: GRUB_INIT_TUNE="tempo [pitch1 duration1] [pitch2 duration2] ..."

Темп является базой для всех длительностей нот. 60 дает основание в 1 секунду, 120 дает основание в полсекунды и т.д. Установите pitch в 0, чтобы произвести отдых.

Источник: документация по grub, документация по команде grub play (та же страница).


Предварительный просмотр / проверка мелодии

Если вы хотите протестировать мелодию: установите soxи используйте скрипт из этого потока ubuntuforum.org (я немного изменил его, чтобы удалить предупреждения):

личинка-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

Чтобы сделать его исполняемым chmod +x grub-playtune

Пример использования:

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

Частота заметки

Скрипт на основе python3 для вычисления частоты заметок:

подача

#!/bin/bash

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

Используйте примеры:

$ 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

Таблица частот

Один доступен здесь . Его также можно сгенерировать, используя приведенный выше скрипт следующим образом:

$ 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
источник
3

Вы спрашиваете: можно ли это сделать? Простой ответ? Да, видимо Как это можно сделать? Вы должны положить больше денег в слот для этого ответа. Просто моя маленькая шутка. Лучшее, что я могу сделать, это:

Руководство GRUB

Перейдите к разделу 5.1 Простая обработка конфигурации и найдите строку GRUB_INIT_TUNE. Вам нужно будет перейти по ссылкам на Play и синтаксис имени файла. Вам придется вручную редактировать файл Grub.

grahammechanical
источник
Спасибо за ссылку! (Но почему бы не дать прямую ссылку на главу 5? Gnu.org/software/grub/manual/grub.html#Configuration )
jpaugh
3
  1. Отредактируйте файл, /etc/default/grubдобавив следующую строку (вот моя начальная мелодия):

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

  2. Запустите, sudo update-grub2чтобы применить изменения.

Xiè Jìléi
источник
0

Я создал скрипт Python, который преобразует MIDI-файлы в эти мелодии инициализации:

https://gitlab.com/lukasfink1/midi2grub

Для запуска нужна библиотека mido. Также обратите внимание, что команда grub play может воспроизводить только монофонические мелодии, поэтому ваш мидис может звучать странно, если это не так.

Лукас Финк
источник
У меня случайно это было наедине. Теперь это должно работать.
Лукас Финк