Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
JDK 11 java.desktop.jmod - Desktop Module
JDK 11 java.desktop.jmod is the JMOD file for JDK 11 Desktop module.
JDK 11 Desktop module compiled class files are stored in \fyicenter\jdk-11.0.1\jmods\java.desktop.jmod.
JDK 11 Desktop module compiled class files are also linked and stored in the \fyicenter\jdk-11.0.1\lib\modules JImage file.
JDK 11 Desktop module source code files are stored in \fyicenter\jdk-11.0.1\lib\src.zip\java.desktop.
You can click and view the content of each source code file in the list below.
✍: FYIcenter
⏎ com/sun/media/sound/SoftFilter.java
/* * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package com.sun.media.sound; /** * Infinite impulse response (IIR) filter class. * * The filters where implemented and adapted using algorithms from musicdsp.org * archive: 1-RC and C filter, Simple 2-pole LP LP and HP filter, biquad, * tweaked butterworth RBJ Audio-EQ-Cookbook, EQ filter kookbook * * @author Karl Helgason */ public final class SoftFilter { public static final int FILTERTYPE_LP6 = 0x00; public static final int FILTERTYPE_LP12 = 0x01; public static final int FILTERTYPE_HP12 = 0x11; public static final int FILTERTYPE_BP12 = 0x21; public static final int FILTERTYPE_NP12 = 0x31; public static final int FILTERTYPE_LP24 = 0x03; public static final int FILTERTYPE_HP24 = 0x13; // // 0x0 = 1st-order, 6 dB/oct // 0x1 = 2nd-order, 12 dB/oct // 0x2 = 3rd-order, 18 dB/oct // 0x3 = 4th-order, 24 db/oct // // 0x00 = LP, Low Pass Filter // 0x10 = HP, High Pass Filter // 0x20 = BP, Band Pass Filter // 0x30 = NP, Notch or Band Elimination Filter // private int filtertype = FILTERTYPE_LP6; private final float samplerate; private float x1; private float x2; private float y1; private float y2; private float xx1; private float xx2; private float yy1; private float yy2; private float a0; private float a1; private float a2; private float b1; private float b2; private float q; private float gain = 1; private float wet = 0; private float last_wet = 0; private float last_a0; private float last_a1; private float last_a2; private float last_b1; private float last_b2; private float last_q; private float last_gain; private boolean last_set = false; private double cutoff = 44100; private double resonancedB = 0; private boolean dirty = true; public SoftFilter(float samplerate) { this.samplerate = samplerate; dirty = true; } public void setFrequency(double cent) { if (cutoff == cent) return; cutoff = cent; dirty = true; } public void setResonance(double db) { if (resonancedB == db) return; resonancedB = db; dirty = true; } public void reset() { dirty = true; last_set = false; x1 = 0; x2 = 0; y1 = 0; y2 = 0; xx1 = 0; xx2 = 0; yy1 = 0; yy2 = 0; wet = 0.0f; gain = 1.0f; a0 = 0; a1 = 0; a2 = 0; b1 = 0; b2 = 0; } public void setFilterType(int filtertype) { this.filtertype = filtertype; } public void processAudio(SoftAudioBuffer sbuffer) { if (filtertype == FILTERTYPE_LP6) filter1(sbuffer); if (filtertype == FILTERTYPE_LP12) filter2(sbuffer); if (filtertype == FILTERTYPE_HP12) filter2(sbuffer); if (filtertype == FILTERTYPE_BP12) filter2(sbuffer); if (filtertype == FILTERTYPE_NP12) filter2(sbuffer); if (filtertype == FILTERTYPE_LP24) filter4(sbuffer); if (filtertype == FILTERTYPE_HP24) filter4(sbuffer); } public void filter4(SoftAudioBuffer sbuffer) { float[] buffer = sbuffer.array(); if (dirty) { filter2calc(); dirty = false; } if (!last_set) { last_a0 = a0; last_a1 = a1; last_a2 = a2; last_b1 = b1; last_b2 = b2; last_gain = gain; last_wet = wet; last_set = true; } if (wet > 0 || last_wet > 0) { int len = buffer.length; float a0 = this.last_a0; float a1 = this.last_a1; float a2 = this.last_a2; float b1 = this.last_b1; float b2 = this.last_b2; float gain = this.last_gain; float wet = this.last_wet; float a0_delta = (this.a0 - this.last_a0) / len; float a1_delta = (this.a1 - this.last_a1) / len; float a2_delta = (this.a2 - this.last_a2) / len; float b1_delta = (this.b1 - this.last_b1) / len; float b2_delta = (this.b2 - this.last_b2) / len; float gain_delta = (this.gain - this.last_gain) / len; float wet_delta = (this.wet - this.last_wet) / len; float x1 = this.x1; float x2 = this.x2; float y1 = this.y1; float y2 = this.y2; float xx1 = this.xx1; float xx2 = this.xx2; float yy1 = this.yy1; float yy2 = this.yy2; if (wet_delta != 0) { for (int i = 0; i < len; i++) { a0 += a0_delta; a1 += a1_delta; a2 += a2_delta; b1 += b1_delta; b2 += b2_delta; gain += gain_delta; wet += wet_delta; float x = buffer[i]; float y = (a0*x + a1*x1 + a2*x2 - b1*y1 - b2*y2); float xx = (y * gain) * wet + (x) * (1 - wet); x2 = x1; x1 = x; y2 = y1; y1 = y; float yy = (a0*xx + a1*xx1 + a2*xx2 - b1*yy1 - b2*yy2); buffer[i] = (yy * gain) * wet + (xx) * (1 - wet); xx2 = xx1; xx1 = xx; yy2 = yy1; yy1 = yy; } } else if (a0_delta == 0 && a1_delta == 0 && a2_delta == 0 && b1_delta == 0 && b2_delta == 0) { for (int i = 0; i < len; i++) { float x = buffer[i]; float y = (a0*x + a1*x1 + a2*x2 - b1*y1 - b2*y2); float xx = (y * gain) * wet + (x) * (1 - wet); x2 = x1; x1 = x; y2 = y1; y1 = y; float yy = (a0*xx + a1*xx1 + a2*xx2 - b1*yy1 - b2*yy2); buffer[i] = (yy * gain) * wet + (xx) * (1 - wet); xx2 = xx1; xx1 = xx; yy2 = yy1; yy1 = yy; } } else { for (int i = 0; i < len; i++) { a0 += a0_delta; a1 += a1_delta; a2 += a2_delta; b1 += b1_delta; b2 += b2_delta; gain += gain_delta; float x = buffer[i]; float y = (a0*x + a1*x1 + a2*x2 - b1*y1 - b2*y2); float xx = (y * gain) * wet + (x) * (1 - wet); x2 = x1; x1 = x; y2 = y1; y1 = y; float yy = (a0*xx + a1*xx1 + a2*xx2 - b1*yy1 - b2*yy2); buffer[i] = (yy * gain) * wet + (xx) * (1 - wet); xx2 = xx1; xx1 = xx; yy2 = yy1; yy1 = yy; } } if (Math.abs(x1) < 1.0E-8) x1 = 0; if (Math.abs(x2) < 1.0E-8) x2 = 0; if (Math.abs(y1) < 1.0E-8) y1 = 0; if (Math.abs(y2) < 1.0E-8) y2 = 0; this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2; this.xx1 = xx1; this.xx2 = xx2; this.yy1 = yy1; this.yy2 = yy2; } this.last_a0 = this.a0; this.last_a1 = this.a1; this.last_a2 = this.a2; this.last_b1 = this.b1; this.last_b2 = this.b2; this.last_gain = this.gain; this.last_wet = this.wet; } private double sinh(double x) { return (Math.exp(x) - Math.exp(-x)) * 0.5; } public void filter2calc() { double resonancedB = this.resonancedB; if (resonancedB < 0) resonancedB = 0; // Negative dB are illegal. if (resonancedB > 30) resonancedB = 30; // At least 22.5 dB is needed. if (filtertype == FILTERTYPE_LP24 || filtertype == FILTERTYPE_HP24) resonancedB *= 0.6; if (filtertype == FILTERTYPE_BP12) { wet = 1; double r = (cutoff / samplerate); if (r > 0.45) r = 0.45; double bandwidth = Math.PI * Math.pow(10.0, -(resonancedB / 20)); double omega = 2 * Math.PI * r; double cs = Math.cos(omega); double sn = Math.sin(omega); double alpha = sn * sinh((Math.log(2)*bandwidth*omega) / (sn * 2)); double b0 = alpha; double b1 = 0; double b2 = -alpha; double a0 = 1 + alpha; double a1 = -2 * cs; double a2 = 1 - alpha; double cf = 1.0 / a0; this.b1 = (float) (a1 * cf); this.b2 = (float) (a2 * cf); this.a0 = (float) (b0 * cf); this.a1 = (float) (b1 * cf); this.a2 = (float) (b2 * cf); } if (filtertype == FILTERTYPE_NP12) { wet = 1; double r = (cutoff / samplerate); if (r > 0.45) r = 0.45; double bandwidth = Math.PI * Math.pow(10.0, -(resonancedB / 20)); double omega = 2 * Math.PI * r; double cs = Math.cos(omega); double sn = Math.sin(omega); double alpha = sn * sinh((Math.log(2)*bandwidth*omega) / (sn*2)); double b0 = 1; double b1 = -2 * cs; double b2 = 1; double a0 = 1 + alpha; double a1 = -2 * cs; double a2 = 1 - alpha; double cf = 1.0 / a0; this.b1 = (float)(a1 * cf); this.b2 = (float)(a2 * cf); this.a0 = (float)(b0 * cf); this.a1 = (float)(b1 * cf); this.a2 = (float)(b2 * cf); } if (filtertype == FILTERTYPE_LP12 || filtertype == FILTERTYPE_LP24) { double r = (cutoff / samplerate); if (r > 0.45) { if (wet == 0) { if (resonancedB < 0.00001) wet = 0.0f; else wet = 1.0f; } r = 0.45; } else wet = 1.0f; double c = 1.0 / (Math.tan(Math.PI * r)); double csq = c * c; double resonance = Math.pow(10.0, -(resonancedB / 20)); double q = Math.sqrt(2.0f) * resonance; double a0 = 1.0 / (1.0 + (q * c) + (csq)); double a1 = 2.0 * a0; double a2 = a0; double b1 = (2.0 * a0) * (1.0 - csq); double b2 = a0 * (1.0 - (q * c) + csq); this.a0 = (float)a0; this.a1 = (float)a1; this.a2 = (float)a2; this.b1 = (float)b1; this.b2 = (float)b2; } if (filtertype == FILTERTYPE_HP12 || filtertype == FILTERTYPE_HP24) { double r = (cutoff / samplerate); if (r > 0.45) r = 0.45; if (r < 0.0001) r = 0.0001; wet = 1.0f; double c = (Math.tan(Math.PI * (r))); double csq = c * c; double resonance = Math.pow(10.0, -(resonancedB / 20)); double q = Math.sqrt(2.0f) * resonance; double a0 = 1.0 / (1.0 + (q * c) + (csq)); double a1 = -2.0 * a0; double a2 = a0; double b1 = (2.0 * a0) * (csq - 1.0); double b2 = a0 * (1.0 - (q * c) + csq); this.a0 = (float)a0; this.a1 = (float)a1; this.a2 = (float)a2; this.b1 = (float)b1; this.b2 = (float)b2; } } public void filter2(SoftAudioBuffer sbuffer) { float[] buffer = sbuffer.array(); if (dirty) { filter2calc(); dirty = false; } if (!last_set) { last_a0 = a0; last_a1 = a1; last_a2 = a2; last_b1 = b1; last_b2 = b2; last_q = q; last_gain = gain; last_wet = wet; last_set = true; } if (wet > 0 || last_wet > 0) { int len = buffer.length; float a0 = this.last_a0; float a1 = this.last_a1; float a2 = this.last_a2; float b1 = this.last_b1; float b2 = this.last_b2; float gain = this.last_gain; float wet = this.last_wet; float a0_delta = (this.a0 - this.last_a0) / len; float a1_delta = (this.a1 - this.last_a1) / len; float a2_delta = (this.a2 - this.last_a2) / len; float b1_delta = (this.b1 - this.last_b1) / len; float b2_delta = (this.b2 - this.last_b2) / len; float gain_delta = (this.gain - this.last_gain) / len; float wet_delta = (this.wet - this.last_wet) / len; float x1 = this.x1; float x2 = this.x2; float y1 = this.y1; float y2 = this.y2; if (wet_delta != 0) { for (int i = 0; i < len; i++) { a0 += a0_delta; a1 += a1_delta; a2 += a2_delta; b1 += b1_delta; b2 += b2_delta; gain += gain_delta; wet += wet_delta; float x = buffer[i]; float y = (a0*x + a1*x1 + a2*x2 - b1*y1 - b2*y2); buffer[i] = (y * gain) * wet + (x) * (1 - wet); x2 = x1; x1 = x; y2 = y1; y1 = y; } } else if (a0_delta == 0 && a1_delta == 0 && a2_delta == 0 && b1_delta == 0 && b2_delta == 0) { for (int i = 0; i < len; i++) { float x = buffer[i]; float y = (a0*x + a1*x1 + a2*x2 - b1*y1 - b2*y2); buffer[i] = y * gain; x2 = x1; x1 = x; y2 = y1; y1 = y; } } else { for (int i = 0; i < len; i++) { a0 += a0_delta; a1 += a1_delta; a2 += a2_delta; b1 += b1_delta; b2 += b2_delta; gain += gain_delta; float x = buffer[i]; float y = (a0*x + a1*x1 + a2*x2 - b1*y1 - b2*y2); buffer[i] = y * gain; x2 = x1; x1 = x; y2 = y1; y1 = y; } } if (Math.abs(x1) < 1.0E-8) x1 = 0; if (Math.abs(x2) < 1.0E-8) x2 = 0; if (Math.abs(y1) < 1.0E-8) y1 = 0; if (Math.abs(y2) < 1.0E-8) y2 = 0; this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2; } this.last_a0 = this.a0; this.last_a1 = this.a1; this.last_a2 = this.a2; this.last_b1 = this.b1; this.last_b2 = this.b2; this.last_q = this.q; this.last_gain = this.gain; this.last_wet = this.wet; } public void filter1calc() { if (cutoff < 120) cutoff = 120; double c = (7.0 / 6.0) * Math.PI * 2 * cutoff / samplerate; if (c > 1) c = 1; a0 = (float)(Math.sqrt(1 - Math.cos(c)) * Math.sqrt(0.5 * Math.PI)); if (resonancedB < 0) resonancedB = 0; if (resonancedB > 20) resonancedB = 20; q = (float)(Math.sqrt(0.5) * Math.pow(10.0, -(resonancedB / 20))); gain = (float)Math.pow(10, -((resonancedB)) / 40.0); if (wet == 0.0f) if (resonancedB > 0.00001 || c < 0.9999999) wet = 1.0f; } public void filter1(SoftAudioBuffer sbuffer) { if (dirty) { filter1calc(); dirty = false; } if (!last_set) { last_a0 = a0; last_q = q; last_gain = gain; last_wet = wet; last_set = true; } if (wet > 0 || last_wet > 0) { float[] buffer = sbuffer.array(); int len = buffer.length; float a0 = this.last_a0; float q = this.last_q; float gain = this.last_gain; float wet = this.last_wet; float a0_delta = (this.a0 - this.last_a0) / len; float q_delta = (this.q - this.last_q) / len; float gain_delta = (this.gain - this.last_gain) / len; float wet_delta = (this.wet - this.last_wet) / len; float y2 = this.y2; float y1 = this.y1; if (wet_delta != 0) { for (int i = 0; i < len; i++) { a0 += a0_delta; q += q_delta; gain += gain_delta; wet += wet_delta; float ga0 = (1 - q * a0); y1 = ga0 * y1 + (a0) * (buffer[i] - y2); y2 = ga0 * y2 + (a0) * y1; buffer[i] = y2 * gain * wet + buffer[i] * (1 - wet); } } else if (a0_delta == 0 && q_delta == 0) { float ga0 = (1 - q * a0); for (int i = 0; i < len; i++) { y1 = ga0 * y1 + (a0) * (buffer[i] - y2); y2 = ga0 * y2 + (a0) * y1; buffer[i] = y2 * gain; } } else { for (int i = 0; i < len; i++) { a0 += a0_delta; q += q_delta; gain += gain_delta; float ga0 = (1 - q * a0); y1 = ga0 * y1 + (a0) * (buffer[i] - y2); y2 = ga0 * y2 + (a0) * y1; buffer[i] = y2 * gain; } } if (Math.abs(y2) < 1.0E-8) y2 = 0; if (Math.abs(y1) < 1.0E-8) y1 = 0; this.y2 = y2; this.y1 = y1; } this.last_a0 = this.a0; this.last_q = this.q; this.last_gain = this.gain; this.last_wet = this.wet; } }
⏎ com/sun/media/sound/SoftFilter.java
Or download all of them as a single archive file:
File name: java.desktop-11.0.1-src.zip File size: 7974380 bytes Release date: 2018-11-04 Download
⇒ JDK 11 java.instrument.jmod - Instrument Module
2022-08-06, 159995👍, 5💬
Popular Posts:
The JGoodies Forms framework helps you lay out and implement elegant Swing panels consistently and q...
Jackson is "the Java JSON library" or "the best JSON parser for Java". Or simply as "JSON for Java"....
JDK 11 jdk.localedata.jmod is the JMOD file for JDK 11 Localedata module. JDK 11 Locale Data module ...
JDK 11 jdk.dynalink.jmod is the JMOD file for JDK 11 Dynamic Linking module. JDK 11 Dynamic Linking ...
JDK 11 jdk.jlink.jmod is the JMOD file for JDK 11 JLink tool, which can be invoked by the "jlink" co...