Audio gain into settings

legacy
sh123 2022-08-06 21:08:51 +03:00
rodzic b9e9c8d2fa
commit e545a098db
7 zmienionych plików z 51 dodań i 7 usunięć

Wyświetl plik

@ -21,6 +21,7 @@ public final class PreferenceKeys {
public static String PORTS_SOUND_MODEM_PREAMBLE = "ports_sound_modem_preamble";
public static String PORTS_SOUND_MODEM_DISABLE_RX = "ports_sound_modem_disable_rx";
public static String PORTS_SOUND_MODEM_RIG = "ports_sound_modem_rig";
public static String PORTS_SOUND_MODEM_GAIN ="ports_sound_modem_gain";
public static String CODEC2_MODE = "codec2_mode";
public static String CODEC2_RECORDING_ENABLED = "codec2_recording_enabled";

Wyświetl plik

@ -69,14 +69,15 @@ public class SoundModem implements Transport, Runnable {
boolean disableRx = _sharedPreferences.getBoolean(PreferenceKeys.PORTS_SOUND_MODEM_DISABLE_RX, false);
int bitRate = Integer.parseInt(_sharedPreferences.getString(PreferenceKeys.PORTS_SOUND_MODEM_TYPE, "1200"));
int gain = Integer.parseInt(_sharedPreferences.getString(PreferenceKeys.PORTS_SOUND_MODEM_GAIN, "10000"));
_name = "SoundModem" + bitRate;
if (bitRate == 300) {
// <230 spacing for 300 bps does not work with codec2 fsk for receive
_fskModem = Codec2.fskCreate(SAMPLE_RATE, 300, 1600, 200);
_fskModem = Codec2.fskCreate(SAMPLE_RATE, 300, 1600, 200, gain);
} else if (bitRate == 1200) {
_fskModem = Codec2.fskCreate(SAMPLE_RATE, 1200, 1200, 1000);
_fskModem = Codec2.fskCreate(SAMPLE_RATE, 1200, 1200, 1000, gain);
} else {
_fskModem = Codec2.fskCreate(SAMPLE_RATE, 2400, 2165, 1805);
_fskModem = Codec2.fskCreate(SAMPLE_RATE, 2400, 2165, 1805, gain);
}
_recordAudioBuffer = new short[Codec2.fskDemodSamplesBufSize(_fskModem)];

Wyświetl plik

@ -362,4 +362,36 @@
<item>Disabled</item>
<item>Ft817</item>
</string-array>
<string-array name="ports_sound_modem_gain_entries">
<item>+0 db</item>
<item>+1 db</item>
<item>+2 db</item>
<item>+3 db</item>
<item>+4 db</item>
<item>+5 db</item>
<item>+6 db</item>
<item>+7 db</item>
<item>+8 db</item>
<item>+9 db</item>
<item>+10 db</item>
<item>+11 db</item>
<item>+12 db</item>
</string-array>
<string-array name="ports_sound_modem_gain_values">
<item>1000</item>
<item>1258</item>
<item>1584</item>
<item>1995</item>
<item>2511</item>
<item>3162</item>
<item>3981</item>
<item>5011</item>
<item>6309</item>
<item>7943</item>
<item>10000</item>
<item>12589</item>
<item>15848</item>
</string-array>
</resources>

Wyświetl plik

@ -303,4 +303,5 @@
<string name="ports_sound_modem_disable_rx_title">Disable receive</string>
<string name="ports_sound_modem_disable_rx_summary">Run modem in transmit only mode, receive is disabled to save CPU cycles</string>
<string name="ports_sound_modem_rig_title">Select RIG model for CAT PTT control</string>
<string name="ports_sound_modem_gain_title">Set modem audio gain</string>
</resources>

Wyświetl plik

@ -38,5 +38,14 @@
app:summary="%s">
</ListPreference>
<ListPreference
app:key="ports_sound_modem_gain"
app:title="@string/ports_sound_modem_gain_title"
app:entries="@array/ports_sound_modem_gain_entries"
app:entryValues="@array/ports_sound_modem_gain_values"
app:defaultValue="10000"
app:summary="%s">
</ListPreference>
</PreferenceCategory>
</PreferenceScreen>

Wyświetl plik

@ -57,7 +57,7 @@ namespace Java_com_ustadmobile_codec2_Codec2 {
return pv;
}
static jlong fskCreate(JNIEnv *env, jclass clazz, int sampleFrequency, int symbolRate, int toneFreq, int toneSpacing) {
static jlong fskCreate(JNIEnv *env, jclass clazz, int sampleFrequency, int symbolRate, int toneFreq, int toneSpacing, int gain) {
struct ContextFsk *conFsk;
conFsk = (struct ContextFsk *) malloc(sizeof(struct ContextFsk));
struct FSK *fsk;
@ -75,7 +75,7 @@ namespace Java_com_ustadmobile_codec2_Codec2 {
conFsk->demodBits = (uint8_t*)malloc(sizeof(uint8_t) * fsk->Nbits);
conFsk->demodBuf = (int16_t*)malloc(sizeof(short) * (fsk->N + 2 * fsk->Ts));
conFsk->gain = 10 * FDMDV_SCALE;
conFsk->gain = gain;
fsk_set_freq_est_limits(fsk, 500, sampleFrequency / 4);
fsk_set_freq_est_alg(fsk, 0);
@ -204,7 +204,7 @@ namespace Java_com_ustadmobile_codec2_Codec2 {
{"destroy", "(J)I", (void *) destroy},
{"encode", "(J[S[C)J", (void *) encode},
{"decode", "(J[S[B)J", (void *) decode},
{"fskCreate", "(IIII)J", (void *) fskCreate},
{"fskCreate", "(IIIII)J", (void *) fskCreate},
{"fskDestroy", "(J)I", (void *) fskDestroy},
{"fskModulate", "(J[S[B)J", (void *) fskModulate},
{"fskDemodulate", "(J[S[B)J", (void *) fskDemodulate},

Wyświetl plik

@ -35,7 +35,7 @@ public class Codec2 {
public native static long encode(long con, short[] inputSamples, char[] outputBits);
public native static long decode(long con, short[] outputSamples, byte[] inputsBits);
public native static long fskCreate(int sampleFrequency, int symbolRate, int toneFreq, int toneSpacing);
public native static long fskCreate(int sampleFrequency, int symbolRate, int toneFreq, int toneSpacing, int gain);
public native static int fskDestroy(long conFsk);
public native static int fskDemodBitsBufSize(long conFsk);