public static void main(String[] args) throws Exception { ModelSource src = new ModelSource( ModelSource.SOURCE_NOTEON_KEYNUMBER, ModelStandardTransform.DIRECTION_MAX2MIN, ModelStandardTransform.POLARITY_BIPOLAR, ModelStandardTransform.TRANSFORM_CONCAVE); if (src.getIdentifier() != ModelSource.SOURCE_NOTEON_KEYNUMBER) throw new RuntimeException( "src.getIdentifier() doesn't return ModelSource.SOURCE_NOTEON_KEYNUMBER!"); if (!(src.getTransform() instanceof ModelStandardTransform)) throw new RuntimeException( "src.getTransform() doesn't return object which is instance of ModelStandardTransform!"); ModelStandardTransform trans = (ModelStandardTransform) src.getTransform(); if (trans.getDirection() != ModelStandardTransform.DIRECTION_MAX2MIN) throw new RuntimeException( "trans.getDirection() doesn't return ModelStandardTransform.DIRECTION_MAX2MIN!"); if (trans.getPolarity() != ModelStandardTransform.POLARITY_BIPOLAR) throw new RuntimeException( "trans.getPolarity() doesn't return ModelStandardTransform.POLARITY_BIPOLAR!"); if (trans.getTransform() != ModelStandardTransform.TRANSFORM_CONCAVE) throw new RuntimeException( "trans.getTransform() doesn't return ModelStandardTransform.TRANSFORM_CONCAVE!"); }
protected void noteOn(int noteNumber, int velocity) { sustain = false; sostenuto = false; portamento = false; soundoff = false; on = true; active = true; started = true; // volume = velocity; noteOn_noteNumber = noteNumber; noteOn_velocity = velocity; lastMuteValue = 0; lastSoloMuteValue = 0; setNote(noteNumber); if (performer.forcedKeynumber) co_noteon_keynumber[0] = 0; else co_noteon_keynumber[0] = tunedKey * (1f / 128f); if (performer.forcedVelocity) co_noteon_velocity[0] = 0; else co_noteon_velocity[0] = velocity * (1f / 128f); co_mixer_active[0] = 0; co_mixer_gain[0] = 0; co_mixer_pan[0] = 0; co_mixer_balance[0] = 0; co_mixer_reverb[0] = 0; co_mixer_chorus[0] = 0; co_osc_pitch[0] = 0; co_filter_freq[0] = 0; co_filter_q[0] = 0; co_filter_type[0] = 0; co_noteon_on[0] = 1; eg.reset(); lfo.reset(); filter_left.reset(); filter_right.reset(); objects.put("master", synthesizer.getMainMixer().co_master); objects.put("eg", eg); objects.put("lfo", lfo); objects.put("noteon", co_noteon); objects.put("osc", co_osc); objects.put("mixer", co_mixer); objects.put("filter", co_filter); connections = performer.connections; if (connections_last == null || connections_last.length < connections.length) { connections_last = new double[connections.length]; } if (connections_src == null || connections_src.length < connections.length) { connections_src = new double[connections.length][][]; connections_src_kc = new int[connections.length][]; } if (connections_dst == null || connections_dst.length < connections.length) { connections_dst = new double[connections.length][]; } for (int i = 0; i < connections.length; i++) { ModelConnectionBlock conn = connections[i]; connections_last[i] = 0; if (conn.getSources() != null) { ModelSource[] srcs = conn.getSources(); if (connections_src[i] == null || connections_src[i].length < srcs.length) { connections_src[i] = new double[srcs.length][]; connections_src_kc[i] = new int[srcs.length]; } double[][] src = connections_src[i]; int[] src_kc = connections_src_kc[i]; connections_src[i] = src; for (int j = 0; j < srcs.length; j++) { src_kc[j] = getValueKC(srcs[j].getIdentifier()); src[j] = getValue(srcs[j].getIdentifier()); } } if (conn.getDestination() != null) connections_dst[i] = getValue(conn.getDestination().getIdentifier()); else connections_dst[i] = null; } for (int i = 0; i < connections.length; i++) processConnection(i); if (extendedConnectionBlocks != null) { for (ModelConnectionBlock connection : extendedConnectionBlocks) { double value = 0; if (softchannel.keybasedcontroller_active == null) { for (ModelSource src : connection.getSources()) { double x = getValue(src.getIdentifier())[0]; ModelTransform t = src.getTransform(); if (t == null) value += x; else value += t.transform(x); } } else { for (ModelSource src : connection.getSources()) { double x = getValue(src.getIdentifier())[0]; x = processKeyBasedController(x, getValueKC(src.getIdentifier())); ModelTransform t = src.getTransform(); if (t == null) value += x; else value += t.transform(x); } } ModelDestination dest = connection.getDestination(); ModelTransform t = dest.getTransform(); if (t != null) value = t.transform(value); getValue(dest.getIdentifier())[0] += value; } } eg.init(synthesizer); lfo.init(synthesizer); }
private double transformValue(double value, ModelSource src) { if (src.getTransform() != null) return src.getTransform().transform(value); else return value; }