Microphone.java
package org.hammer.audio.acquisition;
import org.hammer.audio.geometry.Vector2;
/** Stable microphone metadata independent of a concrete audio API or research plugin. */
public record Microphone(String id, Vector2 positionMeters, int channel) {
/** Create metadata for one microphone/channel in a synchronized multichannel stream. */
public Microphone {
if (id == null || id.isBlank()) {
throw new IllegalArgumentException("id must not be blank");
}
if (positionMeters == null) {
throw new IllegalArgumentException("positionMeters must not be null");
}
if (channel < 0) {
throw new IllegalArgumentException("channel must be >= 0");
}
}
}