Skip to content

Commit 1d5cd45

Browse files
committed
A better way to pick the parameter
1 parent 78cd775 commit 1d5cd45

File tree

1 file changed

+44
-53
lines changed

1 file changed

+44
-53
lines changed

bulkadd.js

Lines changed: 44 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,59 @@
11
studio.menu.addMenuItem({
2-
name: "Bulk Add",
3-
execute: bulkadd,
2+
name: "Bulk Add",
3+
execute: bulkadd,
44
})
55

66
function bulkadd() {
7-
var track = studio.window.editorCurrent();
8-
var files = studio.window.browserSelection();
9-
if (track == null || files.length < 1) {
10-
error("You must select one or more assets and a track.");
11-
return;
12-
}
13-
14-
if (!track.isOfType('GroupTrack')) {
15-
error("You must select a track in the editor pane.");
16-
return;
17-
}
18-
19-
for (var i = 0; i < files.length; i++) {
20-
if (!files[i].isOfType('AudioFile')) {
21-
error("You must select only audio files in the browser");
22-
return;
23-
}
24-
}
25-
26-
// This API is Very Bad and does not provide a way to get parameter names
27-
// The preset ID is the same for all sixteenth_note parameters so we just search for that
28-
var presetId = '{c2b359ee-617f-49f2-a8bd-c627a9f4902b}';
29-
var possibleParams = studio.window.editorCurrent().event.parameters;
30-
var parameter;
31-
32-
for (var i = 0; i < possibleParams.length; i++) {
33-
if (possibleParams[i].preset.id == presetId) {
34-
parameter = possibleParams[i];
35-
break;
36-
}
37-
}
38-
39-
if (parameter == undefined) {
40-
error("Could not find parameter with preset ID " + presetId);
41-
return;
42-
}
43-
44-
for (var i = 0; i < files.length; i++) {
45-
var sound = track.addSound(parameter, 'SingleSound', i + 1, 1);
46-
sound.audioFile = files[i];
47-
}
7+
var track = studio.window.editorCurrent();
8+
var parameter = track.event.uiLastParameterSelection;
9+
var files = studio.window.browserSelection();
10+
11+
if (track == null || files.length < 1) {
12+
error("You must select one or more assets and a track.");
13+
return;
14+
}
15+
16+
if (!track.isOfType('GroupTrack')) {
17+
error("You must select a track in the editor pane.");
18+
return;
19+
}
20+
21+
for (var i = 0; i < files.length; i++) {
22+
if (!files[i].isOfType('AudioFile')) {
23+
error("You must select only audio files in the browser");
24+
return;
25+
}
26+
}
27+
28+
for (var i = 0; i < files.length; i++) {
29+
var sound = track.addSound(parameter, 'SingleSound', i + 1, 1);
30+
sound.audioFile = files[i];
31+
}
4832
}
4933

5034
function error(reason) {
51-
studio.ui.showModalDialog({
35+
studio.ui.showModalDialog({
5236
windowTitle: "Error",
5337
widgetType: studio.ui.widgetType.Layout,
54-
layout: studio.ui.layoutType.VBoxLayout,
55-
items: [
56-
{ widgetType: studio.ui.widgetType.Label, text: reason },
57-
{
38+
layout: studio.ui.layoutType.VBoxLayout,
39+
items: [
40+
{widgetType: studio.ui.widgetType.Label, text: reason},
41+
{
5842
widgetType: studio.ui.widgetType.Layout,
5943
layout: studio.ui.layoutType.HBoxLayout,
60-
contentsMargins: { left: 0, top: 12, right: 0, bottom: 0 },
44+
contentsMargins: {left: 0, top: 12, right: 0, bottom: 0},
6145
items: [
62-
{ widgetType: studio.ui.widgetType.Spacer, sizePolicy: { horizontalPolicy: studio.ui.sizePolicy.MinimumExpanding } },
63-
{ widgetType: studio.ui.widgetType.PushButton, text: "OK", onClicked: function() { this.closeDialog(); } },
46+
{
47+
widgetType: studio.ui.widgetType.Spacer,
48+
sizePolicy: {horizontalPolicy: studio.ui.sizePolicy.MinimumExpanding}
49+
},
50+
{
51+
widgetType: studio.ui.widgetType.PushButton, text: "OK", onClicked: function () {
52+
this.closeDialog();
53+
}
54+
},
6455
],
6556
},
66-
]
67-
})
57+
]
58+
})
6859
}

0 commit comments

Comments
 (0)