LINUX.ORG.RU
ФорумTalks

В продолжение темы о консольном синтезаторе

 , ,


2

2

На самом деле sox может делать весьма и весьма много, особенно в сочетании с другими средствами.

Вот например команда, которая выдаёт довольно интересный звук. Правда мне кажется, что он должен на хорошей акустике звучать по-другому. У кого таковая есть, можете проверить и сказать, что вы слышите?

i=4800; (while (((RANDOM%10!=1)?1:i++)); do sox -n -t raw - synth 0.02 sine 440; head -c $i /dev/zero; done) | aplay -r 48k -f s32_le

Кстати, вот эта команда звучит даже забавней:

i=4800; (while (((RANDOM%6!=1)?1:i++)); do sox -n -t raw - synth 0.07 sine 440; head -c $i /dev/zero; done) | aplay -r 48k -f s32_le

PS А звучит она так оказывается из-за ошибки. Сэмплы-то 4-байтные, значит если head -c $i выдаёт число нулей не кратное 4, сэмплы ломаются и вместо синуса получается что-то другое. Чтоб пофиксить можно заменить на head -c $[4*i] например, правда тогда звук не такой интересный:

(while sox -n -t raw - synth 0.0$[RANDOM+1] sine 440; do head -c $[RANDOM%1920*4] /dev/zero; done) | aplay -r 48k -f s32_le

★★★★★

Последнее исправление: Xenius (всего исправлений: 3)

Зачем так извращаться? Грузим нужные звуковые банки, подключаем MIDI-клавиатуру (или запускаем эмулятор) - вуаля.

Eddy_Em ☆☆☆☆☆
()

синтезатор это не только генератор звуковой частоты и генератор огибающий но и куча различных фильтров и примочек.

exception13 ★★★★★
()
Ответ на: комментарий от exception13

Вообще-то в sox это всё есть, просто я пока использую только самые базовые возможности.

Xenius ★★★★★
() автор топика
Ответ на: комментарий от buddhist

Откройте уже для себя Nyquist :)

Язык плагинов audacity?
Напиши на нём для примера то, что я только что написал на баше.

Если будет короче и понятней, то может имеет смысл смотреть.

Xenius ★★★★★
() автор топика

От же ж музиканты.

$ i=4800; (while (((RANDOM%12!=1)?1:i++)); do sox -n -t raw - synth 0.17 sine 4440; head -c $i /dev/zero; done) | aplay -r 48k -f s32_le

bk_ ★★
()

Только 'echo «main(t){for(;;t++)putchar((t*(t>>12))&(t>>6)&(t>13));}» | gcc -x c - && a.out | aplay', только хардкор!

Yareg ★★★
()

Верилог через VPI для этого удобнее. Но sox/aplay тормозят если запущено много инстансов и из-за этого рассинхронизация идет некоторая.

AiFiLTr0 ★★★★★
()
Ответ на: комментарий от AiFiLTr0
module bbox(input in_rst, input in_clk)

reg rpcnt;
always @(posedge in_clk)
begin
if(in_rst)
begin
rpcnt<=0;
else
begin
$aplay("тыц.wav");
end
end

always @(negedge in_clk)
begin
if (rpcnt)
begin
$aplay("тоц.wav");
end
rpcnt <= !rpcnt;
end

endmodule
AiFiLTr0 ★★★★★
()
Ответ на: комментарий от firestarter

Зачем извращаться в баше, когда есть csound?

Напиши код на csound, делающий то же самое, если хочешь показать, что он лучше.

Xenius ★★★★★
() автор топика
Ответ на: комментарий от firestarter
<CsoundSynthesizer>;
 
  <CsOptions>
    csound -W -d -o tone.wav 
  </CsOptions>
 
  <CsInstruments>
    sr     = 96000           ; Sample rate.
    kr     = 9600            ; Control signal rate.
    ksmps  = 10              ; Samples per control signal.
    nchnls = 1               ; Number of output channels.
 
    instr 1 
    a1     oscil p4, p5, 1   ; Oscillator: p4 and p5 are the arguments from the score, 1 is the table number.
    out a1                   ; Output.
    endin
  </CsInstruments>
 
  <CsScore>
    f1 0 8192 10 1           ; Table containing a sine wave. Built-in generator 10 produces a sum of sinusoids, here only one.
    i1 0 1 20000 1000        ; Play one second of one kHz at amplitude 20000.
    e
  </CsScore>
 
</CsoundSynthesizer>
sox -n tone.wav synth 1 sine 1k
или
sox -n -c 1 -r 96k tone.wav synth 1 sine 1k

И какой из вариантов по-твоему проще, на bash или на csound?

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Xenius

И какой из вариантов по-твоему проще, на bash или на csound?

А что, кроме как «sox -n -c 1 -r 96k tone.wav synth 1 sine 1k» больше ничего не нужно? Решение конкретной задачи на баше может быть и короче, но это не значит что баш может заменить специальный инструмент. Вряд ли на нём можно сделать всё что умеет csound.

firestarter ★★★☆
()
Ответ на: комментарий от firestarter

SoX умеет очень много, например спектрограммы рисовать, частоту тоже можно задавать непостоянную, эффекты комбинировать, использовать амплитудную и частотную модуляцию....

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