plugins/miscellaneous.cracked.js

  1. /**
  2. * Clips audio level at 1/-1
  3. * @plugin
  4. * @category Miscellaneous
  5. * @function
  6. * @memberof cracked
  7. * @name cracked#clip
  8. * @public
  9. */
  10. cracked.clip = function (params) {
  11. var userParams = __.isObj(params) ? params : {};
  12. userParams.mapping = userParams.mapping || {};
  13. var curve = new Float32Array(2);
  14. // Set some default clipping - just makes everything under -1 be -1, and everything over 1 be 1.
  15. curve[0] = -1;
  16. curve[1] = 1;
  17. __.begin("clip", userParams).waveshaper({curve: curve}).end("clip");
  18. return cracked;
  19. };
  20. /**
  21. * System out - destination with a master volume. Output is clipped if gain is 1 or less.
  22. * @plugin
  23. * @category Miscellaneous
  24. * @param {Number} [params=1] system out gain
  25. * @function
  26. * @memberof cracked
  27. * @name cracked#dac
  28. * @public
  29. */
  30. cracked.dac = function (params) {
  31. var gain = __.isNum(params) ? params : 1;
  32. var userParams = __.isObj(params) ? params : {};
  33. userParams.mapping = userParams.mapping || {};
  34. if(gain > 1) {
  35. __.begin("dac", userParams).gain(gain).destination().end("dac");
  36. } else {
  37. __.begin("dac", userParams).clip().gain(gain).destination().end("dac");
  38. }
  39. return cracked;
  40. };
  41. /**
  42. * System in - input with a master volume
  43. * @plugin
  44. * @category Miscellaneous
  45. * @param {Number} [params=1] system in gain
  46. * @function
  47. * @memberof cracked
  48. * @name cracked#adc
  49. * @public
  50. */
  51. cracked.adc = function (params) {
  52. var gain = __.isNum(params) ? params : 1;
  53. var userParams = __.isObj(params) ? params : {};
  54. userParams.mapping = userParams.mapping || {};
  55. __.begin("adc", userParams).origin().gain(gain).end("adc");
  56. return cracked;
  57. };
  58. /**
  59. * System out - destination with a master volume
  60. * Alias for dac
  61. * @plugin
  62. * @category Miscellaneous
  63. * @param {Number} [params=1] system out gain
  64. * @function
  65. * @memberof cracked
  66. * @name cracked#out
  67. * @public
  68. */
  69. cracked.out = function (params) {
  70. var gain = __.isNum(params) ? params : 1;
  71. var userParams = __.isObj(params) ? params : {};
  72. userParams.mapping = userParams.mapping || {};
  73. __.begin("out", userParams).gain(gain).destination().end("out");
  74. return cracked;
  75. };
  76. /**
  77. * System multi_out - destination with a master volume w/ multi-channel support
  78. * @plugin
  79. * @category Miscellaneous
  80. * @param {Object} [userParams] map of optional values
  81. * @param {Number} [userParams.gain=1]
  82. * @param {Number} [userParams.channel=1]
  83. * @function
  84. * @memberof cracked
  85. * @name cracked#multi_out
  86. * @public
  87. */
  88. cracked.multi_out = function (params) {
  89. var to_channel = __.isNum(params) ? params : __.isObj(params) && params.channel ? params.channel : 0;
  90. var userParams = __.isObj(params) ? params : {};
  91. var gain = userParams.gain ? userParams.gain : 1;
  92. userParams.mapping = userParams.mapping || {};
  93. __.begin("multi_out", userParams).gain({from_channel:0,to_channel:to_channel,gain:gain}).channelMerger().destination().end("multi_out");
  94. return cracked;
  95. };
  96. /**
  97. * System in - input with a master volume
  98. * Alias for adc
  99. * @plugin
  100. * @category Miscellaneous
  101. * @param {Number} [params=1] system in gain
  102. * @function
  103. * @memberof cracked
  104. * @name cracked#in
  105. * @public
  106. */
  107. cracked.in = function (params) {
  108. var gain = __.isNum(params) ? params : 1;
  109. var userParams = __.isObj(params) ? params : {};
  110. userParams.mapping = userParams.mapping || {};
  111. __.begin("in", userParams).origin().gain(gain).end("in");
  112. return cracked;
  113. };
  114. ///**
  115. // * Splitter - channel splitter
  116. // *
  117. // * @plugin
  118. // * @category Miscellaneous
  119. // * @param {Object} [params] map of optional values
  120. // * @function
  121. // * @memberof cracked
  122. // * @name cracked#splitter
  123. // * @public
  124. // */
  125. //cracked.splitter = function (params) {
  126. // var channels = __.isNum(params) ? params : (__.isObj(params) && params.channels) ? params.channels : 2;
  127. // var userParams = __.isObj(params) ? params : {channels:channels};
  128. // userParams.mapping = userParams.mapping || {};
  129. // __.begin("splitter", userParams).channelSplitter(userParams).end("splitter");
  130. // return cracked;
  131. //};
  132. ///**
  133. // * Merger - channel merger
  134. // *
  135. // * @plugin
  136. // * @category Miscellaneous
  137. // * @param {Object} [params] map of optional values
  138. // * @function
  139. // * @memberof cracked
  140. // * @name cracked#merger
  141. // * @public
  142. // */
  143. //cracked.merger = function (params) {
  144. // var userParams = __.isObj(params) ? params : {};
  145. // userParams.mapping = userParams.mapping || {};
  146. // __.begin("merger", userParams).channelMerger(userParams).end("merger");
  147. // return cracked;
  148. //};
  149. /**
  150. * Panner - simple stereo panner
  151. *
  152. * @plugin
  153. * @category Miscellaneous
  154. * @param {Object} [params] map of optional values
  155. * @function
  156. * @memberof cracked
  157. * @name cracked#panner
  158. * @public
  159. */
  160. cracked.panner = function (params) {
  161. var pan = __.isNum(params) ? params : (__.isObj(params) && params.pan) ? params.pan : 0;
  162. var userParams = __.isObj(params) ? params : {};
  163. var options = {};
  164. userParams.mapping = userParams.mapping || {};
  165. __.begin("panner", userParams).stereoPanner({'pan':pan}).end("panner");
  166. return cracked;
  167. };
  168. /**
  169. * Sampler - sound file player
  170. *
  171. * [See more sampler examples](examples/sampler.html)
  172. *
  173. * @plugin
  174. * @category Miscellaneous
  175. * @function
  176. * @memberof cracked
  177. * @name cracked#sampler
  178. * @public
  179. * @param {Object} [userParams] map of optional values
  180. * @param {Number} [userParams.speed=1]
  181. * @param {Number} [userParams.start=1]
  182. * @param {Number} [userParams.end=1]
  183. * @param {String} [userParams.path=''] path to sound file to play
  184. * @param {Boolean} [userParams.loop=false]
  185. */
  186. cracked.sampler = function (userParams) {
  187. //sampler only plays sound files not data from functions
  188. if (userParams && userParams.path) {
  189. __.begin("sampler", userParams).buffer(userParams).end("sampler");
  190. }
  191. return cracked;
  192. };