public VisualizerController(MediaPlayer mediaPlayer) { try { if (mediaPlayer == null) { return; } audioSessionId = mediaPlayer.getAudioSessionId(); visualizer = new Visualizer(audioSessionId); } catch (Throwable x) { Log.w(TAG, "Failed to create visualizer.", x); } if (visualizer != null) { int[] captureSizeRange = Visualizer.getCaptureSizeRange(); int captureSize = Math.max(PREFERRED_CAPTURE_SIZE, captureSizeRange[0]); captureSize = Math.min(captureSize, captureSizeRange[1]); visualizer.setCaptureSize(captureSize); } }
public Visualizer getVisualizer() { if (released) { released = false; try { visualizer = new Visualizer(audioSessionId); } catch (Throwable x) { visualizer = null; Log.w(TAG, "Failed to create visualizer.", x); } } return visualizer; }
@Override public void onFftDataCapture(Visualizer visualizer, byte[] fft, int samplingRate) { int dataSize = fft.length / 2 - 1; for (int i = 0; i < SOUND_INDEX_COEFFICIENTS.length; i++) { int index = (int) (SOUND_INDEX_COEFFICIENTS[i] * dataSize); byte real = fft[2 * index]; byte imag = fft[2 * index + 1]; long magnitudeSquare = real * real + imag * imag; magnitudeSquare = (long) Math.sqrt(magnitudeSquare); float dbs = magnitudeToDb(magnitudeSquare); float dbPercentage = dbs / MAX_DB_VALUE; if (dbPercentage > 1.0f) { dbPercentage = 1.0f; } mDbsPercentagesConcrete[i] = mDbsPercentagesConcrete[i] * FILTRATION_ALPHA + dbPercentage * FILTRATION_BETA; } changeShadow(mDbsPercentagesConcrete[0], mDbsPercentagesConcrete[1], mDbsPercentagesConcrete[2]); }
@Override public void onFftDataCapture(Visualizer visualizer, byte[] fft, int samplingRate) { for (int i = 0; i < 32; i++) { mValueAnimators[i].cancel(); rfk = fft[i * 2 + 2]; ifk = fft[i * 2 + 3]; magnitude = rfk * rfk + ifk * ifk; dbValue = magnitude > 0 ? (int) (10 * Math.log10(magnitude)) : 0; mValueAnimators[i].setFloatValues(mFFTPoints[i * 4 + 1], mFFTPoints[3] - (dbValue * 16f)); //mValueAnimators[i] // .setInterpolator(new AccelerateDecelerateInterpolator()); mValueAnimators[i].start(); } }
private void init() { mBytes = null; mFFTBytes = null; //mFlashPaint.setColor(Color.argb(122, 255, 255, 255)); mFadePaint.setColor(Color.argb(100, 255, 255, 255)); // Adjust alpha to mRenderers = new HashSet<>(); mVisualizer = new Visualizer(0); Log.w(Constants.TAG, "SetCapture Size (FFT MINRANGE):" + mVisualizer.getCaptureSize()); recordingSampler = new RecordingSampler(); // transPainter = new Paint(); // transPainter.setXfermode(new PorterDuffXfermode(Mode.CLEAR)); }
@Override protected void onDestroy() { super.onDestroy(); // disable loudness if (mLoudness != null) { mLoudness.setEnabled(false); mLoudness.release(); mLoudness = null; } // disable visualizer if (mVisualizer != null) { mVisualizer.setEnabled(false); mVisualizer.setMeasurementMode(Visualizer.MEASUREMENT_MODE_NONE); mVisualizer.release(); } // release mediaplayer if (mMediaPlayer != null) { mMediaPlayer.release(); } }
/** * Starts capturing and retrieving audio data, forwarding it to the provided * {@link RawDataListener}, or does nothing if recording is already started. * Returns immediately once retrieval is set up. * * @throws IllegalStateException if audio capture couldn't be enabled */ @Override public void start(RawDataListener out) { if (audioSource.getEnabled()) { return; } int largestSize = getOutputSize(); Log.d(TAG, "Using captureSize " + largestSize); if (audioSource.setCaptureSize(largestSize) != Visualizer.SUCCESS) { throw new IllegalStateException("Bad capture size: " + largestSize); } int maxMilliHz = getDataRefreshRateHz(); Log.d(TAG, "Starting viz with hz=" + maxMilliHz); audioSource.setDataCaptureListener(new PassthruListener(out), maxMilliHz * 1000, false, true); audioSource.setEnabled(true); }
/** * Returns the largest available data width for system audio capture, suitable for passing to * {@link Visualizer#setCaptureSize(int)}. */ public int getOutputSize() { int[] range = Visualizer.getCaptureSizeRange(); if (range.length != 2) { throw new IllegalStateException( "Expected 2 elements in capture size range, got " + range.length); } if (range[0] > range[1]) { Log.w(TAG, "Capture size range is backwards: [" + range[0] + ", " + range[1] + "]"); int tmp = range[0]; range[0] = range[1]; range[1] = tmp; } Log.v(TAG, "Capture size range: [" + range[0] + ", " + range[1] + "]"); return findLargestBaseTwoInInclusiveRange(range[0], range[1]); }
public VisualizerWrapper(@NonNull Context context, int audioSessionId, @NonNull final OnFftDataCaptureListener onFftDataCaptureListener) { mediaPlayer = MediaPlayer.create(context, R.raw.av_workaround_1min); visualizer = new Visualizer(audioSessionId); visualizer.setEnabled(false); visualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]); captureRate = Visualizer.getMaxCaptureRate(); captureListener = new Visualizer.OnDataCaptureListener() { @Override public void onWaveFormDataCapture(Visualizer visualizer, byte[] waveform, int samplingRate) { } @Override public void onFftDataCapture(Visualizer visualizer, byte[] fft, int samplingRate) { boolean allZero = Utils.allElementsAreZero(fft); if (lastZeroArrayTimestamp == 0) { if (allZero) { lastZeroArrayTimestamp = System.currentTimeMillis(); } } else { if (!allZero) { lastZeroArrayTimestamp = 0; } else if (System.currentTimeMillis() - lastZeroArrayTimestamp >= WAIT_UNTIL_HACK) { setEnabled(true); lastZeroArrayTimestamp = 0; } } onFftDataCaptureListener.onFftDataCapture(fft); } }; visualizer.setEnabled(true); }
@Override public void run() { try { mVisualizer = new Visualizer(0); mVisualizer.setEnabled(false); mVisualizer.setCaptureSize(66); mVisualizer.setDataCaptureListener(mVisualizerListener, Visualizer.getMaxCaptureRate(), false, true); mVisualizer.setEnabled(true); } catch (Throwable e){ if (areWeInsideSystemUI){ LLog.e(e); } else e.printStackTrace(); } }
public void linkPlayer(int sessionId){ Timber.d("linkPlayer, session id: %d", sessionId); visualizer = new Visualizer(sessionId); if(!visualizer.getEnabled()){ visualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]); } visualizer.setDataCaptureListener(dataCaptureListener, Visualizer.getMaxCaptureRate() / 2, true, true); visualizer.setEnabled(true); }
public VisualizerController(Context context, MediaPlayer mediaPlayer) { try { audioSessionId = mediaPlayer.getAudioSessionId(); visualizer = new Visualizer(audioSessionId); } catch (Throwable x) { LOG.warn("Failed to create visualizer.", x); } if (visualizer != null) { int[] captureSizeRange = Visualizer.getCaptureSizeRange(); int captureSize = Math.max(PREFERRED_CAPTURE_SIZE, captureSizeRange[0]); captureSize = Math.min(captureSize, captureSizeRange[1]); visualizer.setCaptureSize(captureSize); } }
public Visualizer getVisualizer() { if(released) { released = false; try { visualizer = new Visualizer(audioSessionId); } catch (Throwable x) { visualizer = null; LOG.warn("Failed to create visualizer.", x); } } return visualizer; }
private void updateStatus() { // Capture the sample Visualizer.MeasurementPeakRms measurementPeakRms = new Visualizer.MeasurementPeakRms(); visualizer.getMeasurementPeakRms(measurementPeakRms); // Notify our updateable updateable.setPeakValue(measurementPeakRms.mPeak); updateable.setRmsValue(measurementPeakRms.mRms); }
private Bitmap startMusic() { mMediaPlayer = MediaPlayer.create(this, R.raw.hyperfun); mMediaPlayer.setLooping(true); mAudioSession = mMediaPlayer.getAudioSessionId(); mMediaPlayer.start(); mVisualizer = new Visualizer(mAudioSession); mVisualizer.setDataCaptureListener(this, Visualizer.getMaxCaptureRate() / 2, true, true); mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1] / 2); Bitmap visualizerBitmap = Bitmap.createBitmap(Visualizer.getCaptureSizeRange()[1] / 2, 2, Bitmap.Config.RGB_565) .copy(Bitmap.Config.RGB_565, true); visualizerBitmap.eraseColor(Color.BLACK); mVisualizer.setScalingMode(Visualizer.SCALING_MODE_AS_PLAYED); mVisualizer.setEnabled(true); return visualizerBitmap; }
private boolean captureData() { int status = Visualizer.ERROR; boolean result = true; try { if (mVisualizer != null) { if (mType == TYPE_PCM) { status = mVisualizer.getWaveForm(mRawVizData); } else { status = mVisualizer.getFft(mRawVizData); } } } catch (IllegalStateException e) { Log.e("AudioCapture", "captureData() IllegalStateException: "+this); } finally { if (status != Visualizer.SUCCESS) { Log.e("AudioCapture", "captureData() : "+this+" error: "+ status); result = false; } else { // return idle state indication if silence lasts more than MAX_IDLE_TIME_MS byte nullValue = 0; int i; if (mType == TYPE_PCM) { nullValue = (byte)0x80; } for (i = 0; i < mRawVizData.length; i++) { if (mRawVizData[i] != nullValue) break; } if (i == mRawVizData.length) { if ((System.currentTimeMillis() - mLastValidCaptureTimeMs) > MAX_IDLE_TIME_MS) { result = false; } } else { mLastValidCaptureTimeMs = System.currentTimeMillis(); } } } return result; }
private static Visualizer getVizualizer() { DownloadService downloadService = DownloadServiceImpl.getInstance(); VisualizerController visualizerController = downloadService == null ? null : downloadService.getVisualizerController(); return visualizerController == null ? null : visualizerController.getVisualizer(); }
public Visualizer getVisualizer() { return visualizer; }
private VisualizerShadowChanger(int audioSessionId) { mVisualizer = new Visualizer(audioSessionId); mVisualizer.setEnabled(false); mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]); mVisualizer.setDataCaptureListener(this, Visualizer.getMaxCaptureRate(), false, true); }
@Override public void onWaveFormDataCapture(Visualizer visualizer, byte[] waveform, int samplingRate) { }
private VisualizerShadowChanger(int audioSessionId) { mVisualizer = new Visualizer(audioSessionId); mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]); mVisualizer.setDataCaptureListener(this, Visualizer.getMaxCaptureRate(), false, true); }
@Override public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes, int samplingRate) {}
@Override public void onWaveFormDataCapture(Visualizer visualizer, byte[] waveform, int samplingRate) { updateVisualizerWave(waveform); }
@Override public void onFftDataCapture(Visualizer visualizer, byte[] fft, int samplingRate) { updateVisualizerFFT(fft); }
private Visualizer getVizualiser() { DownloadService downloadService = DownloadServiceImpl.getInstance(); VisualizerController visualizerController = downloadService == null ? null : downloadService.getVisualizerController(); return visualizerController == null ? null : visualizerController.getVisualizer(); }
public SamplingSoundMeter(SoundLevelUpdateable updateableObject) { updateable = updateableObject; visualizer = new Visualizer(0); visualizer.setMeasurementMode(Visualizer.MEASUREMENT_MODE_PEAK_RMS); handler = new Handler(); }
@Override public void onWaveFormDataCapture(Visualizer visualizer, byte[] waveform, int samplingRate) { mRenderer.setSamplingRate(samplingRate); mRenderer.setWaveform(waveform); }
@Override public void onFftDataCapture(Visualizer visualizer, byte[] fft, int samplingRate) { mRenderer.setSamplingRate(samplingRate); mRenderer.setFft(fft); }
@Override public void onFftDataCapture( Visualizer visualizer, byte[] fft, int samplingRate) { }
@Override public void onWaveFormDataCapture( Visualizer visualizer, byte[] waveform, int samplingRate) { mWaveform = waveform; this.postInvalidate(); }
@Override public void onFftDataCapture( Visualizer visualizer, byte[] fft, int samplingRate) { out.onReceive(fft); }
@Override public void onWaveFormDataCapture( Visualizer visualizer, byte[] waveform, int samplingRate) { throw new IllegalStateException("Waveform not supported."); }