code: function WaveformDataSegment(context, start, end) {
    this.context = context;
  
    /**
     * Start index.
     *
     * ```javascript
     * var waveform = new WaveformData({ ... }, WaveformData.adapters.object);
     * waveform.set_segment(10, 50, "example");
     *
     * console.log(waveform.segments.example.start);  // -> 10
     *
     * waveform.offset(20, 50);
     * console.log(waveform.segments.example.start);  // -> 10
     *
     * waveform.offset(70, 100);
     * console.log(waveform.segments.example.start);  // -> 10
     * ```
     * @type {Integer} Initial starting point of the segment.
     */
  
    this.start = start;
  
    /**
     * End index.
     *
     * ```javascript
     * var waveform = new WaveformData({ ... }, WaveformData.adapters.object);
     * waveform.set_segment(10, 50, "example");
     *
     * console.log(waveform.segments.example.end);  // -> 50
     *
     * waveform.offset(20, 50);
     * console.log(waveform.segments.example.end);  // -> 50
     *
     * waveform.offset(70, 100);
     * console.log(waveform.segments.example.end);  // -> 50
     * ```
     * @type {Integer} Initial ending point of the segment.
     */
  
    this.end = end;
  }
docs: Segments are an easy way to keep track of portions of the described
  audio file.
  
  They return values based on the actual offset. Which means if you change your
  offset and:
  
  * a segment becomes **out of scope**, no data will be returned;
  * a segment is only **partially included in the offset**, only the visible
  parts will be returned;
  * a segment is **fully included in the offset**, its whole content will be
  returned.
  
  Segments are created with the `WaveformData.set_segment(from, to, name?)`
  method.
  
  @see WaveformData.prototype.set_segment
  @param {WaveformData} context WaveformData instance
  @param {Integer} start Initial start index
  @param {Integer} end Initial end index
  @constructor