Skip to content

Commit 599a999

Browse files
authored
feat(logic): complete dynamic MakeBlock types for tempo, volume, and instrument (#5721)
1 parent f7a9173 commit 599a999

File tree

1 file changed

+58
-7
lines changed

1 file changed

+58
-7
lines changed

js/blocks/ProgramBlocks.js

Lines changed: 58 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1255,21 +1255,72 @@ function setupProgramBlocks(activity) {
12551255
[8, "hidden", 0, 0, [0, null]]
12561256
];
12571257
activity.blocks.loadNewBlocks(newNote);
1258-
// eslint-disable-next-line no-console
1259-
console.debug("BLOCKNUMBER " + blockNumber);
12601258
return blockNumber;
12611259
} else if (name === _("start")) {
12621260
const newBlock = [[0, "start", x, y, [null, null, null]]];
12631261
activity.blocks.loadNewBlocks(newBlock);
1264-
// eslint-disable-next-line no-console
1265-
console.debug("BLOCKNUMBER " + blockNumber);
12661262
return blockNumber;
12671263
} else if (name === _("silence")) {
1268-
// FIXME: others too
12691264
const newBlock = [[0, "rest2", x, y, [null, null]]];
12701265
activity.blocks.loadNewBlocks(newBlock);
1271-
// eslint-disable-next-line no-console
1272-
console.debug("BLOCKNUMBER " + blockNumber);
1266+
return blockNumber;
1267+
} else if (name === _("tempo")) {
1268+
let bpm, beat;
1269+
switch (blockArgs.length) {
1270+
case 1:
1271+
bpm = 90;
1272+
beat = 4;
1273+
break;
1274+
case 2:
1275+
bpm = blockArgs[1];
1276+
beat = 4;
1277+
break;
1278+
default:
1279+
bpm = blockArgs[1];
1280+
beat = blockArgs[2];
1281+
break;
1282+
}
1283+
const newTempo = [
1284+
[0, "setbpm3", x, y, [null, 1, 2, 5]],
1285+
[1, ["number", { value: bpm }], 0, 0, [0]],
1286+
[2, "divide", 0, 0, [0, 3, 4]],
1287+
[3, ["number", { value: 1 }], 0, 0, [2]],
1288+
[4, ["number", { value: beat }], 0, 0, [2]],
1289+
[5, "vspace", 0, 0, [0, null]]
1290+
];
1291+
activity.blocks.loadNewBlocks(newTempo);
1292+
return blockNumber;
1293+
} else if (name === _("volume")) {
1294+
let synth, vol;
1295+
switch (blockArgs.length) {
1296+
case 1:
1297+
synth = "piano";
1298+
vol = 50;
1299+
break;
1300+
case 2:
1301+
synth = blockArgs[1];
1302+
vol = 50;
1303+
break;
1304+
default:
1305+
synth = blockArgs[1];
1306+
vol = blockArgs[2];
1307+
break;
1308+
}
1309+
const newVolume = [
1310+
[0, "setsynthvolume", x, y, [null, 1, 2, null]],
1311+
[1, ["voicename", { value: synth }], 0, 0, [0]],
1312+
[2, ["number", { value: vol }], 0, 0, [0]]
1313+
];
1314+
activity.blocks.loadNewBlocks(newVolume);
1315+
return blockNumber;
1316+
} else if (name === _("instrument")) {
1317+
let instr = blockArgs.length > 1 ? blockArgs[1] : "piano";
1318+
const newInstrument = [
1319+
[0, "settimbre", x, y, [null, 1, null, 2]],
1320+
[1, ["voicename", { value: instr }], 0, 0, [0]],
1321+
[2, "hidden", 0, 0, [0, null]]
1322+
];
1323+
activity.blocks.loadNewBlocks(newInstrument);
12731324
return blockNumber;
12741325
} else {
12751326
const obj = activity.blocks.palettes.getProtoNameAndPalette(name);

0 commit comments

Comments
 (0)