加载GRUB之前或之后播放声音


14

我从linux Defender或knoppix(或其他什么,我不记得是哪个)上听到了很酷的声音,上面写着“启动启动序列”,我想在启动过程中尽早使用它。它说我登录时没有多大意义,所以最好在GRUB启动时播放它。能做到吗


2
那是knoppix。:)我只记得因为这是我的第一个Linux发行版。
Azendale 2011年

合理的警告:这可能真的很大声。
诺妮·穆斯

Answers:


9

根据GRUB手册,第一个音符是“节奏”,其后每对数字是持续时间和音高。

音调单位为Hz,因此,要演奏听起来不错的音符(音调一致),您将需要音调频率等于西方的气质音阶:

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"

这会演奏A,F#m,D,E的4音琶音。


很棒!+1
Wilf

速度是每分钟的节拍的数量,所以装置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


现有曲调

(我能找到的)

  • Mario Bros.Mushroom Powerup1750 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
  • 星球大战的帝国死亡游行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的曲调(升序):2000 400 4 0 1 500 4 0 1 600 4 0 1 800 6
  • 亚当斯的曲调(对我来说像铃声):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

这里更多。


了解曲调

语法为: GRUB_INIT_TUNE="tempo [pitch1 duration1] [pitch2 duration2] ..."

速度是所有音符持续时间的基础。60给出1秒基础,120给出半秒基础,依此类推。音调为Hz。将音调设置为0可以产生一个静息。

来源:grub文档,grub play命令文档(同一页)。


预览/测试音乐

如果您想测试音调:安装sox并使用该ubuntuforum.org线程中的脚本(我稍作修改以删除警告):

rub

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

3

您问,可以做到吗?简单的答案?是的,显然。怎么做到呢?您需要在该位置投入更多的钱。只是我的小玩笑。我能做的最好的事情是:

GRUB手册

转到第5.1节“简单配置处理”,然后查找GRUB_INIT_TUNE行。您将需要单击“播放”和“文件名”语法的链接。您将手动编辑Grub文件。


感谢您的链接!(但是,为什么不直接链接到第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以应用更改。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.