diff options
-rw-r--r-- | apps/lang/english.lang | 10 | ||||
-rw-r--r-- | apps/settings.c | 174 | ||||
-rw-r--r-- | apps/settings.h | 4 | ||||
-rw-r--r-- | apps/tree.c | 32 | ||||
-rw-r--r-- | docs/CUSTOM_CFG_FORMAT | 114 |
5 files changed, 287 insertions, 47 deletions
diff --git a/apps/lang/english.lang b/apps/lang/english.lang index f272bea888..4539e21aca 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang | |||
@@ -1381,3 +1381,13 @@ id: LANG_CPU_SLEEP | |||
1381 | desc: in system_settings_menu() | 1381 | desc: in system_settings_menu() |
1382 | eng: "Power Saving" | 1382 | eng: "Power Saving" |
1383 | new: | 1383 | new: |
1384 | |||
1385 | id: LANG_SETTINGS_LOADED1 | ||
1386 | desc: Feedback shown when a .cfg file is loaded | ||
1387 | eng: "Settings" | ||
1388 | new: | ||
1389 | |||
1390 | id: LANG_SETTINGS_LOADED2 | ||
1391 | desc: Feedback shown when a .cfg file is loaded | ||
1392 | eng: "loaded" | ||
1393 | new: | ||
diff --git a/apps/settings.c b/apps/settings.c index c7ab9e411c..946286dc75 100644 --- a/apps/settings.c +++ b/apps/settings.c | |||
@@ -519,6 +519,8 @@ void settings_apply(void) | |||
519 | cpu_sleep(global_settings.cpu_sleep); | 519 | cpu_sleep(global_settings.cpu_sleep); |
520 | } | 520 | } |
521 | 521 | ||
522 | static void set_cfg_bool(bool* variable, char* value); | ||
523 | |||
522 | /* | 524 | /* |
523 | * load settings from disk or RTC RAM | 525 | * load settings from disk or RTC RAM |
524 | */ | 526 | */ |
@@ -527,6 +529,8 @@ void settings_load(void) | |||
527 | 529 | ||
528 | DEBUGF( "reload_all_settings()\n" ); | 530 | DEBUGF( "reload_all_settings()\n" ); |
529 | 531 | ||
532 | // set_cfg_bool(&global_settings.playlist_shuffle, "off"); | ||
533 | |||
530 | /* populate settings with default values */ | 534 | /* populate settings with default values */ |
531 | settings_reset(); | 535 | settings_reset(); |
532 | 536 | ||
@@ -776,6 +780,39 @@ static void set_sound(char* value, int type, int* setting) | |||
776 | #endif | 780 | #endif |
777 | } | 781 | } |
778 | 782 | ||
783 | static void set_cfg_bool(bool* variable, char* value) | ||
784 | { | ||
785 | /* look for the 'n' in 'on' */ | ||
786 | if ((value[1] & 0xdf) == 'N') | ||
787 | *variable = true; | ||
788 | else | ||
789 | *variable = false; | ||
790 | } | ||
791 | |||
792 | static void set_cfg_int(int* variable, char* value, int min, int max ) | ||
793 | { | ||
794 | *variable = atoi(value); | ||
795 | |||
796 | if (*variable < min) | ||
797 | *variable = min; | ||
798 | else | ||
799 | if (*variable > max) | ||
800 | *variable = max; | ||
801 | } | ||
802 | |||
803 | static void set_cfg_option(int* variable, char* value, | ||
804 | char* options[], int numoptions ) | ||
805 | { | ||
806 | int i; | ||
807 | |||
808 | for (i=0; i<numoptions; i++) { | ||
809 | if (!strcasecmp(options[i], value)) { | ||
810 | *variable = i; | ||
811 | break; | ||
812 | } | ||
813 | } | ||
814 | } | ||
815 | |||
779 | bool settings_load_config(char* file) | 816 | bool settings_load_config(char* file) |
780 | { | 817 | { |
781 | int fd; | 818 | int fd; |
@@ -803,6 +840,111 @@ bool settings_load_config(char* file) | |||
803 | set_sound(value, SOUND_BALANCE, &global_settings.balance); | 840 | set_sound(value, SOUND_BALANCE, &global_settings.balance); |
804 | else if (!strcasecmp(name, "channels")) | 841 | else if (!strcasecmp(name, "channels")) |
805 | set_sound(value, SOUND_CHANNELS, &global_settings.channel_config); | 842 | set_sound(value, SOUND_CHANNELS, &global_settings.channel_config); |
843 | else if (!strcasecmp(name, "wps")) | ||
844 | strncpy(global_settings.wps_file, value, MAX_FILENAME); | ||
845 | else if (!strcasecmp(name, "lang")) | ||
846 | strncpy(global_settings.lang_file, value, MAX_FILENAME); | ||
847 | #ifdef HAVE_LCD_BITMAP | ||
848 | else if (!strcasecmp(name, "font")) | ||
849 | strncpy(global_settings.font_file, value, MAX_FILENAME); | ||
850 | else if (!strcasecmp(name, "scroll step")) | ||
851 | set_cfg_int(&global_settings.scroll_step, value, 1, LCD_WIDTH); | ||
852 | else if (!strcasecmp(name, "bidir limit")) | ||
853 | set_cfg_int(&global_settings.bidir_limit, value, 0, 200); | ||
854 | else if (!strcasecmp(name, "statusbar")) | ||
855 | set_cfg_bool(&global_settings.statusbar, value); | ||
856 | else if (!strcasecmp(name, "peak meter release")) | ||
857 | set_cfg_int(&global_settings.peak_meter_release, value, 1, 0x7e); | ||
858 | else if (!strcasecmp(name, "peak meter hold")) { | ||
859 | static char* options[] = { | ||
860 | "off","200ms","300ms","500ms", | ||
861 | "1","2","3","4","5","6","7","8","9","10", | ||
862 | "15","20","25","30","45","60","90", | ||
863 | "2min","3min","5min","10min","20min","45min","90min"}; | ||
864 | set_cfg_option(&global_settings.peak_meter_hold, value, | ||
865 | options, 28); | ||
866 | } | ||
867 | else if (!strcasecmp(name, "peak meter clip hold")) { | ||
868 | static char* options[] = { | ||
869 | "on","1","2","3","4","5","6","7","8","9","10", | ||
870 | "15","20","25","30","45","60","90", | ||
871 | "2min","3min","5min","10min","20min","45min","90min"}; | ||
872 | set_cfg_option(&global_settings.peak_meter_clip_hold, value, | ||
873 | options, 25); | ||
874 | } | ||
875 | else if (!strcasecmp(name, "peak meter dbfs")) | ||
876 | set_cfg_bool(&global_settings.peak_meter_dbfs, value); | ||
877 | else if (!strcasecmp(name, "peak meter min")) | ||
878 | set_cfg_int(&global_settings.peak_meter_min, value, 0, 100); | ||
879 | else if (!strcasecmp(name, "peak meter max")) | ||
880 | set_cfg_int(&global_settings.peak_meter_max, value, 0, 100); | ||
881 | else if (!strcasecmp(name, "peak meter busy")) | ||
882 | set_cfg_bool(&global_settings.peak_meter_performance, value); | ||
883 | #endif | ||
884 | else if (!strcasecmp(name, "shuffle")) | ||
885 | set_cfg_bool(&global_settings.playlist_shuffle, value); | ||
886 | else if (!strcasecmp(name, "repeat")) { | ||
887 | static char* options[] = {"off", "all", "one"}; | ||
888 | set_cfg_option(&global_settings.repeat_mode, value, options, 3); | ||
889 | } | ||
890 | else if (!strcasecmp(name, "resume")) | ||
891 | set_cfg_int(&global_settings.resume, value, 0, 3); | ||
892 | else if (!strcasecmp(name, "sort case")) | ||
893 | set_cfg_bool(&global_settings.sort_case, value); | ||
894 | else if (!strcasecmp(name, "show files")) { | ||
895 | static char* options[] = {"all", "supported","music"}; | ||
896 | set_cfg_option(&global_settings.dirfilter, value, options, 3); | ||
897 | } | ||
898 | else if (!strcasecmp(name, "follow playlist")) | ||
899 | set_cfg_bool(&global_settings.browse_current, value); | ||
900 | else if (!strcasecmp(name, "play selected")) | ||
901 | set_cfg_bool(&global_settings.play_selected, value); | ||
902 | else if (!strcasecmp(name, "volume display")) { | ||
903 | static char* options[] = {"numeric", "graphic"}; | ||
904 | set_cfg_option(&global_settings.volume_type, value, options, 2); | ||
905 | } | ||
906 | else if (!strcasecmp(name, "battery display")) { | ||
907 | static char* options[] = {"numeric", "graphic"}; | ||
908 | set_cfg_option(&global_settings.battery_type, value, options, 2); | ||
909 | } | ||
910 | else if (!strcasecmp(name, "time format")) { | ||
911 | static char* options[] = {"24hour", "12hour"}; | ||
912 | set_cfg_option(&global_settings.timeformat, value, options, 2); | ||
913 | } | ||
914 | else if (!strcasecmp(name, "contrast")) | ||
915 | set_cfg_int(&global_settings.contrast, value, | ||
916 | 0, MAX_CONTRAST_SETTING); | ||
917 | else if (!strcasecmp(name, "scrollbar")) | ||
918 | set_cfg_bool(&global_settings.scrollbar, value); | ||
919 | else if (!strcasecmp(name, "scroll speed")) | ||
920 | set_cfg_int(&global_settings.scroll_speed, value, 1, 10); | ||
921 | else if (!strcasecmp(name, "scan min step")) { | ||
922 | static char* options[] = | ||
923 | {"1","2","3","4","5","6","8","10","15","20","25"}; | ||
924 | set_cfg_option(&global_settings.ff_rewind_min_step, value, | ||
925 | options, 11); | ||
926 | } | ||
927 | else if (!strcasecmp(name, "scan accel")) | ||
928 | set_cfg_int(&global_settings.ff_rewind_min_step, value, 0, 15); | ||
929 | else if (!strcasecmp(name, "scroll delay")) | ||
930 | set_cfg_int(&global_settings.scroll_delay, value, 0, 250); | ||
931 | else if (!strcasecmp(name, "backlight timeout")) { | ||
932 | static char* options[] = { | ||
933 | "off","on","1","2","3","4","5","6","7","8","9", | ||
934 | "10","15","20","30","45","60","90"}; | ||
935 | set_cfg_option(&global_settings.backlight_timeout, value, | ||
936 | options, 18); | ||
937 | } | ||
938 | else if (!strcasecmp(name, "backlight when plugged")) | ||
939 | set_cfg_bool(&global_settings.backlight_on_when_charging, value); | ||
940 | else if (!strcasecmp(name, "antiskip")) | ||
941 | set_cfg_int(&global_settings.buffer_margin, value, 0, 7); | ||
942 | else if (!strcasecmp(name, "disk spindown")) | ||
943 | set_cfg_int(&global_settings.disk_spindown, value, 3, 254); | ||
944 | #ifdef HAVE_ATA_POWER_OFF | ||
945 | else if (!strcasecmp(name, "disk poweroff")) | ||
946 | set_cfg_bool(&global_settings.disk_poweroff, value); | ||
947 | #endif | ||
806 | #ifdef HAVE_MAS3587F | 948 | #ifdef HAVE_MAS3587F |
807 | else if (!strcasecmp(name, "loudness")) | 949 | else if (!strcasecmp(name, "loudness")) |
808 | set_sound(value, SOUND_LOUDNESS, &global_settings.loudness); | 950 | set_sound(value, SOUND_LOUDNESS, &global_settings.loudness); |
@@ -810,10 +952,42 @@ bool settings_load_config(char* file) | |||
810 | set_sound(value, SOUND_SUPERBASS, &global_settings.bass_boost); | 952 | set_sound(value, SOUND_SUPERBASS, &global_settings.bass_boost); |
811 | else if (!strcasecmp(name, "auto volume")) | 953 | else if (!strcasecmp(name, "auto volume")) |
812 | set_sound(value, SOUND_AVC, &global_settings.avc); | 954 | set_sound(value, SOUND_AVC, &global_settings.avc); |
955 | else if (!strcasecmp(name, "rec mic gain")) | ||
956 | set_sound(value, SOUND_MIC_GAIN, &global_settings.rec_mic_gain); | ||
957 | else if (!strcasecmp(name, "rec left gain")) | ||
958 | set_sound(value, SOUND_LEFT_GAIN, &global_settings.rec_left_gain); | ||
959 | else if (!strcasecmp(name, "rec right gain")) | ||
960 | set_sound(value, SOUND_RIGHT_GAIN, &global_settings.rec_right_gain); | ||
961 | else if (!strcasecmp(name, "rec quality")) | ||
962 | set_cfg_int(&global_settings.rec_quality, value, 0, 7); | ||
963 | else if (!strcasecmp(name, "rec source")) { | ||
964 | static char* options[] = {"mic", "line", "spdif"}; | ||
965 | set_cfg_option(&global_settings.rec_source, value, options, 3); | ||
966 | } | ||
967 | else if (!strcasecmp(name, "rec frequency")) { | ||
968 | static char* options[] = {"44", "48", "32", "22", "24", "16"}; | ||
969 | set_cfg_option(&global_settings.rec_frequency, value, options, 6); | ||
970 | } | ||
971 | else if (!strcasecmp(name, "rec channels")) { | ||
972 | static char* options[] = {"stereo", "mono"}; | ||
973 | set_cfg_option(&global_settings.rec_channels, value, options, 2); | ||
974 | } | ||
975 | #endif | ||
976 | else if (!strcasecmp(name, "poweroff")) | ||
977 | set_cfg_int(&global_settings.poweroff, value, 0, 15); | ||
978 | else if (!strcasecmp(name, "battery capacity")) | ||
979 | set_cfg_int(&global_settings.battery_capacity, value, | ||
980 | 1500, BATTERY_CAPACITY_MAX); | ||
981 | #ifdef HAVE_CHARGE_CTRL | ||
982 | else if (!strcasecmp(name, "deep discharge")) | ||
983 | set_cfg_bool(&global_settings.discharge, value); | ||
984 | else if (!strcasecmp(name, "trickle charge")) | ||
985 | set_cfg_bool(&global_settings.trickle_charge, value); | ||
813 | #endif | 986 | #endif |
814 | } | 987 | } |
815 | 988 | ||
816 | close(fd); | 989 | close(fd); |
990 | settings_apply(); | ||
817 | settings_save(); | 991 | settings_save(); |
818 | return true; | 992 | return true; |
819 | } | 993 | } |
diff --git a/apps/settings.h b/apps/settings.h index 529797ced3..d1679cee10 100644 --- a/apps/settings.h +++ b/apps/settings.h | |||
@@ -128,8 +128,8 @@ struct user_settings | |||
128 | int peak_meter_clip_hold; /* hold time for clips */ | 128 | int peak_meter_clip_hold; /* hold time for clips */ |
129 | bool peak_meter_dbfs; /* show linear or dbfs values */ | 129 | bool peak_meter_dbfs; /* show linear or dbfs values */ |
130 | bool peak_meter_performance; /* true: high performance, else save energy*/ | 130 | bool peak_meter_performance; /* true: high performance, else save energy*/ |
131 | unsigned char peak_meter_min; /* range minimum */ | 131 | int peak_meter_min; /* range minimum */ |
132 | unsigned char peak_meter_max; /* range maximum */ | 132 | int peak_meter_max; /* range maximum */ |
133 | 133 | ||
134 | /* show status bar */ | 134 | /* show status bar */ |
135 | bool statusbar; /* 0=hide, 1=show */ | 135 | bool statusbar; /* 0=hide, 1=show */ |
diff --git a/apps/tree.c b/apps/tree.c index fcab64f49d..bd2f8c2a2b 100644 --- a/apps/tree.c +++ b/apps/tree.c | |||
@@ -1114,8 +1114,6 @@ bool dirbrowse(char *root) | |||
1114 | 1114 | ||
1115 | /* wps config file */ | 1115 | /* wps config file */ |
1116 | case TREE_ATTR_WPS: | 1116 | case TREE_ATTR_WPS: |
1117 | snprintf(buf, sizeof buf, "%s/%s", | ||
1118 | currdir, file->name); | ||
1119 | wps_load(buf,true); | 1117 | wps_load(buf,true); |
1120 | storefile(file->name, global_settings.wps_file, | 1118 | storefile(file->name, global_settings.wps_file, |
1121 | MAX_FILENAME); | 1119 | MAX_FILENAME); |
@@ -1123,22 +1121,34 @@ bool dirbrowse(char *root) | |||
1123 | break; | 1121 | break; |
1124 | 1122 | ||
1125 | case TREE_ATTR_CFG: | 1123 | case TREE_ATTR_CFG: |
1126 | snprintf(buf, sizeof buf, "%s/%s", | 1124 | if (!settings_load_config(buf)) |
1127 | currdir, file->name); | 1125 | break; |
1128 | settings_load_config(buf); | 1126 | lcd_clear_display(); |
1127 | lcd_puts(0,0,str(LANG_SETTINGS_LOADED1)); | ||
1128 | lcd_puts(0,1,str(LANG_SETTINGS_LOADED2)); | ||
1129 | #ifdef HAVE_LCD_BITMAP | ||
1130 | lcd_update(); | ||
1131 | |||
1132 | /* maybe we have a new font */ | ||
1133 | lcd_getstringsize("A", &fw, &fh); | ||
1134 | tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; | ||
1135 | /* make sure cursor is on screen */ | ||
1136 | while ( dircursor > tree_max_on_screen ) | ||
1137 | { | ||
1138 | dircursor--; | ||
1139 | dirstart++; | ||
1140 | } | ||
1141 | #endif | ||
1142 | sleep(HZ/2); | ||
1129 | restore = true; | 1143 | restore = true; |
1130 | break; | 1144 | break; |
1131 | 1145 | ||
1132 | case TREE_ATTR_TXT: | 1146 | case TREE_ATTR_TXT: |
1133 | snprintf(buf, sizeof buf, "%s/%s", | ||
1134 | currdir, file->name); | ||
1135 | viewer_run(buf); | 1147 | viewer_run(buf); |
1136 | restore = true; | 1148 | restore = true; |
1137 | break; | 1149 | break; |
1138 | 1150 | ||
1139 | case TREE_ATTR_LNG: | 1151 | case TREE_ATTR_LNG: |
1140 | snprintf(buf, sizeof buf, "%s/%s", | ||
1141 | currdir, file->name); | ||
1142 | if(!lang_load(buf)) { | 1152 | if(!lang_load(buf)) { |
1143 | storefile(file->name, | 1153 | storefile(file->name, |
1144 | global_settings.lang_file, | 1154 | global_settings.lang_file, |
@@ -1166,8 +1176,6 @@ bool dirbrowse(char *root) | |||
1166 | 1176 | ||
1167 | #ifdef HAVE_LCD_BITMAP | 1177 | #ifdef HAVE_LCD_BITMAP |
1168 | case TREE_ATTR_FONT: | 1178 | case TREE_ATTR_FONT: |
1169 | snprintf(buf, sizeof buf, "%s/%s", | ||
1170 | currdir, file->name); | ||
1171 | font_load(buf); | 1179 | font_load(buf); |
1172 | storefile(file->name, global_settings.font_file, | 1180 | storefile(file->name, global_settings.font_file, |
1173 | MAX_FILENAME); | 1181 | MAX_FILENAME); |
@@ -1186,8 +1194,6 @@ bool dirbrowse(char *root) | |||
1186 | #ifndef SIMULATOR | 1194 | #ifndef SIMULATOR |
1187 | /* firmware file */ | 1195 | /* firmware file */ |
1188 | case TREE_ATTR_MOD: | 1196 | case TREE_ATTR_MOD: |
1189 | snprintf(buf, sizeof buf, "%s/%s", | ||
1190 | currdir, file->name); | ||
1191 | rolo_load(buf); | 1197 | rolo_load(buf); |
1192 | break; | 1198 | break; |
1193 | #endif | 1199 | #endif |
diff --git a/docs/CUSTOM_CFG_FORMAT b/docs/CUSTOM_CFG_FORMAT index 87bc18162a..06b11b8241 100644 --- a/docs/CUSTOM_CFG_FORMAT +++ b/docs/CUSTOM_CFG_FORMAT | |||
@@ -1,24 +1,85 @@ | |||
1 | Custom CFG | 1 | Custom CFG File Format Specification |
2 | File Format Specifications | ||
3 | 2 | ||
4 | Description / General Info | 3 | General Info |
5 | -------------------------- | 4 | ------------ |
6 | * The .cfg file is used on both the Rockbox Player and Recorder, in order to | 5 | The .cfg file is used to load settings from a plain text file. A .cfg file may |
7 | load custom settings. | 6 | reside anywhere on the hard disk. The only restriction is that the filename |
8 | * Currently, only sound settings are supported but this will change in the | 7 | must end in .cfg |
9 | future. | ||
10 | |||
11 | File Location | ||
12 | ------------- | ||
13 | The files may reside anywhere on the hard disk. The only restriction is that | ||
14 | the filename must end in .cfg | ||
15 | 8 | ||
16 | Format Rules | 9 | Format Rules |
17 | ------------ | 10 | ------------ |
18 | * Each setting must have it's own line. | 11 | * Format: setting: value |
12 | * Each setting must be on a separate line. | ||
19 | * Lines starting with # are ignored. | 13 | * Lines starting with # are ignored. |
20 | * If a value is out of the acceptable range for the device, which can vary | 14 | |
21 | depending on the model, the value will be set to its default value. | 15 | Settings (allowed values) [unit] |
16 | -------------------------------- | ||
17 | volume (0 - 100) | ||
18 | bass (-15 - 15) | ||
19 | treble (-15 - 15) | ||
20 | balance (-100 - 100) | ||
21 | |||
22 | shuffle (on, off) | ||
23 | repeat (off, all, one) | ||
24 | play selected (on, off) | ||
25 | resume (off, ask, on) | ||
26 | scan min step (1, 2, 3, 4, 5, 6, 8, 10, 15, 20, 25) [seconds] | ||
27 | scan accel (0 - 15) [double scan speed every X seconds] | ||
28 | antiskip (0 - 7) [seconds] | ||
29 | |||
30 | sort case (on, off) | ||
31 | show files (all, supported, music) | ||
32 | follow playlist (on, off) | ||
33 | |||
34 | scroll speed (1 - 10) [Hz] | ||
35 | start delay (0 - 250) [1/10s] | ||
36 | scroll step (1 - 112) [pixel] | ||
37 | bidir limit (0 - 200) [% of screen width] | ||
38 | contrast (0 - 63) | ||
39 | backlight timeout (off, on, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, | ||
40 | 15, 20, 30, 45, 60, 90) [seconds] | ||
41 | backlight when plugged (on, off) | ||
42 | |||
43 | disk spindown (3 - 254) [seconds] | ||
44 | disk poweroff (on, off) | ||
45 | battery capacity (1500 - 2400) [mAh] | ||
46 | idle poweroff (off, 1, 2, 3, 4, 5, 6, 7, 8, 9, | ||
47 | 10, 15, 30, 45, 60) [minutes] | ||
48 | |||
49 | Recorder-specific settings (allowed values) [unit] | ||
50 | --------------------------------------------------- | ||
51 | loudness (0 - 17) | ||
52 | bass boost (0 - 100) | ||
53 | auto volume (0=off, 1=2s, 2=4s, 3=8s) | ||
54 | |||
55 | peak meter release (1 - 126) | ||
56 | peak meter hold (off, 200ms, 300ms, 500ms, | ||
57 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, | ||
58 | 15, 20, 25, 30, 45, 90, | ||
59 | 2min, 3min, 5min, 10min, 20min, 45min, 90min) | ||
60 | peak meter clip hold (on, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, | ||
61 | 15, 20, 25, 30, 45, 60, 90, | ||
62 | 2min, 3min, 5min, 10min, 20min, 45min, 90min) | ||
63 | peak meter busy (on, off) | ||
64 | peak meter dbfs (on, off) (on = dbfs, off = linear) | ||
65 | peak meter min (0 - 89) [dB] or (0 - 100) [%] | ||
66 | peak meter max (0 - 89) [dB] or (0 - 100) [%] | ||
67 | |||
68 | volume display (graphic, numeric) | ||
69 | battery display (graphic, numeric) | ||
70 | time format (12hour, 24hour) | ||
71 | |||
72 | deep discharge (on, off) | ||
73 | trickle charge (on, off) | ||
74 | |||
75 | rec quality (0 - 7) (0=smallest size, 7=highest quality) | ||
76 | rec frequency (48, 44, 32, 24, 22, 16) [kHz] | ||
77 | rec source (mic, line, spdif) | ||
78 | rec channels (mono, stereo) | ||
79 | rec mic gain (0 to 15) | ||
80 | rec left gain (0 to 15) | ||
81 | rec right gain (0 to 15) | ||
82 | |||
22 | 83 | ||
23 | Example File | 84 | Example File |
24 | ------------ | 85 | ------------ |
@@ -26,20 +87,9 @@ volume: 70 | |||
26 | bass: 11 | 87 | bass: 11 |
27 | treble: 12 | 88 | treble: 12 |
28 | balance: 0 | 89 | balance: 0 |
29 | channels: 0 | 90 | time format: 12hour |
30 | loudness: 5 | 91 | volume display: numeric |
31 | bass boost: 30 | 92 | show files: supported |
32 | auto volume: 0 | 93 | wps: car |
33 | 94 | lang: afrikaans | |
34 | This sets each line to the respective values after it. | ||
35 | 95 | ||
36 | Value ranges | ||
37 | ------------ | ||
38 | volume: 0 to 100 | ||
39 | bass: player: -15 to 15, recorder: -12 to 12 | ||
40 | treble: player: -15 to 15, recorder: -12 to 12 | ||
41 | balance: -100 to 100 | ||
42 | channels: 0=Stereo, 1=Mono, 2=Mono Left, 3=Mono Right | ||
43 | loudness: 0 to 17 (recorder only) | ||
44 | bass boost: 0 to 100 (recorder only) | ||
45 | auto volume: 0=off, 1=2s, 2=4s, 3=8s (recorder only) | ||