summaryrefslogtreecommitdiff
path: root/bundle.js
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2018-10-10 13:42:55 +0200
committerJules Laplace <julescarbon@gmail.com>2018-10-10 13:42:55 +0200
commita64c4fa7e1913fe14124190086d0d5624445c808 (patch)
tree878763e84ac0519d0b036a67dd79b1b21f0e1933 /bundle.js
parent0bb5cc4661bea6f8cf89ec4f4a109aa63630b668 (diff)
midi??
Diffstat (limited to 'bundle.js')
-rw-r--r--bundle.js138
1 files changed, 97 insertions, 41 deletions
diff --git a/bundle.js b/bundle.js
index 2c09ced..31e7d5b 100644
--- a/bundle.js
+++ b/bundle.js
@@ -30463,6 +30463,11 @@ Object.defineProperty(exports, "__esModule", {
value: true
});
exports.note_values = exports.MidiWriter = undefined;
+
+var _slicedToArray2 = __webpack_require__(73);
+
+var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
+
exports.midi_init = midi_init;
exports.play_note = play_note;
exports.play_midi_note = play_midi_note;
@@ -30488,6 +30493,8 @@ var _kalimba = __webpack_require__(78);
var _kalimba2 = _interopRequireDefault(_kalimba);
+var _FileSaver = __webpack_require__(74);
+
var _ui = __webpack_require__(51);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -30530,7 +30537,8 @@ function midi_init() {
function play_note(index, duration) {
var channel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "all";
var exporting = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
- var defer = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
+ var rest = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
+ var defer = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;
// console.log(index)
var scale = _scales2.default.current();
@@ -30545,6 +30553,8 @@ function play_note(index, duration) {
midi_note = Math.floor(midi_note);
if ((midiDevice || exporting) && midi_note > 127) return 0;
var note = _tone2.default.Frequency(Math.floor(midi_note), "midi").toNote();
+ var defer_time = 30000 / _tone2.default.Transport.bpm.value * defer / 128;
+ console.log(defer, defer_time);
if (exporting || midiDevice) {
duration = duration || 60000 / _tone2.default.Transport.bpm.value;
if (!exporting) {
@@ -30556,6 +30566,10 @@ function play_note(index, duration) {
play_midi_note(note, cents, channel, duration);
}
}
+ } else if (defer) {
+ setTimeout(function () {
+ _kalimba2.default.play(freq);
+ }, defer_time);
} else {
_kalimba2.default.play(freq);
}
@@ -30621,27 +30635,41 @@ function play_interval_sequence(i, bounds, diff, note_time) {
/* generate a 1-track midi file by calling the play function repeatedly */
function export_pattern_as_midi(datasetName, bounds, diff, tempo, timingIndex, play_fn) {
- var behavior = document.querySelector('#behavior').value;
+ // const behavior = document.querySelector('#behavior').value
var rows = bounds.rows;
+ // let count = behavior === 'sequence' ? rows[0].length * rows.length : rows.length
- var count = behavior === 'sequence' ? rows[0].length * rows.length : rows.length;
- var notes = void 0;
+ var count = rows[0].length;
+ var notes = void 0,
+ timings = void 0,
+ wait = void 0;
var note_time = void 0;
- var timing = note_values[timingIndex][2];
+ // let timing = note_values[timingIndex][2]
var midi_track = new MidiWriter.Track();
midi_track.setTempo(tempo);
for (var i = 0, len = count; i < len; i++) {
- notes = play_fn(i, bounds, note_time, "all", true)[1];
- if (timing.length) {
- note_time = timing[i % timing.length];
- } else {
- note_time = timing;
+ // if (timing.length) {
+ // note_time = timing[i % timing.length]
+ // } else {
+ // note_time = timing
+ // }
+ // midi_track.addEvent(new MidiWriter.NoteEvent({ pitch: notes, duration: 't' + note_time }))
+ var _play_fn = play_fn(i, bounds, note_time, "all", true);
+
+ var _play_fn2 = (0, _slicedToArray3.default)(_play_fn, 4);
+
+ i = _play_fn2[0];
+ notes = _play_fn2[1];
+ timings = _play_fn2[2];
+ wait = _play_fn2[3];
+ console.log(i, notes, timings);
+ for (var j = 0; j < notes.length; j++) {
+ midi_track.addEvent(new MidiWriter.NoteEvent({ pitch: notes[j], duration: 't' + timings[j], wait: wait }));
}
- midi_track.addEvent(new MidiWriter.NoteEvent({ pitch: notes, duration: 't' + note_time }));
}
var writer = new MidiWriter.Writer([midi_track]);
- var blob = dataURItoBlob(writer.dataUri());
- saveAs(blob, 'Recording - ' + datasetName + '.mid');
+ var blob = (0, _util.dataURItoBlob)(writer.dataUri());
+ (0, _FileSaver.saveAs)(blob, 'Recording - ' + datasetName + '.mid');
}
/***/ }),
@@ -40541,8 +40569,6 @@ var _nexusui = __webpack_require__(75);
var _nexusui2 = _interopRequireDefault(_nexusui);
-var _FileSaver = __webpack_require__(74);
-
var _keys = __webpack_require__(71);
var _keys2 = _interopRequireDefault(_keys);
@@ -40551,6 +40577,10 @@ var _scales = __webpack_require__(50);
var _scales2 = _interopRequireDefault(_scales);
+var _kalimba = __webpack_require__(78);
+
+var _kalimba2 = _interopRequireDefault(_kalimba);
+
var _midi = __webpack_require__(72);
var _util = __webpack_require__(30);
@@ -40620,8 +40650,9 @@ data.load().then(function (lists) {
return (parseInt(y) - parseInt(min_y)) * 12 + parseInt(m);
});
+ datasets["Mass Shootings"].data = lines;
datasets["Mass Shootings"].lines = [lines.map(function (row) {
- return Math.log(row[mass_fields.total_victims]);
+ return row[mass_fields.total_victims];
})];
(0, _util.requestAudioContext)(ready);
});
@@ -40657,11 +40688,16 @@ function play_mass_shootings(i, bounds, diff, note_time) {
var y = 0;
var x = i % rows[0].length;
var n = rows[y][x];
+ var total = dataset.dates.length;
var notes = [],
- midi_notes = [];
+ midi_notes = [],
+ cases = [],
+ timings = void 0;
console.log(i, mass_i, dataset.dates[mass_i]);
- while (i === dataset.dates[mass_i]) {
- notes.push(dataset.lines[mass_i]);
+ while (i >= dataset.dates[mass_i] && mass_i < total) {
+ notes.push(dataset.lines[0][mass_i]);
+ cases.push(dataset.data[mass_i][mass_fields.date] + ' ' + dataset.data[mass_i][mass_fields.case] + ", " + dataset.data[mass_i][mass_fields.fatalities] + ' dead, ' + dataset.data[mass_i][mass_fields.injured] + ' injured');
+ console.log('push case', dataset.data[mass_i][mass_fields.date] + ' ' + dataset.data[mass_i][mass_fields.case]);
mass_i += 1;
}
switch (notes.length) {
@@ -40670,49 +40706,58 @@ function play_mass_shootings(i, bounds, diff, note_time) {
mass_rest += 1;
break;
case 1:
- midi_notes.push((0, _midi.play_note)((0, _util.norm)(n, min, max) * _ui.nx.multiply.value, 128, channel, exporting, mass_rest, 0));
+ midi_notes.push((0, _midi.play_note)((0, _util.norm)(notes[0], min, max) * _ui.nx.multiply.value, 128, channel, exporting, mass_rest, 0));
+ timings = [128];
break;
case 2:
- midi_notes.push((0, _midi.play_note)((0, _util.norm)(n, min, max) * _ui.nx.multiply.value, 64, channel, exporting, mass_rest, 0));
- midi_notes.push((0, _midi.play_note)((0, _util.norm)(n, min, max) * _ui.nx.multiply.value, 64, channel, exporting, 0, 64));
+ midi_notes.push((0, _midi.play_note)((0, _util.norm)(notes[0], min, max) * _ui.nx.multiply.value, 64, channel, exporting, mass_rest, 0));
+ midi_notes.push((0, _midi.play_note)((0, _util.norm)(notes[1], min, max) * _ui.nx.multiply.value, 64, channel, exporting, 0, 64));
+ timings = [64, 64];
break;
case 3:
- midi_notes.push((0, _midi.play_note)((0, _util.norm)(n, min, max) * _ui.nx.multiply.value, 43, channel, exporting, mass_rest));
- midi_notes.push((0, _midi.play_note)((0, _util.norm)(n, min, max) * _ui.nx.multiply.value, 43, channel, exporting, 0, 43));
- midi_notes.push((0, _midi.play_note)((0, _util.norm)(n, min, max) * _ui.nx.multiply.value, 42, channel, exporting, 0, 85));
+ midi_notes.push((0, _midi.play_note)((0, _util.norm)(notes[0], min, max) * _ui.nx.multiply.value, 43, channel, exporting, mass_rest));
+ midi_notes.push((0, _midi.play_note)((0, _util.norm)(notes[1], min, max) * _ui.nx.multiply.value, 43, channel, exporting, 0, 43));
+ midi_notes.push((0, _midi.play_note)((0, _util.norm)(notes[2], min, max) * _ui.nx.multiply.value, 42, channel, exporting, 0, 85));
+ timings = [43, 43, 42];
break;
case 4:
- midi_notes.push((0, _midi.play_note)((0, _util.norm)(n, min, max) * _ui.nx.multiply.value, 32, channel, exporting, mass_rest));
- midi_notes.push((0, _midi.play_note)((0, _util.norm)(n, min, max) * _ui.nx.multiply.value, 32, channel, exporting, 0, 32));
- midi_notes.push((0, _midi.play_note)((0, _util.norm)(n, min, max) * _ui.nx.multiply.value, 32, channel, exporting, 0, 64));
- midi_notes.push((0, _midi.play_note)((0, _util.norm)(n, min, max) * _ui.nx.multiply.value, 32, channel, exporting, 0, 96));
+ midi_notes.push((0, _midi.play_note)((0, _util.norm)(notes[0], min, max) * _ui.nx.multiply.value, 32, channel, exporting, mass_rest));
+ midi_notes.push((0, _midi.play_note)((0, _util.norm)(notes[1], min, max) * _ui.nx.multiply.value, 32, channel, exporting, 0, 32));
+ midi_notes.push((0, _midi.play_note)((0, _util.norm)(notes[2], min, max) * _ui.nx.multiply.value, 32, channel, exporting, 0, 64));
+ midi_notes.push((0, _midi.play_note)((0, _util.norm)(notes[3], min, max) * _ui.nx.multiply.value, 32, channel, exporting, 0, 96));
+ timings = [32, 32, 32, 32];
break;
}
- if (mass_i > dataset.dates.length - 1) {
+ if (cases.length) {
+ document.querySelector('#cases').innerHTML = cases.join('<br>');
+ }
+ if (total <= mass_i) {
mass_rest = 0;
mass_i = 0;
i = 0;
} else {
i += 1;
}
+ _kalimba2.default.play(220, -12);
if (notes.length) {
mass_rest = 0;
- return [i, midi_notes];
+ return [i, midi_notes, timings, mass_rest];
}
mass_rest += 128;
- return [i, []];
+ return [i, [], [], 0];
}
/* play next note according to sonification */
function play_next() {
- var note_time = 120000 / _tone2.default.Transport.bpm.value * _midi.note_values[_ui.nx.timing.active][0] * _ui.nx.duration.value;
+ var note_time = 120000 / _tone2.default.Transport.bpm.value * _midi.note_values[_ui.nx.timing.active][0];
setTimeout(play_next, note_time);
var _play_fn = play_fn(i, bounds, diff, note_time),
- _play_fn2 = (0, _slicedToArray3.default)(_play_fn, 2),
+ _play_fn2 = (0, _slicedToArray3.default)(_play_fn, 3),
new_i = _play_fn2[0],
- notes = _play_fn2[1];
+ notes = _play_fn2[1],
+ timings = _play_fn2[2];
i = new_i;
if (recording) {
@@ -40776,7 +40821,7 @@ function ready() {
min: -24,
max: 24,
step: 1,
- value: 0
+ value: -5
});
(0, _ui.update_value_on_change)(_ui.nx.offset, '#offset', true);
@@ -40794,7 +40839,7 @@ function ready() {
min: -64,
max: 64,
step: 1,
- value: 7
+ value: 17
});
(0, _ui.update_value_on_change)(_ui.nx.multiply, '#multiply', true);
@@ -40820,7 +40865,7 @@ function ready() {
recording = false;
var writer = new _midi.MidiWriter.Writer([recorder]);
var blob = (0, _util.dataURItoBlob)(writer.dataUri());
- (0, _FileSaver.saveAs)(blob, 'Recording - ' + dataset.name + '.mid');
+ saveAs(blob, 'Recording - ' + dataset.name + '.mid');
} else {
record_midi_button.innerHTML = 'Save Recording';
document.body.classList.add('recording');
@@ -40832,8 +40877,12 @@ function ready() {
document.querySelector('.loading').classList.remove('loading');
- document.querySelector('#dataset').value = 'Surrenders';
+ document.querySelector('#dataset').value = 'Mass Shootings';
pick_dataset('Mass Shootings');
+
+ document.querySelector('#scale').value = '14';
+ _scales2.default.pick(14);
+
play_next();
}
@@ -41040,6 +41089,7 @@ var _util = __webpack_require__(30);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var player_count = 2;
+var sample_index = 0;
var compressor = new _tone2.default.Compressor(-30, 3).toMaster();
@@ -41064,13 +41114,19 @@ samples.forEach(function (sample) {
});
function play(freq) {
- var best = { sample: (0, _util.choice)(samples) };
+ var volume = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.0;
+
+ var best = { sample: samples[sample_index] };
+ sample_index = (sample_index + 1) % samples.length;
best.sample.index = (best.sample.index + 1) % player_count;
var player = best.sample.players[best.sample.index];
player.playbackRate = freq / best.sample.root;
// console.log(player)
- player.start();
+ player.volume.value = volume;
+ setTimeout(function () {
+ player.start();
+ }, 0);
}
exports.default = { play: play };