Hatena::Grouprubyist

たばさの RSSフィード

03/03(土) 2018

ubuntuの端末で録音しようか

 ubuntuの端末で録音しようか - たばさの を含むブックマーク はてなブックマーク -  ubuntuの端末で録音しようか - たばさの

なにか音がしたときだけ。

試行錯誤。


rusuroku.sh


#!/bin/bash
# ver. 0.2.1

threshold=$1
arecord -f cd  |ruby -d -ne "
BEGIN{
  headersize=1024
  count=0
  acount=0
  len=2048*12
  last=0
  remain=0
  thre=$threshold
  tf=Time.now
  tn=tf
  tspan=10
  ot=Time.now.to_f
  buff=''.force_encoding('binary')
  tasksize=1024*10
  class Array
    def peekover thr
      if self.size>0
        self.max>thr || self.min<-thr
      else
        false
      end
    end
  end
  STDIN.set_encoding('binary')
}
if tn>tf+tspan
  STDOUT.flush
  tf=tn
  pc=format('%.1f%',count*100.0/acount)
  STDERR.print '(',pc,')'
end
da=\$_
buff+=da
rest=buff.size%tasksize
current=buff[0,buff.size-rest]
buff=buff[current.size,rest]
next if current.size==0
acount+=current.size
d=current.unpack('s*')
(remain=len;(STDERR.print 'o';ot=Time.now.to_f) if ot<Time.now.to_f-0.4) if d.peekover(thre)
if count<headersize || (d.size>0 && (d.peekover(thre) || remain>0))
  print current
  s=current.size
  count+=s
  remain-=s
end
remain=0 if remain<0
tn=Time.now
STDERR.print'-' if remain<1 && last>0
last=remain
"


test.mp3 に保存

 $ ./rusuroku.sh 4000 | lame - test.mp3
トラックバック - http://rubyist.g.hatena.ne.jp/hatecha/20180303
カレンダー
<< 2018/03 >>
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
archive Error : RSSが取得できませんでした。