Highcharts test tool

HTML

<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>

<div id="columnChart" class="container"></div>
<div id="scatterChart" class="container"></div>
<div id="lineChart" class="container"></div>

CSS

.container {
    min-width: 300px;
    max-width: 800px;
    height: 300px;
    margin: 1em auto;
}

JavaScript

// Plugin to visualize the chart using basic sonification

var each = Highcharts.each,
	merge = Highcharts.merge;

Highcharts.Series.prototype.sonify = function (options, callback) {
    var audio = new (window.AudioContext || window.webkitAudioContext)(),
    	numPoints = this.points.length,
        valueToFreq = fuction (val) {
        	var valMin = options.rangeMin || this.dataMin,
            	valMax = options.rangeMax || this.dataMax,
                freqStep = (options.maxFrequency - options.minFrequency) / (valMax - valMin);
        	return options.minFrequency + (val - valMin) * freqStep;
        },
        timePerPoint = Math.min(options.maxDuration / numPoints, options.maxPointDuration),
        maxPointsNum = options.maxDuration / options.maxPointDuration,
        pointSkip = 1;

	// Skip over points if we have too many
    // Eventually, we might want to use data grouping here
	if (timePerPoint < options.minPointDuration) {
    	pointSkip = numPoints / maxPointsNum;
    }
	


    callback.call(this);
};

Highcharts.Chart.prototype.sonify = function () {
	var options = this.options.sonification;
	if (this.series[0]) {
    	this.series[0].sonify(options, function sonifyNext () {
        	var newSeries = this.chart.series[this.index + 1],
            	opts;
            if (newSeries) {
            	opts = merge(options, newSeries.options.sonification);
            	setTimeout(function () {
                	newSeries.sonify(options, sonifyNext);
                }, opts.seriesDelay);
            }
        });
    }
};

// Default sonification options
Highcharts.setOptions({
	sonification: {
    	seriesDelay: 1000, // Delay between series in ms
		maxDuration: 7000, // In ms
        minPointDuration: 10, // In ms
        maxPointDuration: 200, // In ms
        minFrequency: 100,
        maxFrequency: 2400,
        waveType: 'sine',
        smoothed: false
	}
});

// Add option to export menu to sonify the...