Skip to content

Commit 2f2dc8d

Browse files
committed
fix: in get_selected_device_parameters only send available parameters
1 parent 3bf4543 commit 2f2dc8d

3 files changed

Lines changed: 18 additions & 13 deletions

File tree

src/main/java/io/github/fabb/wigai/bitwig/BitwigApiFacade.java

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,11 @@ public BitwigApiFacade(ControllerHost host, Logger logger) {
6060
// Initialize device control - use CursorTrack.createCursorDevice() instead of deprecated host.createCursorDevice()
6161
this.cursorTrack = host.createCursorTrack(0, 0);
6262
this.cursorDevice = cursorTrack.createCursorDevice();
63-
this.deviceParameterBank = cursorDevice.createCursorRemoteControlsPage(128);
63+
this.deviceParameterBank = cursorDevice.createCursorRemoteControlsPage(8);
6464

6565
// Initialize project parameter access via MasterTrack (project parameters)
6666
MasterTrack masterTrack = host.createMasterTrack(0);
67-
this.projectParameterBank = masterTrack.createCursorRemoteControlsPage(128);
67+
this.projectParameterBank = masterTrack.createCursorRemoteControlsPage(8);
6868

6969
// Initialize track bank for clip launching (support up to 128 tracks and 128 scenes for full functionality)
7070
this.trackBank = host.createTrackBank(128, 0, 128);
@@ -86,6 +86,7 @@ public BitwigApiFacade(ControllerHost host, Logger logger) {
8686
// Mark interest in all device parameter properties to enable value access
8787
for (int i = 0; i < deviceParameterBank.getParameterCount(); i++) {
8888
RemoteControl parameter = deviceParameterBank.getParameter(i);
89+
parameter.exists().markInterested();
8990
parameter.name().markInterested();
9091
parameter.value().markInterested();
9192
parameter.displayedValue().markInterested();
@@ -270,16 +271,20 @@ public List<ParameterInfo> getSelectedDeviceParameters() {
270271

271272
for (int i = 0; i < deviceParameterBank.getParameterCount(); i++) {
272273
RemoteControl parameter = deviceParameterBank.getParameter(i);
273-
String name = parameter.name().get();
274-
double value = parameter.value().get();
275-
String displayValue = parameter.displayedValue().get();
274+
boolean exists = parameter.exists().get();
276275

277-
// Handle null or empty names
278-
if (name != null && name.trim().isEmpty()) {
279-
name = null;
280-
}
276+
if (exists) {
277+
String name = parameter.name().get();
278+
double value = parameter.value().get();
279+
String displayValue = parameter.displayedValue().get();
281280

282-
parameters.add(new ParameterInfo(i, name, value, displayValue));
281+
// Handle null or empty names
282+
if (name != null && name.trim().isEmpty()) {
283+
name = null;
284+
}
285+
286+
parameters.add(new ParameterInfo(i, name, value, displayValue));
287+
}
283288
}
284289

285290
logger.info("BitwigApiFacade: Retrieved " + parameters.size() + " parameters");

src/main/java/io/github/fabb/wigai/mcp/tool/StatusTool.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ public Object execute() throws Exception {
5353
for (io.github.fabb.wigai.common.data.ParameterInfo param : projectParams) {
5454
Map<String, Object> paramMap = new LinkedHashMap<>();
5555
paramMap.put("index", param.index());
56-
paramMap.put("exists", true);
5756
paramMap.put("name", param.name());
5857
paramMap.put("value", param.value());
5958
paramMap.put("display_value", param.display_value());

src/test/java/io/github/fabb/wigai/bitwig/BitwigApiFacadeTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,11 @@ void setUp() {
8585
when(mockHost.createApplication()).thenReturn(mockApplication);
8686
when(mockHost.createCursorTrack(0, 0)).thenReturn(mockCursorTrack);
8787
when(mockCursorTrack.createCursorDevice()).thenReturn(mockCursorDevice);
88-
when(mockCursorDevice.createCursorRemoteControlsPage(128)).thenReturn(mockParameterBank);
88+
when(mockCursorDevice.createCursorRemoteControlsPage(8)).thenReturn(mockParameterBank);
8989

9090
// Setup new mocks for story 5.2
9191
when(mockHost.createMasterTrack(0)).thenReturn(mockMasterTrack);
92-
when(mockMasterTrack.createCursorRemoteControlsPage(128)).thenReturn(mockProjectParameterBank);
92+
when(mockMasterTrack.createCursorRemoteControlsPage(8)).thenReturn(mockProjectParameterBank);
9393

9494
// Setup TrackBank mocks (new for clip launching) - use smaller sizes for testing
9595
when(mockHost.createTrackBank(128, 0, 128)).thenReturn(mockTrackBank);
@@ -112,6 +112,7 @@ void setUp() {
112112
lenient().when(mockCursorDevice.exists()).thenReturn(mock(com.bitwig.extension.controller.api.BooleanValue.class));
113113
lenient().when(mockCursorDevice.name()).thenReturn(mock(com.bitwig.extension.controller.api.SettableStringValue.class));
114114
lenient().when(mockCursorDevice.isEnabled()).thenReturn(mock(com.bitwig.extension.controller.api.SettableBooleanValue.class));
115+
lenient().when(mockRemoteControl.exists()).thenReturn(mock(com.bitwig.extension.controller.api.BooleanValue.class));
115116
lenient().when(mockRemoteControl.name()).thenReturn(mock(com.bitwig.extension.controller.api.SettableStringValue.class));
116117
lenient().when(mockRemoteControl.value()).thenReturn(mock(com.bitwig.extension.controller.api.SettableRangedValue.class));
117118
lenient().when(mockRemoteControl.displayedValue()).thenReturn(mock(com.bitwig.extension.controller.api.SettableStringValue.class));

0 commit comments

Comments
 (0)