LINUX.ORG.RU
ФорумTalks

Консольный композитор?


0

0

Думаю, многие из вас пробовали пропускать различные файлы или /dev/urandom через /dev/dsp, но увы, на выходе получается не музыка, а щелчки или прочий белый шум. Так вот, сегодня я представляю вам свой скрипт, позволяющий извлекать из /dev/dsp довольно приятную мелодию, а не белый шум. Вот он:
$ while true; do yes `head -c 23 /dev/urandom` > /dev/dsp & sleep .2 && kill $! && sleep .01; done 2>/dev/null

Запускается в bash, В zsh придумывайте сами. Есть и другие варианты.
(перед применением скрипта следует отключить подстановку истории через set +H, иначе шелл может ругаться на event not fount)
$ while true; do yes `head -c 23 /dev/urandom` | aplay & sleep .2 && kill $! && sleep .01; done 2>/dev/null

То же самое, только не требует эмуляции OSS. У некоторых нет /dev/dsp
/dev/dsp можно заменить на /dev/audio. Другие варианты сами предложите.
$ while true; do yes `head -c 100 /dev/urandom` > /dev/dsp & sleep .2 && kill $! ; done 2>/dev/null

А вот первый вариант, несколько менее мелодично, но кому-то может понравиться.
Как понимаете, можно менять числа и получать мелодии разной тональности и мелодичности. Если что-то интересное придумаете, прошу поделиться.

★★★★★

Ответ на: Re: Консольный композитор? от dagger

Re: Консольный композитор?

Я же специально поставил $, а не # — под юзером, который есть в группе audio (хотя, наверное, можно и под рутом)

Xenius ★★★★★ ()

Re: Консольный композитор?

зачет тебе мен, автоматом. прямо только что настраивали слаку, надо было звук проверить - захожу в толксы - а тут сразу и подсказка :)

k0l0b0k ★★ ()

Re: Консольный композитор?

Больше 2х нот оно умеет?

Elverion ()

Re: Консольный композитор?

неплохо, напоминает музыку народов севера. :-)

splinter ★★★★★ ()
Ответ на: Re: Консольный композитор? от k0l0b0k

Re: Консольный композитор?

> самое главное - попробуй потом заткнуть эту какофонию :)

я наверное примитивен, но я сделал так:
# fuser /dev/dsp
/dev/dsp:            11772
# kill -9 11772

а музычка ничотак. однообразная правда.

Komintern ★★★★★ ()

Re: Консольный композитор?

/me запустил несколько экземпляров и наслаждается полифонией.

Deleted ()

Re: Консольный композитор?

Вот так лучше, не оставляет в фоне процессов после выхода:
while yes `head -c 23 /dev/urandom` | aplay & sleep .2 && kill $! && sleep .01; do : ; done 2>/dev/null

Xenius ★★★★★ ()

Re: Консольный композитор?

Кто-нибудь, выложите хотя бы отрывок из этих произведений (нет в наличии dsp && urandom)

Deprecated ()

Re: Консольный композитор?

Хм, а нет, всё равно в фоне звук остается... Но так, зато, короче:
while yes `head -c 23 /dev/urandom` > /dev/dsp & do sleep .2 && kill $! && sleep .01; done 2>/dev/null

Xenius ★★★★★ ()

Re: Консольный композитор?

Зачет!!1

ViTeX ★★★★ ()

Re: Консольный композитор?

Еще бы неплохо сказать как вырубить звук на выходе, после ctrl+c остается фоновый звук...

gh0stwizard ★★★★★ ()

Re: Консольный композитор?

А вот вы все пробуете, а ведь есть вероятность, что /dev/urandom выдаст последовательность типа "`rm -rf /*`" и она выполнится.
И самое страшное, что я крутил это несколько часов... И временами слышал перерывы в звучании...

Xenius ★★★★★ ()

Re: Консольный композитор?

yes `head -c $(($RANDOM%500)) /dev/urandom` > /dev/dsp

Не так однообразно

Можно рандом и в другие части засунуть

EmStudio ()
Ответ на: Re: Консольный композитор? от Xenius

Re: Консольный композитор?

> Только вот... Скрипт-то не безопасен, хе-хе

Сделай генерацию поменьше - ничего страшного создать оно не сможет

EmStudio ()

Re: Консольный композитор?

наркоманы бл..

saguro ()
Ответ на: Re: Консольный композитор? от Xenius

Re: Консольный композитор?

> А вот вы все пробуете, а ведь есть вероятность, что /dev/urandom выдаст последовательность типа "`rm -rf /*`" и она выполнится.

Где она выполнится? Запускал в директории yes rm * и yes "rm *", все файлы целы.

question4 ★★★★★ ()
Ответ на: Re: Консольный композитор? от question4

Re: Консольный композитор?

Ага, если вместо $(($RANDOM%500)) поставить $(($RANDOM%35)) или даже $(($RANDOM%15)), получается намного приятнее.

question4 ★★★★★ ()
Ответ на: Re: Консольный композитор? от Deprecated

Re: Консольный композитор?

> нет в наличии dsp && urandom

Если есть ALSA — есть asound. Вариант для него есть в самом начале.

question4 ★★★★★ ()
Ответ на: Re: Консольный композитор? от narayan

Re: Консольный композитор?

Получится только если файл будет записываться достаточно медленно (будет на медленном носителе), так как скорость винта больше скорости /dev/dsp:
$ time head -c 102400 /dev/urandom > /dev/dsp
real 0m13.076s
user 0m0.004s
sys 0m0.236s
$ bc -lq <<<'100/13.076'
7.64759865402263689201
$ dd if=/dev/zero of=/dev/dsp count=100
100+0 записей считано
100+0 записей написано
скопировано 51200 байт (51 kB), 6,66731 c, 7,7 kB/c

Xenius ★★★★★ ()
Ответ на: Re: Консольный композитор? от Xenius

Re: Консольный композитор?

> $ echo `cat evilfile`

В evilfile записал «rm *». Результат — многократно пишет «rm <список файлов в текущей директории>», но ничего не стирает.

> не опасен на моей версии coreutils

А на каких версиях опасен? И на каких осях? Имхо, для этого надо, чтобы парсер проходил содержимое `...` несколько раз.

question4 ★★★★★ ()
Ответ на: Re: Консольный композитор? от question4

Re: Консольный композитор?

Я только у себя проверил. Но судя по тому, что у тебя -- достаточно написать что-то вроде $(rm *) или : ; rm * ;
Только осторожней, может и начать удалять.
Лучше пробовать на yes.

Xenius ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.