summaryrefslogtreecommitdiff
path: root/apps/recorder
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2002-11-10 23:18:33 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2002-11-10 23:18:33 +0000
commitafe0da9e1677c5164291150286531ccd46ebef10 (patch)
treedc4299188d85bb2ea7babd08b57813b4df03ba8b /apps/recorder
parent8e4a0e0aabc9c35cc6b9bc9506e629dabf291031 (diff)
downloadrockbox-afe0da9e1677c5164291150286531ccd46ebef10.tar.gz
rockbox-afe0da9e1677c5164291150286531ccd46ebef10.zip
Recording settings are now persistent. Added a Recording Settings menu
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2818 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/recorder')
-rw-r--r--apps/recorder/recording.c203
1 files changed, 116 insertions, 87 deletions
diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c
index 3ec4249f3c..70aa1257ce 100644
--- a/apps/recorder/recording.c
+++ b/apps/recorder/recording.c
@@ -35,6 +35,7 @@
35#include "peakmeter.h" 35#include "peakmeter.h"
36#include "status.h" 36#include "status.h"
37#include "menu.h" 37#include "menu.h"
38#include "sound_menu.h"
38 39
39bool f2_rec_screen(void); 40bool f2_rec_screen(void);
40bool f3_rec_screen(void); 41bool f3_rec_screen(void);
@@ -46,14 +47,6 @@ extern int mp3buf_write;
46extern int mp3buf_read; 47extern int mp3buf_read;
47extern bool recording; 48extern bool recording;
48 49
49int mic_gain = 8;
50int left_gain = 2;
51int right_gain = 2;
52unsigned int recording_quality = 5;
53unsigned int recording_frequency = 0;
54unsigned int recording_channel_mode = 0;
55unsigned int recording_source = 0;
56
57#define SOURCE_MIC 0 50#define SOURCE_MIC 0
58#define SOURCE_LINE 1 51#define SOURCE_LINE 1
59#define SOURCE_SPDIF 2 52#define SOURCE_SPDIF 2
@@ -70,13 +63,15 @@ char *freq_str[6] =
70 63
71static void set_gain(void) 64static void set_gain(void)
72{ 65{
73 if(recording_source == SOURCE_MIC) 66 if(global_settings.rec_source == SOURCE_MIC)
74 { 67 {
75 mpeg_set_recording_gain(left_gain, 0, mic_gain); 68 mpeg_set_recording_gain(global_settings.rec_left_gain, 0,
69 global_settings.rec_mic_gain);
76 } 70 }
77 else 71 else
78 { 72 {
79 mpeg_set_recording_gain(left_gain, right_gain, 0); 73 mpeg_set_recording_gain(global_settings.rec_left_gain,
74 global_settings.rec_right_gain, 0);
80 } 75 }
81} 76}
82 77
@@ -107,7 +102,7 @@ int cursor;
107 102
108void adjust_cursor(void) 103void adjust_cursor(void)
109{ 104{
110 if(recording_source == SOURCE_LINE) 105 if(global_settings.rec_source == SOURCE_LINE)
111 { 106 {
112 if(cursor < 0) 107 if(cursor < 0)
113 cursor = 0; 108 cursor = 0;
@@ -140,8 +135,10 @@ bool recording_screen(void)
140 135
141 peak_meter_enabled = true; 136 peak_meter_enabled = true;
142 137
143 mpeg_set_recording_options(recording_frequency, recording_quality, 138 mpeg_set_recording_options(global_settings.rec_frequency,
144 recording_source, recording_channel_mode); 139 global_settings.rec_quality,
140 global_settings.rec_source,
141 global_settings.rec_channels);
145 142
146 lcd_setfont(FONT_UI); 143 lcd_setfont(FONT_UI);
147 lcd_getstringsize("M", &w, &h); 144 lcd_getstringsize("M", &w, &h);
@@ -189,30 +186,37 @@ bool recording_screen(void)
189 switch(cursor) 186 switch(cursor)
190 { 187 {
191 case 0: 188 case 0:
192 if(recording_source == SOURCE_MIC) 189 if(global_settings.rec_source == SOURCE_MIC)
193 { 190 {
194 mic_gain++; 191 global_settings.rec_mic_gain++;
195 if(mic_gain > mpeg_sound_max(SOUND_MIC_GAIN)) 192 if(global_settings.rec_mic_gain >
196 mic_gain = mpeg_sound_max(SOUND_MIC_GAIN); 193 mpeg_sound_max(SOUND_MIC_GAIN))
194 global_settings.rec_mic_gain =
195 mpeg_sound_max(SOUND_MIC_GAIN);
197 } 196 }
198 else 197 else
199 { 198 {
200 gain = MAX(left_gain, right_gain) + 1; 199 gain = MAX(global_settings.rec_left_gain,
200 global_settings.rec_right_gain) + 1;
201 if(gain > mpeg_sound_max(SOUND_MIC_GAIN)) 201 if(gain > mpeg_sound_max(SOUND_MIC_GAIN))
202 gain = mpeg_sound_max(SOUND_MIC_GAIN); 202 gain = mpeg_sound_max(SOUND_MIC_GAIN);
203 left_gain = gain; 203 global_settings.rec_left_gain = gain;
204 right_gain = gain; 204 global_settings.rec_right_gain = gain;
205 } 205 }
206 break; 206 break;
207 case 1: 207 case 1:
208 left_gain++; 208 global_settings.rec_left_gain++;
209 if(left_gain > mpeg_sound_max(SOUND_LEFT_GAIN)) 209 if(global_settings.rec_left_gain >
210 left_gain = mpeg_sound_max(SOUND_LEFT_GAIN); 210 mpeg_sound_max(SOUND_LEFT_GAIN))
211 global_settings.rec_left_gain =
212 mpeg_sound_max(SOUND_LEFT_GAIN);
211 break; 213 break;
212 case 2: 214 case 2:
213 right_gain++; 215 global_settings.rec_right_gain++;
214 if(right_gain > mpeg_sound_max(SOUND_RIGHT_GAIN)) 216 if(global_settings.rec_right_gain >
215 right_gain = mpeg_sound_max(SOUND_RIGHT_GAIN); 217 mpeg_sound_max(SOUND_RIGHT_GAIN))
218 global_settings.rec_right_gain =
219 mpeg_sound_max(SOUND_RIGHT_GAIN);
216 break; 220 break;
217 } 221 }
218 set_gain(); 222 set_gain();
@@ -223,36 +227,50 @@ bool recording_screen(void)
223 switch(cursor) 227 switch(cursor)
224 { 228 {
225 case 0: 229 case 0:
226 if(recording_source == SOURCE_MIC) 230 if(global_settings.rec_source == SOURCE_MIC)
227 { 231 {
228 mic_gain--; 232 global_settings.rec_mic_gain--;
229 if(mic_gain < mpeg_sound_min(SOUND_MIC_GAIN)) 233 if(global_settings.rec_mic_gain <
230 mic_gain = mpeg_sound_min(SOUND_MIC_GAIN); 234 mpeg_sound_min(SOUND_MIC_GAIN))
235 global_settings.rec_mic_gain =
236 mpeg_sound_min(SOUND_MIC_GAIN);
231 } 237 }
232 else 238 else
233 { 239 {
234 gain = MAX(left_gain, right_gain) - 1; 240 gain = MAX(global_settings.rec_left_gain,
241 global_settings.rec_right_gain) - 1;
235 if(gain < mpeg_sound_min(SOUND_LEFT_GAIN)) 242 if(gain < mpeg_sound_min(SOUND_LEFT_GAIN))
236 gain = mpeg_sound_min(SOUND_LEFT_GAIN); 243 gain = mpeg_sound_min(SOUND_LEFT_GAIN);
237 left_gain = gain; 244 global_settings.rec_left_gain = gain;
238 right_gain = gain; 245 global_settings.rec_right_gain = gain;
239 } 246 }
240 break; 247 break;
241 case 1: 248 case 1:
242 left_gain--; 249 global_settings.rec_left_gain--;
243 if(left_gain < mpeg_sound_min(SOUND_LEFT_GAIN)) 250 if(global_settings.rec_left_gain <
244 left_gain = mpeg_sound_min(SOUND_LEFT_GAIN); 251 mpeg_sound_min(SOUND_LEFT_GAIN))
252 global_settings.rec_left_gain =
253 mpeg_sound_min(SOUND_LEFT_GAIN);
245 break; 254 break;
246 case 2: 255 case 2:
247 right_gain--; 256 global_settings.rec_right_gain--;
248 if(right_gain < mpeg_sound_min(SOUND_MIC_GAIN)) 257 if(global_settings.rec_right_gain <
249 right_gain = mpeg_sound_min(SOUND_MIC_GAIN); 258 mpeg_sound_min(SOUND_MIC_GAIN))
259 global_settings.rec_right_gain =
260 mpeg_sound_min(SOUND_MIC_GAIN);
250 break; 261 break;
251 } 262 }
252 set_gain(); 263 set_gain();
253 update_countdown = 1; /* Update immediately */ 264 update_countdown = 1; /* Update immediately */
254 break; 265 break;
255 266
267 case BUTTON_F1:
268 if (recording_menu())
269 return SYS_USB_CONNECTED;
270 settings_save();
271 update_countdown = 1; /* Update immediately */
272 break;
273
256 case BUTTON_F2: 274 case BUTTON_F2:
257 if (f2_rec_screen()) 275 if (f2_rec_screen())
258 return SYS_USB_CONNECTED; 276 return SYS_USB_CONNECTED;
@@ -282,18 +300,20 @@ bool recording_screen(void)
282 peak_meter_draw(0, 8 + h, LCD_WIDTH, h); 300 peak_meter_draw(0, 8 + h, LCD_WIDTH, h);
283 301
284 /* Show mic gain if input source is Mic */ 302 /* Show mic gain if input source is Mic */
285 if(recording_source == 0) 303 if(global_settings.rec_source == 0)
286 { 304 {
287 snprintf(buf, 32, "%s: %s", str(LANG_RECORDING_GAIN), 305 snprintf(buf, 32, "%s: %s", str(LANG_RECORDING_GAIN),
288 fmt_gain(SOUND_MIC_GAIN, mic_gain, 306 fmt_gain(SOUND_MIC_GAIN,
307 global_settings.rec_mic_gain,
289 buf2, sizeof(buf2))); 308 buf2, sizeof(buf2)));
290 lcd_puts(0, 3, buf); 309 lcd_puts(0, 3, buf);
291 } 310 }
292 else 311 else
293 { 312 {
294 if(recording_source == SOURCE_LINE) 313 if(global_settings.rec_source == SOURCE_LINE)
295 { 314 {
296 gain = MAX(left_gain, right_gain); 315 gain = MAX(global_settings.rec_left_gain,
316 global_settings.rec_right_gain);
297 317
298 snprintf(buf, 32, "%s: %s", str(LANG_RECORDING_GAIN), 318 snprintf(buf, 32, "%s: %s", str(LANG_RECORDING_GAIN),
299 fmt_gain(SOUND_LEFT_GAIN, gain, 319 fmt_gain(SOUND_LEFT_GAIN, gain,
@@ -301,12 +321,14 @@ bool recording_screen(void)
301 lcd_puts(0, 3, buf); 321 lcd_puts(0, 3, buf);
302 322
303 snprintf(buf, 32, "%s: %s", str(LANG_RECORDING_LEFT), 323 snprintf(buf, 32, "%s: %s", str(LANG_RECORDING_LEFT),
304 fmt_gain(SOUND_LEFT_GAIN, left_gain, 324 fmt_gain(SOUND_LEFT_GAIN,
325 global_settings.rec_left_gain,
305 buf2, sizeof(buf2))); 326 buf2, sizeof(buf2)));
306 lcd_puts(0, 4, buf); 327 lcd_puts(0, 4, buf);
307 328
308 snprintf(buf, 32, "%s: %s", str(LANG_RECORDING_RIGHT), 329 snprintf(buf, 32, "%s: %s", str(LANG_RECORDING_RIGHT),
309 fmt_gain(SOUND_RIGHT_GAIN, right_gain, 330 fmt_gain(SOUND_RIGHT_GAIN,
331 global_settings.rec_right_gain,
310 buf2, sizeof(buf2))); 332 buf2, sizeof(buf2)));
311 lcd_puts(0, 5, buf); 333 lcd_puts(0, 5, buf);
312 } 334 }
@@ -314,14 +336,14 @@ bool recording_screen(void)
314 336
315 status_draw(); 337 status_draw();
316 338
317 if(recording_source != SOURCE_SPDIF) 339 if(global_settings.rec_source != SOURCE_SPDIF)
318 put_cursorxy(0, 3 + cursor, true); 340 put_cursorxy(0, 3 + cursor, true);
319 341
320 snprintf(buf, 32, "%s %s [%d]", 342 snprintf(buf, 32, "%s %s [%d]",
321 freq_str[recording_frequency], 343 freq_str[global_settings.rec_frequency],
322 recording_channel_mode? 344 global_settings.rec_channels?
323 str(LANG_CHANNEL_MONO):str(LANG_CHANNEL_STEREO), 345 str(LANG_CHANNEL_MONO):str(LANG_CHANNEL_STEREO),
324 recording_quality); 346 global_settings.rec_quality);
325 lcd_puts(0, 6, buf); 347 lcd_puts(0, 6, buf);
326 } 348 }
327 else 349 else
@@ -357,7 +379,7 @@ bool f2_rec_screen(void)
357 379
358 /* Recording quality */ 380 /* Recording quality */
359 lcd_putsxy(0, LCD_HEIGHT/2 - h*2, str(LANG_RECORDING_QUALITY)); 381 lcd_putsxy(0, LCD_HEIGHT/2 - h*2, str(LANG_RECORDING_QUALITY));
360 snprintf(buf, 32, "%d", recording_quality); 382 snprintf(buf, 32, "%d", global_settings.rec_quality);
361 lcd_putsxy(0, LCD_HEIGHT/2-h, buf); 383 lcd_putsxy(0, LCD_HEIGHT/2-h, buf);
362 lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward], 384 lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward],
363 LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8, true); 385 LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8, true);
@@ -366,14 +388,14 @@ bool f2_rec_screen(void)
366 snprintf(buf, sizeof buf, "%s:", str(LANG_RECORDING_FREQUENCY)); 388 snprintf(buf, sizeof buf, "%s:", str(LANG_RECORDING_FREQUENCY));
367 lcd_getstringsize(buf,&w,&h); 389 lcd_getstringsize(buf,&w,&h);
368 lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h*2, buf); 390 lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h*2, buf);
369 ptr = freq_str[recording_frequency]; 391 ptr = freq_str[global_settings.rec_frequency];
370 lcd_getstringsize(ptr, &w, &h); 392 lcd_getstringsize(ptr, &w, &h);
371 lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h, ptr); 393 lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h, ptr);
372 lcd_bitmap(bitmap_icons_7x8[Icon_DownArrow], 394 lcd_bitmap(bitmap_icons_7x8[Icon_DownArrow],
373 LCD_WIDTH/2 - 3, LCD_HEIGHT - h*3, 7, 8, true); 395 LCD_WIDTH/2 - 3, LCD_HEIGHT - h*3, 7, 8, true);
374 396
375 /* Channel mode */ 397 /* Channel mode */
376 switch ( recording_channel_mode ) { 398 switch ( global_settings.rec_channels ) {
377 case 0: 399 case 0:
378 ptr = str(LANG_CHANNEL_STEREO); 400 ptr = str(LANG_CHANNEL_STEREO);
379 break; 401 break;
@@ -383,9 +405,9 @@ bool f2_rec_screen(void)
383 break; 405 break;
384 } 406 }
385 407
386 lcd_getstringsize(str(LANG_RECORDING_CHANNEL), &w, &h); 408 lcd_getstringsize(str(LANG_RECORDING_CHANNELS), &w, &h);
387 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h*2, 409 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h*2,
388 str(LANG_RECORDING_CHANNEL)); 410 str(LANG_RECORDING_CHANNELS));
389 lcd_getstringsize(str(LANG_F2_MODE), &w, &h); 411 lcd_getstringsize(str(LANG_F2_MODE), &w, &h);
390 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h, str(LANG_F2_MODE)); 412 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h, str(LANG_F2_MODE));
391 lcd_getstringsize(ptr, &w, &h); 413 lcd_getstringsize(ptr, &w, &h);
@@ -398,25 +420,25 @@ bool f2_rec_screen(void)
398 switch (button_get(true)) { 420 switch (button_get(true)) {
399 case BUTTON_LEFT: 421 case BUTTON_LEFT:
400 case BUTTON_F2 | BUTTON_LEFT: 422 case BUTTON_F2 | BUTTON_LEFT:
401 recording_quality++; 423 global_settings.rec_quality++;
402 if(recording_quality > 7) 424 if(global_settings.rec_quality > 7)
403 recording_quality = 0; 425 global_settings.rec_quality = 0;
404 used = true; 426 used = true;
405 break; 427 break;
406 428
407 case BUTTON_DOWN: 429 case BUTTON_DOWN:
408 case BUTTON_F2 | BUTTON_DOWN: 430 case BUTTON_F2 | BUTTON_DOWN:
409 recording_frequency++; 431 global_settings.rec_frequency++;
410 if(recording_frequency > 5) 432 if(global_settings.rec_frequency > 5)
411 recording_frequency = 0; 433 global_settings.rec_frequency = 0;
412 used = true; 434 used = true;
413 break; 435 break;
414 436
415 case BUTTON_RIGHT: 437 case BUTTON_RIGHT:
416 case BUTTON_F2 | BUTTON_RIGHT: 438 case BUTTON_F2 | BUTTON_RIGHT:
417 recording_channel_mode++; 439 global_settings.rec_channels++;
418 if(recording_channel_mode > 1) 440 if(global_settings.rec_channels > 1)
419 recording_channel_mode = 0; 441 global_settings.rec_channels = 0;
420 used = true; 442 used = true;
421 break; 443 break;
422 444
@@ -436,27 +458,30 @@ bool f2_rec_screen(void)
436 } 458 }
437 } 459 }
438 460
439 mpeg_set_recording_options(recording_frequency, recording_quality, 461 mpeg_set_recording_options(global_settings.rec_frequency,
440 recording_source, recording_channel_mode); 462 global_settings.rec_quality,
463 global_settings.rec_source,
464 global_settings.rec_channels);
441 465
442// settings_save(); 466 set_gain();
467
468 settings_save();
443 lcd_setfont(FONT_UI); 469 lcd_setfont(FONT_UI);
444 470
445 return false; 471 return false;
446} 472}
447 473
448char *src_str[] =
449{
450 "Mic",
451 "Line In",
452 "Digital"
453};
454
455bool f3_rec_screen(void) 474bool f3_rec_screen(void)
456{ 475{
457 bool exit = false; 476 bool exit = false;
458 bool used = false; 477 bool used = false;
459 int w, h; 478 int w, h;
479 char *src_str[] =
480 {
481 str(LANG_RECORDING_SRC_MIC),
482 str(LANG_RECORDING_SRC_LINE),
483 str(LANG_RECORDING_SRC_DIGITAL)
484 };
460 485
461 lcd_setfont(FONT_SYSFIXED); 486 lcd_setfont(FONT_SYSFIXED);
462 lcd_getstringsize("A",&w,&h); 487 lcd_getstringsize("A",&w,&h);
@@ -469,7 +494,7 @@ bool f3_rec_screen(void)
469 494
470 /* Recording source */ 495 /* Recording source */
471 lcd_putsxy(0, LCD_HEIGHT/2 - h*2, str(LANG_RECORDING_SOURCE)); 496 lcd_putsxy(0, LCD_HEIGHT/2 - h*2, str(LANG_RECORDING_SOURCE));
472 ptr = src_str[recording_source]; 497 ptr = src_str[global_settings.rec_source];
473 lcd_getstringsize(ptr, &w, &h); 498 lcd_getstringsize(ptr, &w, &h);
474 lcd_putsxy(0, LCD_HEIGHT/2-h, ptr); 499 lcd_putsxy(0, LCD_HEIGHT/2-h, ptr);
475 lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward], 500 lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward],
@@ -480,25 +505,25 @@ bool f3_rec_screen(void)
480 switch (button_get(true)) { 505 switch (button_get(true)) {
481 case BUTTON_LEFT: 506 case BUTTON_LEFT:
482 case BUTTON_F3 | BUTTON_LEFT: 507 case BUTTON_F3 | BUTTON_LEFT:
483 recording_source++; 508 global_settings.rec_source++;
484 if(recording_source > 2) 509 if(global_settings.rec_source > 2)
485 recording_source = 0; 510 global_settings.rec_source = 0;
486 used = true; 511 used = true;
487 break; 512 break;
488 513
489 case BUTTON_DOWN: 514 case BUTTON_DOWN:
490 case BUTTON_F3 | BUTTON_DOWN: 515 case BUTTON_F3 | BUTTON_DOWN:
491 recording_frequency++; 516 global_settings.rec_frequency++;
492 if(recording_frequency > 5) 517 if(global_settings.rec_frequency > 5)
493 recording_frequency = 0; 518 global_settings.rec_frequency = 0;
494 used = true; 519 used = true;
495 break; 520 break;
496 521
497 case BUTTON_RIGHT: 522 case BUTTON_RIGHT:
498 case BUTTON_F3 | BUTTON_RIGHT: 523 case BUTTON_F3 | BUTTON_RIGHT:
499 recording_channel_mode++; 524 global_settings.rec_channels++;
500 if(recording_channel_mode > 1) 525 if(global_settings.rec_channels > 1)
501 recording_channel_mode = 0; 526 global_settings.rec_channels = 0;
502 used = true; 527 used = true;
503 break; 528 break;
504 529
@@ -518,10 +543,14 @@ bool f3_rec_screen(void)
518 } 543 }
519 } 544 }
520 545
521 mpeg_set_recording_options(recording_frequency, recording_quality, 546 mpeg_set_recording_options(global_settings.rec_frequency,
522 recording_source, recording_channel_mode); 547 global_settings.rec_quality,
548 global_settings.rec_source,
549 global_settings.rec_channels);
523 550
524// settings_save(); 551 set_gain();
552
553 settings_save();
525 lcd_setfont(FONT_UI); 554 lcd_setfont(FONT_UI);
526 555
527 return false; 556 return false;