Mercurial > hg > svcore
comparison base/AudioLevel.h @ 0:da6937383da8
initial import
author | Chris Cannam |
---|---|
date | Tue, 10 Jan 2006 16:33:16 +0000 |
parents | |
children | d86891498eef |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:da6937383da8 |
---|---|
1 /* -*- c-basic-offset: 4 -*- vi:set ts=8 sts=4 sw=4: */ | |
2 | |
3 /* | |
4 A waveform viewer and audio annotation editor. | |
5 Chris Cannam, Queen Mary University of London, 2005 | |
6 | |
7 This is experimental software. Not for distribution. | |
8 */ | |
9 | |
10 /* | |
11 This is a modified version of a source file from the | |
12 Rosegarden MIDI and audio sequencer and notation editor. | |
13 This file copyright 2000-2005 Chris Cannam. | |
14 */ | |
15 | |
16 #ifndef _AUDIO_LEVEL_H_ | |
17 #define _AUDIO_LEVEL_H_ | |
18 | |
19 /** | |
20 * AudioLevel converts audio sample levels between various scales: | |
21 * | |
22 * - dB values (-inf -> 0dB) | |
23 * - floating-point values (-1.0 -> 1.0) such as used for a | |
24 * multiplier for gain or in floating-point WAV files | |
25 * - integer values intended to correspond to pixels on a fader | |
26 * or vu level scale. | |
27 */ | |
28 | |
29 class AudioLevel | |
30 { | |
31 public: | |
32 | |
33 static const float DB_FLOOR; | |
34 | |
35 enum FaderType { | |
36 ShortFader = 0, // -40 -> +6 dB | |
37 LongFader = 1, // -70 -> +10 dB | |
38 IEC268Meter = 2, // -70 -> 0 dB | |
39 IEC268LongMeter = 3, // -70 -> +10 dB (0dB aligns with LongFader) | |
40 PreviewLevel = 4 | |
41 }; | |
42 | |
43 static float multiplier_to_dB(float multiplier); | |
44 static float dB_to_multiplier(float dB); | |
45 | |
46 static float fader_to_dB(int level, int maxLevel, FaderType type); | |
47 static int dB_to_fader(float dB, int maxFaderLevel, FaderType type); | |
48 | |
49 static float fader_to_multiplier(int level, int maxLevel, FaderType type); | |
50 static int multiplier_to_fader(float multiplier, int maxFaderLevel, | |
51 FaderType type); | |
52 | |
53 // fast if "levels" doesn't change often -- for audio segment previews | |
54 static int multiplier_to_preview(float multiplier, int levels); | |
55 static float preview_to_multiplier(int level, int levels); | |
56 }; | |
57 | |
58 | |
59 #endif | |
60 |