Skip to content

Commit 7ec2113

Browse files
committed
VolumeController のイベントのチャンネル番号が不正になる問題を修正。
VolumeController チャンネル番号 = (MIDI ポート番号 * 16) + MIDI チャンネル番号
1 parent 726f27a commit 7ec2113

4 files changed

Lines changed: 21 additions & 4 deletions

File tree

dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/core/ControlChangeMessage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public int getControlValue() {
5252
return mControlValue;
5353
}
5454

55-
public class Builder extends ChannelVoiceMessage.Builder {
55+
public static class Builder extends ChannelVoiceMessage.Builder {
5656

5757
/**
5858
* コントロール番号.

dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/core/MidiMessage.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@
77
*/
88
public abstract class MidiMessage {
99

10+
/**
11+
* チャンネルの最大個数.
12+
*/
13+
public static final int CHANNEL_MAX_COUNT = 16;
14+
1015
public abstract void append(ByteBuffer buffer);
1116

1217
}

dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/profiles/MidiSoundModuleProfile.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import org.deviceconnect.android.deviceplugin.midi.MidiMessageSender;
66
import org.deviceconnect.android.deviceplugin.midi.NoteNameTable;
7+
import org.deviceconnect.android.deviceplugin.midi.core.MidiMessage;
78
import org.deviceconnect.android.deviceplugin.midi.core.NoteOffMessage;
89
import org.deviceconnect.android.deviceplugin.midi.core.NoteOnMessage;
910
import org.deviceconnect.android.message.MessageUtils;
@@ -92,14 +93,14 @@ private int parseMidiPort(final Integer channelParam) {
9293
if (channelParam == null) {
9394
return 0;
9495
}
95-
return channelParam / 16;
96+
return channelParam / MidiMessage.CHANNEL_MAX_COUNT;
9697
}
9798

9899
private int parseMidiChannel(final Integer channelParam) {
99100
if (channelParam == null) {
100101
return 0;
101102
}
102-
return channelParam % 16;
103+
return channelParam % MidiMessage.CHANNEL_MAX_COUNT;
103104
}
104105

105106
@Override

dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/profiles/MidiVolumeControllerProfile.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,14 @@
1111
import org.deviceconnect.android.profile.api.PutApi;
1212

1313
import java.util.List;
14+
import java.util.logging.Logger;
15+
16+
import static org.deviceconnect.android.deviceplugin.midi.BuildConfig.DEBUG;
1417

1518
public class MidiVolumeControllerProfile extends BaseMidiOutputProfile {
1619

20+
private final Logger mLogger = Logger.getLogger("midi-plugin");
21+
1722
public MidiVolumeControllerProfile() {
1823

1924
// GET /gotapi/volumeController/onVolumeChange
@@ -65,7 +70,13 @@ public String getProfileName() {
6570
@Override
6671
void convertMessageToEvent(final int port, final @NonNull MidiMessage message, final long timestamp, final @NonNull List<MessageEvent> results) {
6772
if (message instanceof ControlChangeMessage) {
68-
final int channel = port * ((ControlChangeMessage) message).getChannelNumber();
73+
if (DEBUG) {
74+
mLogger.info("convertMessageToEvent: ControlChange:"
75+
+ "channel=" + ((ControlChangeMessage) message).getChannelNumber()
76+
+ ", value=" + ((ControlChangeMessage) message).getControlValue());
77+
}
78+
79+
final int channel = ((ControlChangeMessage) message).getChannelNumber() + port * MidiMessage.CHANNEL_MAX_COUNT;
6980
final int value = ((ControlChangeMessage) message).getControlValue();
7081
final double normalized = value / 127.0d;
7182

0 commit comments

Comments
 (0)