{"version":3,"file":"index.cjs","sources":["../src/config/defaults.ts","../node_modules/eventemitter3/index.js","../src/core/loader/ImageLoader.ts","../src/core/utils/ImageUtils.ts","../src/core/utils/MathUtils.ts","../src/core/mappers/PixelToFrequencyMapper.ts","../src/core/generators/RGBToAudioSampleGenerator.ts","../src/core/factories/WavFileFactory.ts","../src/core/utils/FileUtils.ts","../src/Pixeltone.ts"],"sourcesContent":["const DEFAULT_RGB_FREQUENCY_RANGES = {\r\n  r: { min: 30.0, max: 500.0, offset: 60.0 },\r\n  g: { min: 500.0, max: 2000.0, offset: 250.0 },\r\n  b: { min: 2000.0, max: 10000.0, offset: 1000.0 },\r\n};\r\n\r\nconst DEFAULT_SAMPLE_RATE = 44100;\r\nconst DEFAULT_DURATION = 0.01;\r\n\r\nexport {\r\n  DEFAULT_RGB_FREQUENCY_RANGES, \r\n  DEFAULT_SAMPLE_RATE, \r\n  DEFAULT_DURATION \r\n};","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n","import { Image, loadImage } from \"canvas\";\r\n\r\nimport EventEmitter from \"eventemitter3\";\r\n\r\nclass ImageLoader extends EventEmitter {\r\n  constructor() {\r\n    super();\r\n  }\r\n\r\n  public async load(inputImagePath: string): Promise<Image> {\r\n    return await loadImage(inputImagePath);\r\n  }\r\n\r\n  public destroy(): void {\r\n    super.removeAllListeners();\r\n  }\r\n}\r\n\r\nexport { ImageLoader };","import { createCanvas, Image } from 'canvas';\r\n\r\nimport fs from 'fs';\r\nimport path from 'path';\r\n\r\nimport { ImageMetadata } from \"../types/ImageMetadata\";\r\n\r\nclass ImageUtils {\r\n  public static getMetadata(inputImagePath: string): ImageMetadata {\r\n    const fileStat = fs.statSync(inputImagePath);\r\n    const fileSize = fileStat.size;\r\n    return {\r\n      name: path.basename(inputImagePath),\r\n      sizeKB: Math.round(fileSize / 1024),\r\n    };\r\n  }\r\n\r\n  public static extractImageData(image: Image): Uint8ClampedArray {\r\n    if(!image) {\r\n      return new Uint8ClampedArray(0);\r\n    }\r\n    const width = image.width;\r\n    const height = image.height;\r\n    const canvas = createCanvas(width, height);\r\n    const ctx = canvas.getContext('2d');\r\n    ctx.drawImage(image, 0, 0);\r\n    const imageData = ctx.getImageData(0, 0, width, height);\r\n    return imageData.data;\r\n  }\r\n}\r\n\r\nexport { ImageUtils };","import { FrequencyMapperOptions } from \"../options/FrequencyMapperOptions\";\r\nimport { RGB } from \"../types/RGB\";\r\n\r\nclass MathUtils {\r\n  public static normalizeRGB(rgb: RGB): RGB {\r\n    const { r, g, b } = rgb;\r\n    return {\r\n      r: r / 255,\r\n      g: g / 255,\r\n      b: b / 255,\r\n    };\r\n  }\r\n  \r\n  public static mapFrequency(options: FrequencyMapperOptions): number {\r\n    const { value, frequencyRange } = options;\r\n    const { offset, min, max } = frequencyRange;\r\n    return offset + value * (max - min);\r\n  }\r\n}\r\n\r\nexport { MathUtils };","import { FrequencyMapperOptions } from \"../options/FrequencyMapperOptions\";\r\nimport { SerialRGBMapperOptions } from \"../options/SerialRGBMapperOptions\";\r\nimport { MappedFreqAmp } from \"../types/MappedFreqAmp\";\r\nimport { MathUtils } from \"../utils/MathUtils\";\r\n\r\nclass PixelToFrequencyMapper {\r\n  constructor() {\r\n  }\r\n\r\n  public serialRGBMapper(options: SerialRGBMapperOptions): MappedFreqAmp {\r\n    const { data, width, height, rgbFrequencyRange } = options;\r\n    const frequencies: number[] =[];\r\n    const amplitudes: number[] = [];\r\n    for (let y = 0; y < height; y++) {\r\n      for (let x = 0; x < width; x++) {\r\n        const idx = (y * width + x) * 4; // RGBA format\r\n        const rgb = MathUtils.normalizeRGB({\r\n          r: data[idx],\r\n          g: data[idx + 1],\r\n          b: data[idx + 2],\r\n        });\r\n        this._mapFrequencies([{\r\n          value: rgb.r,\r\n          frequencyRange: rgbFrequencyRange.r\r\n        }, {\r\n          value: rgb.g,\r\n          frequencyRange: rgbFrequencyRange.g\r\n        }, {\r\n          value: rgb.b,\r\n          frequencyRange: rgbFrequencyRange.b\r\n        }, \r\n      ]).forEach(value => { frequencies.push(value) });\r\n        amplitudes.push(rgb.r, rgb.g, rgb.b);\r\n      }\r\n    }\r\n    return { frequencies, amplitudes };\r\n  }\r\n\r\n  private _mapFrequencies(options: FrequencyMapperOptions[]): number[] {\r\n    // Assuming we have 3 (RGB) as in order\r\n    return options.map(option => {\r\n      const { value, frequencyRange } = option;\r\n      return MathUtils.mapFrequency({\r\n        value,\r\n        frequencyRange,\r\n      });\r\n    });\r\n  }\r\n\r\n  public destroy(): void {\r\n    // TODO\r\n  }\r\n\r\n}\r\n\r\nexport { PixelToFrequencyMapper };","import { GenerateAsSinWaveOptions } from \"../options/GenerateAsSinWaveOptions\";\r\n\r\nclass RGBToAudioSampleGenerator {\r\n  constructor() {\r\n    // TODO\r\n  }\r\n\r\n  public generateAsSinWave(options: GenerateAsSinWaveOptions): Float32Array {\r\n    const { mappedFreqAmp, sampleRate, duration } = options;\r\n    const { amplitudes, frequencies } = mappedFreqAmp;\r\n    const totalSamples = Math.floor(frequencies.length / 3) * Math.floor(sampleRate * duration);\r\n    const audioSamples = new Float32Array(totalSamples);\r\n    let sampleIndex = 0;\r\n    for (let i = 0; i < frequencies.length; i += 3) {\r\n      const [freqR, freqG, freqB] = [frequencies[i], frequencies[i + 1], frequencies[i + 2]];\r\n      const [ampR, ampG, ampB] = [amplitudes[i], amplitudes[i + 1], amplitudes[i + 2]];\r\n      for (let t = 0; t < sampleRate * duration; t++) {\r\n        const time = t / sampleRate;\r\n        // TODO add this to MathUtil as createSinWave with options.\r\n        const sample =\r\n          (ampR * Math.sin(2 * Math.PI * freqR * time) +\r\n            ampG * Math.sin(2 * Math.PI * freqG * time) +\r\n            ampB * Math.sin(2 * Math.PI * freqB * time)) /\r\n          3;\r\n        audioSamples[sampleIndex++] = sample;\r\n      }\r\n    }\r\n    return audioSamples;\r\n  }\r\n\r\n  public destroy(): void {\r\n    // TODO\r\n  }\r\n}\r\n\r\nexport { RGBToAudioSampleGenerator };","import wavefile from 'wavefile';\r\nconst { WaveFile } = wavefile;\r\n\r\nclass WaveFileFactory {\r\n  private _waveFile: wavefile.WaveFile;\r\n\r\n  constructor() {\r\n    this._waveFile = new WaveFile();\r\n  }\r\n\r\n  public createBuffer(audioSamples: Float32Array, sampleRate: number): Buffer {\r\n    this._waveFile.fromScratch(1, sampleRate, '32f', audioSamples);\r\n    return Buffer.from(this._getBuffer());\r\n  }\r\n\r\n  private _getBuffer(): Uint8Array {\r\n    return this._waveFile.toBuffer();\r\n  }\r\n\r\n  public destroy(): void {\r\n  }\r\n}\r\n\r\nexport { WaveFileFactory };","import fs from 'fs';\r\n\r\nclass FileUtils {\r\n  public static createFile(outputAudioPath: string, data: string | Buffer): void {\r\n    fs.writeFileSync(outputAudioPath, data);\r\n  }\r\n}\r\n\r\nexport { FileUtils };","import { DEFAULT_DURATION, DEFAULT_RGB_FREQUENCY_RANGES, DEFAULT_SAMPLE_RATE } from \"./config/defaults\";\r\nimport { PixeltoneOptions } from \"./core/options/PixeltoneOptions\";\r\nimport { ImageLoader } from \"./core/loader/ImageLoader\";\r\nimport { ImageUtils } from \"./core/utils/ImageUtils\";\r\nimport { PixelToFrequencyMapper } from \"./core/mappers/PixelToFrequencyMapper\";\r\nimport { RGBToAudioSampleGenerator } from \"./core/generators/RGBToAudioSampleGenerator\";\r\nimport { WaveFileFactory } from \"./core/factories/WavFileFactory\";\r\nimport { FileUtils } from \"./core/utils/FileUtils\";\r\n\r\n\r\n/**\r\n * Pixeltone class provides functionality to generate audio files from image data.\r\n */\r\nclass Pixeltone {\r\n\r\n  private _imageLoader: ImageLoader;\r\n  private _pixelToFrequencyMapper: PixelToFrequencyMapper;\r\n  private _rgbToAudioSampleGenerator: RGBToAudioSampleGenerator;\r\n  private _wavFileFactory: WaveFileFactory;\r\n\r\n  constructor() {\r\n    this._imageLoader = new ImageLoader();\r\n    this._pixelToFrequencyMapper = new PixelToFrequencyMapper();\r\n    this._rgbToAudioSampleGenerator = new RGBToAudioSampleGenerator();\r\n    this._wavFileFactory = new WaveFileFactory();\r\n  }\r\n\r\n   /**\r\n   * Converts an image into an audio file by mapping pixel data (RGB) to audio frequencies.\r\n   * \r\n   * @param {PixeltoneOptions} options - Configuration options for generating audio.\r\n   * @param {string} options.inputImagePath - Path to the input image file.\r\n   * @param {string} options.outputAudioPath - Path where the output audio file will be saved.\r\n   * @param {number} [options.sampleRate=DEFAULT_SAMPLE_RATE] - The audio sample rate in Hz.\r\n   * @param {number} [options.duration=DEFAULT_DURATION] - Duration of the each pixel sample in seconds.\r\n   * @param {number[][]} [options.rgbFrequencyRange=DEFAULT_RGB_FREQUENCY_RANGES] - Frequency range for RGB channels.\r\n   * \r\n   * @returns {Promise<void>} Resolves when the audio file has been successfully created.\r\n   * \r\n   * @example\r\n   * const pixeltone = new Pixeltone();\r\n   * await pixeltone.createAudioFromImage({\r\n   *   inputImagePath: './input.png',\r\n   *   outputAudioPath: './output.wav',\r\n   *   sampleRate: 44100,\r\n   *   duration: 10,\r\n   *   rgbFrequencyRange: { \r\n   *     r: { min: 30, max: 500, offset: 60 }, \r\n   *     g: { min: 500, max: 2000, offset: 250 }, \r\n   *     b: { min: 2000, max: 10000, offset: 1000 }, \r\n   *   }\r\n   * });\r\n   */\r\n  public async createAudioFromImage(options: PixeltoneOptions): Promise<void> {\r\n    const {\r\n      inputImagePath,\r\n      outputAudioPath,\r\n      sampleRate = DEFAULT_SAMPLE_RATE,\r\n      duration = DEFAULT_DURATION,\r\n      rgbFrequencyRange =  DEFAULT_RGB_FREQUENCY_RANGES,\r\n    } = options;\r\n    const image = await this._imageLoader.load(inputImagePath);\r\n    const metadata = ImageUtils.getMetadata(inputImagePath);\r\n    const imageData = ImageUtils.extractImageData(image);\r\n    const mappedFreqAmp = this._pixelToFrequencyMapper.serialRGBMapper({\r\n      data: imageData,\r\n      width: image.width,\r\n      height: image.height,\r\n      rgbFrequencyRange,\r\n    });\r\n    const audioSamples = this._rgbToAudioSampleGenerator.generateAsSinWave({\r\n      mappedFreqAmp,\r\n      sampleRate,\r\n      duration,\r\n    })\r\n    const buffer = this._wavFileFactory.createBuffer(audioSamples, sampleRate);\r\n    FileUtils.createFile(outputAudioPath, buffer);\r\n  }\r\n\r\n  public destroy(): void {\r\n    this._imageLoader.destroy();\r\n    this._pixelToFrequencyMapper.destroy();\r\n    this._rgbToAudioSampleGenerator.destroy();\r\n    this._wavFileFactory.destroy();\r\n  }\r\n}\r\n\r\nexport { Pixeltone };"],"names":["loadImage","canvas","createCanvas"],"mappings":"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","x_google_ignoreList":[1]}