Video limit, please click this image.
Nier Visualizer is a lightweight and efficient Android visual library written in pure Kotlin.It has an independent rendering thread, compatible with most of the equipment on the market. Nier Visualizer is ideal for audio visualization applications such as music players, recorder, live wallpaper and more.
Nier Visualizer has six kinds of independent visual effects currently. More effects are under development, welcome to
star
operation to see in time.
- Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
- Add the dependency
dependencies {
compile 'com.github.bogerchan:Nier-Visualizer:v0.1.3'
}
Tips: The
Visualizer
requires audio permission (android.permission.RECORD_AUDIO
), please declare it in your project.
Nier Visualizer project provides a demo
module for reference.
val visualizerManager = NierVisualizerManager()
// need a param of audioSession, 0 is output mix, AudioRecord user please see 3.3.7
val state = visualizerManager.init(0)
if (NierVisualizerManager.SUCCESS != state) {
// do something...
}
visualizerManager.release()
visualizerManager.start(surfaceView, arrayOf(ColumnarType1Renderer()))
visualizerManager.stop()
visualizerManager.pause()
visualizerManager.resume()
val visualizerManager = NierVisualizerManager()
visualizerManager.init(object : NierVisualizerManager.NVDataSource {
// skip some code...
/**
* Tell the manager about the data sampling interval.
* @return the data sampling interval which is millisecond of unit.
*/
override fun getDataSamplingInterval() = 0L
/**
* Tell the manager about the data length of fft data or wave data.
* @return the data length of fft data or wave data.
*/
override fun getDataLength() = mBuffer.size
/**
* The manager will fetch fft data by it.
* @return the fft data, null will be ignored by the manager.
*/
override fun fetchFftData(): ByteArray? {
return null
}
/**
* The manager will fetch wave data by it.
* @return the wave data, null will be ignored by the manager.
*/
override fun fetchWaveData(): ByteArray? {
// skip some code...
return mBuffer
}
})
final NierVisualizerManager visualizerManager = new NierVisualizerManager();
// need a param of audioSession, 0 is output mix, AudioRecord user please see 3.4.7
final int state = visualizerManager.init(0);
if (NierVisualizerManager.SUCCESS != state) {
// do something...
}
visualizerManager.release();
visualizerManager.start(surfaceView, new IRenderer[]{new LineRenderer(true)});
visualizerManager.stop();
visualizerManager.pause();
visualizerManager.resume();
NierVisualizerManager visualizerManager = new NierVisualizerManager();
visualizerManager.init(new NierVisualizerManager.NVDataSource() {
// skip some code...
/**
* Tell the manager about the data sampling interval.
* @return the data sampling interval which is millisecond of unit.
*/
@Override
public long getDataSamplingInterval() {
return 0L;
}
/**
* Tell the manager about the data length of fft data or wave data.
* @return the data length of fft data or wave data.
*/
@Override
public int getDataLength() {
return mBuffer.length;
}
/**
* The manager will fetch fft data by it.
* @return the fft data, null will be ignored by the manager.
*/
@Nullable
@Override
public byte[] fetchFftData() {
return null;
}
/**
* The manager will fetch wave data by it.
* @return the wave data, null will be ignored by the manager.
*/
@Nullable
@Override
public byte[] fetchWaveData() {
// skip some code...
return mBuffer;
}
});
- Thinking about implementing visual effects like Siri.
- Some gallery of visual effects tailored for DJ music.
- If you are interested in it, welcome to Fork to do it together!
Ported some of the android-visualizer,visual effects, thanks to felixpalmer
!
Copyright 2018 Boger Chan
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.