GRUB yüklerinden önce veya sonra ses çalın


14

Linux defender veya knoppix (ya da başka bir şey, hangisini hatırlamıyorum) serin bir ses var "başlangıç ​​dizisi başlatma" diyor ve önyükleme sürecinde olabildiğince erken kullanmak istiyorum. Giriş yaptığımda çok mantıklı olmayacağını söyleyerek, GRUB başladığında oynamak en iyisi olurdu. Bu yapılabilir mi?


2
Knoppix idi. :) Sadece hatırlıyorum çünkü bu benim ilk Linux dağıtımımdı.
Azendale

Adil uyarı: bu muhtemelen çok yüksek olacaktır.
Nonny Moose

Yanıtlar:


9

GRUB kılavuzuna göre, ilk nota bir 'tempo'dur ve takip eden her bir sayı çifti süre ve aralıktır.

Saha Hz cinsindendir, bu nedenle (iyi durumda olan) güzel notalar çalmak için batı eşit mizaç ölçeğinde notaların frekanslarına ihtiyacınız olacaktır:

http://pastebin.com/rJY30FmM

Bu arada, yapıştırdığım Java kodunu yazdıktan ve kullandıktan sonra bulduğum şey:

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"

Bu A, F # m, D, E'nin 4 no'lu arpejini çalar.


Harika çalışıyor! +1
Wilf

Tempo dakikada atım sayısı, bu nedenle 60 aracı 1 atım her saniye, 120 araçları 2 atım her saniye, vs Ve, bir süre bu yüzden 60 bir tempo ve bir 2 süresi, ses ile, vuruş ölçülür 2 saniye sürmelidir.
jpaugh

Bu, beklediğinizle tam olarak eşleşiyor ve bunu hem el kitabından hem de deneysel olarak doğruladım .
jpaugh

7

Nasıl

Dosyada /etc/default/grub, değişkeni GRUB_INIT_TUNEistediğiniz melodiye ayarlayın.

Örneğin: GRUB_INIT_TUNE="2000 400 4 0 1 500 4 0 1 600 4 0 1 800 6"

Tamamlandığında, değişikliklerinizi ile uygulayın sudo update-grub2.


Mevcut melodiler

(Bulabildiğim olanlar)

Burada daha fazlası .


Bir melodiyi anlama

Sözdizimi: GRUB_INIT_TUNE="tempo [pitch1 duration1] [pitch2 duration2] ..."

Tempo, tüm nota sürelerinin temelidir. 60, 1 saniyelik bir baz verir, 120, yarım saniyelik bir baz verir. Dinlenmek için adımı 0 olarak ayarlayın.

Kaynak: grub belgeleri , grub play komutu belgeleri (aynı sayfa).


Bir melodiyi önizleme / test etme

Ayarı test etmek istiyorsanız: soxKomut dosyasını o ubuntuforum.org iş parçacığından yükleyin ve kullanın (uyarıları kaldırmak için benim tarafımdan biraz değiştirildi):

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

Yürütülebilir yapmak için chmod +x grub-playtune

Örnek kullanın:

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

Bir notun sıklığı

Bir notun sıklığını hesaplamak için python3 tabanlı bir komut dosyası:

Saha

#!/bin/bash

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

Örnekleri kullanın:

$ 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

Frekans tablosu

Bir kullanılabilir burada . Yukarıdaki komut dosyası kullanılarak şu şekilde de oluşturulabilir:

$ 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

Siz isteyin, yapılabilir mi? Basit cevap? Evet, görünüşe göre. Nasıl yapılabilir? Bu cevap için yuvaya daha fazla para koymanız gerekiyor. Sadece benim küçük şakam. Yapabileceğim en iyi şey şudur:

GRUB kılavuzu

5.1 Basit Yapılandırma İşleme bölümüne gidin ve GRUB_INIT_TUNE hattını arayın. Oynatma ve Dosya adı sözdizimi bağlantılarını izlemeniz gerekir. Bir Grub dosyasını elle düzenleyeceksiniz.


Bağlantı için teşekkürler! (? Fakat neden 5. bölümde doğrudan yönlendiremez gnu.org/software/grub/manual/grub.html#Configuration )
jpaugh

3
  1. /etc/default/grubAşağıdaki satırı içerecek şekilde dosyayı düzenle (İşte benim başlangıç ​​ayarım):

    GRUB_INIT_TUNE = "2000400 4 0 1500 4 0 1600 600 4 0 1800 6"

  2. sudo update-grub2Değişikliği uygulamak için çalıştırın .


0

MIDI dosyalarını bu init tunes dönüştüren bir python komut dosyası oluşturdum:

https://gitlab.com/lukasfink1/midi2grub

Çalışması için mido kütüphanesine ihtiyacı var. Ayrıca grub play komutunun sadece monofonik melodileri çalabildiğine dikkat edin, bu yüzden midisiniz yoksa garip gelebilir.


Yanlışlıkla özel olarak aldım. Şimdi çalışmalı.
Lukas Fink
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.