summaryrefslogtreecommitdiffstats
path: root/src/org/cyanogenmod/audiofx/audiofx/eq/EqUtils.java
blob: 30d546ca5adb33be0e10b5c6fb46f2a12445f9bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
package com.cyngn.audiofx.eq;

import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;

import com.cyngn.audiofx.Preset;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class EqUtils {

    private static final String TAG = EqUtils.class.getSimpleName();
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
    private static final String DEFAULT_DELIMITER = ";";

    public static String getZeroedBandsString(int length) {
        return getZeroedBandsString(length, DEFAULT_DELIMITER);
    }

    public static float[] stringBandsToFloats(String input) {
        return stringBandsToFloats(input, DEFAULT_DELIMITER);
    }

    public static String floatLevelsToString(float[] levels) {
        return floatLevelsToString(levels, DEFAULT_DELIMITER);
    }

    public static short[] stringBandsToShorts(String input) {
        return stringBandsToShorts(input, DEFAULT_DELIMITER);
    }

    public static String shortLevelsToString(short[] levels) {
        return shortLevelsToString(levels, DEFAULT_DELIMITER);
    }

    public static String getZeroedBandsString(int length, final String delimiter) {
        StringBuilder buff = new StringBuilder();
        for (int i = 0; i < length; i++) {
            buff.append("0").append(delimiter);
        }
        buff.deleteCharAt(buff.length() - 1);
        return buff.toString();
    }

    public static String floatLevelsToString(float[] levels, final String delimiter) {
        // save
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < levels.length; i++) {
            builder.append(levels[i]);
            builder.append(delimiter);
        }
        builder.deleteCharAt(builder.length() - 1);
        return builder.toString();
    }


    public static String shortLevelsToString(short[] levels, final String delimiter) {
        // save
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < levels.length; i++) {
            builder.append(levels[i]);
            builder.append(delimiter);
        }
        builder.deleteCharAt(builder.length() - 1);
        return builder.toString();
    }

    public static String intLevelsToString(int[] levels, final String delimiter) {
        // save
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < levels.length; i++) {
            builder.append(levels[i]);
            builder.append(delimiter);
        }
        builder.deleteCharAt(builder.length() - 1);
        return builder.toString();
    }

    public static <T> String levelsToString(T[] levels, final String delimiter) {
        // save
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < levels.length; i++) {
            builder.append(levels[i]);
            builder.append(delimiter);
        }
        builder.deleteCharAt(builder.length() - 1);
        return builder.toString();
    }

    public static short[] stringBandsToShorts(String input, final String delimiter) {
        String[] levels = input.split(delimiter);

        short[] equalizerLevels = new short[levels.length];
        for (int i = 0; i < levels.length; i++) {
            equalizerLevels[i] = (short) (Float.parseFloat(levels[i]));
        }
        return equalizerLevels;
    }


    public static float[] stringBandsToFloats(String input, final String delimiter) {
        String[] levels = input.split(delimiter);

        float[] equalizerLevels = new float[levels.length];
        for (int i = 0; i < levels.length; i++) {
            equalizerLevels[i] = (Float.parseFloat(levels[i]));
        }
        return equalizerLevels;
    }

    public static float[] convertDecibelsToMillibels(float[] decibels) {
        if (DEBUG) Log.i(TAG, "++ convertDecibelsToMillibels(" + Arrays.toString(decibels) + ")");

        float[] newvals = new float[decibels.length];
        for (int i = 0; i < decibels.length; i++) {
            newvals[i] = decibels[i] * 100;
        }


        if (DEBUG) Log.i(TAG, "-- convertDecibelsToMillibels(" + Arrays.toString(newvals) + ")");
        return newvals;
    }

    public static short[] convertDecibelsToMillibelsInShorts(float[] decibels) {
        if (DEBUG) Log.i(TAG, "++ convertDecibelsToMillibels(" + Arrays.toString(decibels) + ")");

        short[] newvals = new short[decibels.length];
        for (int i = 0; i < decibels.length; i++) {
            newvals[i] = (short) (decibels[i] * 100);
        }


        if (DEBUG) Log.i(TAG, "-- convertDecibelsToMillibels(" + Arrays.toString(newvals) + ")");
        return newvals;
    }

    public static float[] convertMillibelsToDecibels(float[] millibels) {
        if (DEBUG) Log.i(TAG, "++ convertMillibelsToDecibels(" + Arrays.toString(millibels) + ")");
        float[] newvals = new float[millibels.length];
        for (int i = 0; i < millibels.length; i++) {
            newvals[i] = millibels[i] / 100;
        }
        if (DEBUG) Log.i(TAG, "-- convertMillibelsToDecibels(" + Arrays.toString(newvals) + ")");
        return newvals;
    }
}