Skip to content

Commit

Permalink
FLOE-437: make sonification purely declarative; restructure invoker u…
Browse files Browse the repository at this point in the history
…sage
  • Loading branch information
waharnum committed Feb 4, 2016
1 parent bce027d commit f054b81
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 21 deletions.
5 changes: 4 additions & 1 deletion src/js/sonifier.js
Expand Up @@ -92,11 +92,13 @@ https://raw.githubusercontent.com/fluid-project/chartAuthoring/master/LICENSE.tx
args: ["{that}"]
},
// Calls the default sonification strategy
"defaultSonificationStrategy": "{that}.unitDivisor10xSonificationStrategy"
"defaultSonificationStrategy": "{that}.unitDivisorStrategy(10)"
},
events: {
// Fires when a sonification play is requested
onSonificationRequested: null,
// Fires after sonification data is queued for play
onSonificationDataQueued: null,
// Fires when a voice label read finishes (via event injection),
// or is fired manually by the floe.chartAuthoring.sonifier.scheduleNextPlayData
// function
Expand Down Expand Up @@ -125,6 +127,7 @@ https://raw.githubusercontent.com/fluid-project/chartAuthoring/master/LICENSE.tx
return;
}
that.applier.change("sonificationQueue", that.model.sonifiedData);
that.events.onSonificationDataQueued.fire();
};

// Passed a sonified dataset, this function + others acts recursively
Expand Down
24 changes: 4 additions & 20 deletions src/js/unitDivisorSonificationStrategy.js
Expand Up @@ -54,32 +54,16 @@ https://raw.githubusercontent.com/fluid-project/chartAuthoring/master/LICENSE.tx
},
invokers: {
"sonifyData": {
funcName: "floe.chartAuthoring.sonifier.unitDivisorSonificationStrategy.dataEntriesToSonificationData",
args: "{that}"
changePath: "sonifiedData",
value: "@expand:{that}.unitDivisorStrategy(10)"
},
"unitDivisor10xSonificationStrategy": {
"unitDivisorStrategy": {
funcName: "floe.chartAuthoring.sonifier.unitDivisorSonificationStrategy.unitDivisorStrategy",
args: ["{that}", 10]
},
"unitDivisor5xSonificationStrategy": {
funcName: "floe.chartAuthoring.sonifier.unitDivisorSonificationStrategy.unitDivisorStrategy",
args: ["{that}", 5]
},
"unitDivisor1xSonificationStrategy": {
funcName: "floe.chartAuthoring.sonifier.unitDivisorSonificationStrategy.unitDivisorStrategy",
args: ["{that}", 1]
args: ["{that}", "{arguments}.0"]
}
}
});

// Given an object in the style of floe.chartAuthoring.dataEntryPanel.model.dataEntries,
// convert it to an array of objects in the style used by the sonification components,
// maintaining object constancy by using the dataEntry object name as the key
floe.chartAuthoring.sonifier.unitDivisorSonificationStrategy.dataEntriesToSonificationData = function (that) {
var sonificationData = that.defaultSonificationStrategy();
that.applier.change("sonifiedData", sonificationData);
};

// Creates a sonification data set based on unit divisors
// Longer tones represent the unit divisor, while a short tones is played
// for each remaining "1" of the remainder
Expand Down

0 comments on commit f054b81

Please sign in to comment.