download maraca.rb
Language: Ruby
LOC: 109
Project Info
Snd
Server: SourceForge
Type: cvs
SourceForge\s\snd\snd\cvs‑snd\
   _new_snd-test.rb
   _sndlib.h
   aclocal.m4
   analog-filter.scm
   audinfo.c
   audio.c
   autosave.scm
   bess.rb
   bess.scm
   bess1.rb
   bess1.scm
   bird.rb
   bird.scm
   clm-ins.rb
   clm-ins.scm
   clm-strings.h
   clm.c
   clm.h
   clm23.scm
   clm2xen.c
   clm2xen.h
   cmn-glyphs.lisp
   config.guess
   config.h.in
   config.rpath
   config.sub
   configure.ac
   debug.scm
   dlocsig.rb
   draw.rb
   draw.scm
   dsp.rb
   dsp.scm
   edit-menu.scm
   edit123.scm
   effects-utils.scm
   effects.rb
   env.rb
   env.scm
   enved.scm
   eval-c.scm
   event.scm
   examp.rb
   examp.scm
   extensions.rb
   extensions.scm
   fade.scm
   fft-menu.scm
   fix-optargs.scm
   fmv.scm
   freeverb.rb
   freeverb.scm
   gettext.h
   gl.c
   grani.scm
   gtk-effects.scm
   gtk-popup.scm
   gui.scm
   headers.c
   help-snd-fm.pd
   help-snd.pd
   HISTORY.Snd
   hooks.rb
   hooks.scm
   index.rb
   index.scm
   inf-snd.el
   io.c
   jcrev.scm
   ladspa-help.scm
   ladspa.scm
   makefile.in
   makefile.no-gettext
   maraca.rb
   maraca.scm
   marks-menu.scm
   marks.rb
   marks.scm
   maxf.rb
   maxf.scm
   midi.c
   misc.scm
   mix-menu.scm
   mix.rb
   mix.scm
   mixer.scm
   moog.scm
   musglyphs.rb
   musglyphs.scm
   nb.rb
   nb.scm
   new-backgrounds.scm
   new-buttons.scm
   new-effects.scm
   new-icons.scm
   noise.rb
   noise.scm
   old-mac-audio.c
   old-snd.spec
   oo.scm
   oscope.scm
   panic.scm
   pd-add.scm
   pd-any.scm
   pd-fm.scm
   pd-global.scm
   pd-inout.scm
   pd-local.scm
   pd-mozilla.scm
   pd-send_receive.scm
   peak-env.scm
   piano.rb
   piano.scm
   play.rb
   play.scm
   poly.rb
   poly.scm
   popup.rb
   popup.scm
   prc95.rb
   prc95.scm
   pvoc.rb
   pvoc.scm
   README.Snd
   rgb.rb
   rgb.scm
   rmsgain.scm
   rt-compiler.scm
   rt-engine.scm
   rt-examples.scm
   rt.tex
   rtio.rb
   rtio.scm
   rubber.rb
   rubber.scm
   saw.c
   singer.rb
   singer.scm
   snd-0.h
   snd-1.h
   snd-axis.c
   snd-chn.c
   snd-completion.c
   snd-dac.c
   snd-data.c
   snd-draw.c
   snd-edits.c
   snd-env.c
   snd-error.c
   snd-fft.c
   snd-file.c
   snd-file.h
   snd-find.c
   snd-g0.h
   snd-g1.h
   snd-gchn.c
   snd-gdraw.c
   snd-gdrop.c
   snd-genv.c
   snd-gfft.c
   snd-gfile.c
   snd-gfind.c
   snd-ghelp.c
   snd-gl.scm
   snd-glistener.c
   snd-gmain.c
   snd-gmenu.c
   snd-gmix.c
   snd-gprefs.c
   snd-gprint.c
   snd-grec.c
   snd-gregion.c
   snd-gsnd.c
   snd-gtk.scm
   snd-gutils.c
   snd-gxbitmaps.c
   snd-gxcolormaps.c
   snd-gxen.c
   snd-gxutils.c
   snd-help.c
   snd-hobbit.scm
   snd-io.c
   snd-kbd.c
   snd-ladspa.c
   snd-listener.c
   snd-main.c
   snd-marks.c
   snd-menu.c
   snd-menu.h
   snd-mix.c
   snd-motif.scm
   snd-nogui.c
   snd-nogui0.h
   snd-nogui1.h
   snd-prefs.c
   snd-print.c
   snd-rec.c
   snd-rec.h
   snd-region.c
   snd-run.c
   snd-select.c
   snd-sig.c
   snd-snd.c
   snd-strings.h
   snd-trans.c
   snd-utils.c
   snd-x0.h
   snd-x1.h
   snd-xchn.c
   snd-xdraw.c
   snd-xdrop.c
   snd-xen.c
   snd-xenv.c
   snd-xfft.c
   snd-xfile.c
   snd-xfind.c
   snd-xhelp.c
   snd-xlistener.c
   snd-xm.rb
   snd-xmain.c
   snd-xmenu.c
   snd-xmix.c
   snd-xprefs.c
   snd-xprint.c
   snd-xrec.c
   snd-xref.c
   snd-xregion.c
   snd-xsnd.c
   snd-xutils.c
   snd-xxen.c
   snd.1
   Snd.ad
   snd.c
   Snd.gtkrc
   snd.h
   snd.spec
   snd_conffile.scm
   snd_pd_external.c
   snd_pd_external.h
   snd4.scm
   snd5.scm
   snd6.scm
   snd7.scm
   sndctrl.c
   sndinfo.c
   sndlib-strings.h
   sndlib.h.in
   sndlib2xen.c
   sndlib2xen.h
   sndplay.c
   sndrecord.c
   sndwarp.scm
   sound.c
   special-menu.scm
   spectr.rb
   spectr.scm
   strad.rb
   strad.scm
   TODO.Snd
   track-colors.scm
   v.rb
   v.scm
   vct.c
   vct.h
   ws.rb
   ws.scm
   xen.c
   xen.h
   xg-x11.h
   xm-enved.rb
   xm-enved.scm
   zip.rb
   zip.scm

# maraca.rb -- maraca.ins -> maraca.scm -> maraca.rb

# Translator: Michael Scholz <scholz-micha@gmx.de>
# Created: Fri Apr 22 23:29:22 CEST 2005
# Last: Mon Apr 25 18:50:23 CEST 2005

# Commentary:
#
# Perry Cook's maraca from CMJ vol 21 no 3 (Fall 97) p 44 translated
# from CLM's maraca.ins
#
# Code:

def maraca(start, dur,
           amp = 0.1,
           sound_decay = 0.95,
           system_decay = 0.999,
           probability = 0.0625,
           shell_freq = 3200.0,
           shell_reso = 0.96)
  temp = 0.0
  shake_energy = 0.0
  snd_level = 0.0
  input = 0.0
  output = Vct.new(2)
  coeffs = Vct.new(2)
  num_beans = 64
  j = 0
  sndamp = amp / 16384.0
  srate4 = (mus_srate / 4.0).floor
  gain = ((log(num_beans) / log(4)) * 40.0) / num_beans
  ws_interrupt?
  coeffs[0] = -2.0 * shell_reso * cos(hz2radians(shell_freq))
  coeffs[1] = shell_reso * shell_reso
  run_instrument(start, dur) do
    if temp < TWO_PI
      temp += hz2radians(20)
      shake_energy += 1.0 - cos(temp)
    end
    if j == srate4
      temp = 0.0
      j = 0
    end
    j += 1
    shake_energy *= system_decay
    if random(1.0) < probability then snd_level += gain * shake_energy end
    input = snd_level * (random(2.0) - 1.0)
    snd_level *= sound_decay
    input -= output[0] * coeffs[0] -  output[1] * coeffs[1]
    output[1], output[0] = output[0], input
    sndamp * (output[0] - output[1])
  end
end
# maraca: vct2channel(maraca(0, 5, 0.5))
# cabasa: vct2channel(maraca(0, 5, 0.5, 0.95, 0.997, 0.5, 3000.0, 0.7))

def big_maraca(start, dur,
               amp = 0.1,
               sound_decay = 0.95,
               system_decay = 0.999,
               probability = 0.0625,
               shell_freqs = [3200.0],
               shell_resos = [0.96],
               randiff = 0.01,
               with_filters = true)
  temp = 0.0
  temp1 = 0.0
  resn = shell_freqs.length
  shake_energy = 0.0
  snd_level = 0.0
  input = 0.0
  sum = 0.0
  last_sum = 0.0
  last_diff = 0.0
  diff = 0.0
  output = Vct.new(resn * 2)
  coeffs = Vct.new(resn * 2)
  basesf = Vct.new(resn)
  num_beans = 64
  j = 0
  sndamp = amp / 16384.0
  srate4 = (mus_srate / 4.0).floor
  gain = ((log(num_beans) / log(4)) * 40.0) / num_beans
  ws_interrupt?
  resn.times do |i|
    basesf[i] = coeffs[i * 2] = -2.0 * shell_resos[i] * cos(hz2radians(shell_freqs[i]))
    coeffs[1 + i * 2] = shell_resos[i] * shell_resos[i]
  end
  run_instrument(start, dur) do
    if temp < TWO_PI
      temp += hz2radians(20)
      shake_energy += 1.0 - cos(temp)
    end
    if j == srate4
      temp = 0.0
      j = 0
    end
    j += 1
    shake_energy *= system_decay
    if random(1.0) < probability
      snd_level += gain * shake_energy
      basesf.each_with_index do |val, i|
        coeffs[i * 2] = val + (random(2.0 * randiff) - randiff)
      end
    end
    input = snd_level * (random(2.0) - 1.0)
    snd_level *= sound_decay
    temp1 = input
    last_sum = sum
    sum = 0.0
    resn.times do |i|
      input = temp1
      input -= output[i * 2] * coeffs[i * 2] -  output[i * 2 + 1] * coeffs[i * 2 + 1]
      output[i * 2 + 1], output[i * 2] = output[i * 2], input
      sum += input
    end
    if with_filters
      last_diff, diff = diff, sum - last_sum
      temp1 = last_diff + diff
    else
      temp1 = sum
    end
    sndamp * temp1
  end
end
# tambourine: big_maraca(0, 1, 0.25, 0.95, 0.9985, 0.03125,
#                        [2300, 5600, 8100], [0.96, 0.995, 0.995], 0.01)
# sleighbells: big_maraca(0, 2, 0.5, 0.97, 0.9994, 0.03125,
#                        [2500, 5300, 6500, 8300, 9800], [0.999, 0.999, 0.999, 0.999, 0.999])
# sekere: big_maraca(0, 2, 0.5, 0.96, 0.999, .0625, [5500], [0.6])
# windchimes: big_maraca(0, 2, 0.5, 0.99995, 0.95, 0.001,
#                        [2200, 2800, 3400], [0.995, 0.995, 0.995], 0.01, false)

# maraca.rb ends here

About Koders | Resources | Downloads | Support | Black Duck | Submit Project | Terms of Service | DMCA | Privacy Policy | Site Map| Contact Us