ld_preload-sounds

Generates raw WAV output by hooking malloc() and read().

  • 所有者: gordol/ld_preload-sounds
  • 平台:
  • 許可證:
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

ld_preload sounds

Generates WAV output by hooking malloc() and read(). Adding support for other calls should be pretty easy, pull-requests are much welcomed!

Also, it should go without saying... but I will say it anyway... this is experimental. Hooking memory and read calls could break things horribly, I accidentally blew out a buch of my vim configs at one point while first starting to write this becuase I thought it would be neat to hook the editor while making more changes, and yeah... I broke it. So consider yourself warned... I do not wish to be responsible if you break your system, lose files, etc... Be sure you have backups of any files touched by the programs you're running through this, you have backups anyway, don't you? Don't you?

To build, run make, you know the drill. ;)

To try it out, run the writeWav script with the program and parameters you with to experiment with.
A wav file will be created in the current directory with a name of the current timestamp if you run with writeWav.

Otherwise, if you wish, you may LD_PRELOAD writeWav.so manually. If you preload manually, however, there are some environment vars that you should be aware of:

Required:

  • writeWav_out (default: none)

Optional:

  • writeWav_noread (default: false) If true, we will not use read() calls to generate data.
  • writeWav_nomalloc (default: false) If true, we will not use malloc() calls to generate data.

If you want to tweak the output, you may do so in writeWav.c near the top:

/*
 * General wave generation parameters.
 *
 * parameter 1 - wave frequency in Hertz; should be clamped to a sane range
 *   (e. g. 20-20000 Hz) with CLAMP_u(freq, min, max)
 * parameter 2 - wave duration in milliseconds
 * parameter 3 - wave amplitude (0.0-1.0)
 */

/*
 * Size-based wave generatrion for malloc() calls.
 *
 * size - allocated memory size in bytes
 */
#define MALLOC_WAVE_PARAMS(size) \
  CLAMP_u(size, 20u, 10000u), 20, 0.7f

/*
 * Size and runtime based wave generation for malloc() calls.
 *
 * size - see above
 * ticks - number of consumed CPU clock ticks since program start
 */
#define MALLOC_WAVE_TICKS_PARAMS(size, ticks) \
  CLAMP_u(ticks, 20u, 20000u), 10, 0.7f

/*
 * Size based wave generation for read() calls.
 *
 * requested - requested amount of bytes to read
 * returned - actual amounts of bytes read
 */
#define READ_WAVE_PARAMS(requested, returned) \
  CLAMP_u(requested, 20u, 20000u), CLAMP_u(returned, 100, 1700), 0.7f

You can listen to some examples of the output here:

Many thanks to @davidfoerster and others for the forks and improvements!

主要指標

概覽
名稱與所有者gordol/ld_preload-sounds
主編程語言C
編程語言Makefile (語言數: 3)
平台
許可證
所有者活动
創建於2014-07-20 13:08:01
推送於2015-01-02 10:27:12
最后一次提交2015-01-02 02:25:06
發布數0
用户参与
星數192
關注者數10
派生數10
提交數45
已啟用問題?
問題數2
打開的問題數1
拉請求數3
打開的拉請求數0
關閉的拉請求數0
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?