From 65e6b032af5e533ff032b6e650948d116eecd3dc Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Thu, 26 Mar 2026 21:26:39 +0000 Subject: [PATCH] Add images for spectrum controls display setting. --- doc/img/Spectrum_Controls_All.png | Bin 0 -> 32058 bytes doc/img/Spectrum_Controls_Minimum.png | Bin 0 -> 6253 bytes doc/img/Spectrum_Controls_Standard.png | Bin 0 -> 21943 bytes .../spectrum.md | 552 ++++++++++++++++++ 4 files changed, 552 insertions(+) create mode 100644 doc/img/Spectrum_Controls_All.png create mode 100644 doc/img/Spectrum_Controls_Minimum.png create mode 100644 doc/img/Spectrum_Controls_Standard.png create mode 100644 enc_temp_folder/234d6d7d6f89bfffb47685c26168e93f/spectrum.md diff --git a/doc/img/Spectrum_Controls_All.png b/doc/img/Spectrum_Controls_All.png new file mode 100644 index 0000000000000000000000000000000000000000..7fc4d8235759900c6db357cb2c6339f1038c854a GIT binary patch literal 32058 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 literal 0 HcmV?d00001 diff --git a/doc/img/Spectrum_Controls_Standard.png b/doc/img/Spectrum_Controls_Standard.png new file mode 100644 index 0000000000000000000000000000000000000000..7f998537419589a260fabfd79d21a2c9882a1d8f GIT binary patch literal 21943 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 literal 0 HcmV?d00001 diff --git a/enc_temp_folder/234d6d7d6f89bfffb47685c26168e93f/spectrum.md b/enc_temp_folder/234d6d7d6f89bfffb47685c26168e93f/spectrum.md new file mode 100644 index 000000000..035f45573 --- /dev/null +++ b/enc_temp_folder/234d6d7d6f89bfffb47685c26168e93f/spectrum.md @@ -0,0 +1,552 @@ +

Spectrum component

+ +This page details the spectrum component that takes part of the main spectrum display and is also used in some channel and feature plugins. + +For example: + - Channel Analyzer + - Demod Analyzer + - Interferometer + - Broadcast FM demodulator + - ChirpChat (LoRa) demodulator + - File sink + - FreeDV demodulator and modulator + - Frequency tracker + - SigMF file sink + - SSB demodulator and modulator + - UDP source and sink + +It comprises the spectrum display itself and the controls generally placed at the bottom of the spectrum display + +

A. Spectrum display

+ +

Status line

+ +![Spectrum Status](../../doc/img/Spectrum_Status.png) + +A status line is displayed at the left of the top margin. It displays the following items from left to right: + + - if frequency zooming is active the zooming factor + - `CF:` followed by the Center Frequency of the displayed spectrum possibly with multiplier suffix (G, M, k) + - `SP:` followed by the frequency SPan of the displayed spectrum possibly with multiplier suffix (M, k) + - `RBW:` followed by the RBW (Resolution BandWidth) of the displayed spectrum possibly with multiplier suffix (k). This is optional and must be enabled in the Spectrum Display Settings dialog. + - `Cur:` followed by the power in dB and frequency under the cursor. This is optional and must be enabled in the Spectrum Display Settings dialog. + - `Pk:` followed by the power in dB and frequency of the highest peak in the displayed spectrum. This is optional and must be enabled in the Spectrum Display Settings dialog. + +

Spectrum markers

+ +![Spectrum Markers](../../doc/img/Spectrum_Markers.png) + +Note that spectrum markers appear only when spectrum display is active (shows data) + +The spectrum markers can be set either with the mouse as explained next or with the [spectrum markers dialog](spectrummarkers.md) that can be opened with the markers button (B.4.3). + +Use Shift and mouse left click to set a new marker. There is a maximum of two markers with a different status: + - The first marker will display frequency (2) and power (1) or time (5) on the scale side of the view. Frequency units are the same as displayed in the frequency scale. + - The second marker will display frequency difference (3 or 6) and power difference (4) or time difference (7) from the first marker on the opposite side of the scales. Difference values may be suffixed with a multiplier character. + +Base units are Hz for frequency difference and seconds for time. Power is expressed either in dB or plain value depending on the linear or log setting for the spectrum display. + +Values may be suffixed by a multiplier character: + - **p**: pico (times 1e-12) + - **n**: nano (times 1e-9) + - **u**: micro (times 1e-6) + - **m**: milli (times 1e-3) + - no character: no change (times one) + - **k**: kilo (times 1e3) + - **M**: mega (times 1e6) + - **G**: giga (times 1e9) + +Use mouse right click anywhere in the view to remove the last entered marker. Use shift and mouse right click to remove all markers. + +

Spectrum measurements

+ +When activated in the spectrum measurements dialog (B.6.5) the measured values are displayed along with the spectrum. The measurements table can be displayed on the left, right, top or bottom of the spectrum view. You can use the splitter handle to arrange the partition between table and spectrum view. Details on the available measurements are discussed in the [Spectrum measurement control dialog](spectrummeasurements.md) documentation. + +![Spectrum Measurements](../../doc/img/Spectrum_Measurements.png) + +

Mouse scroll wheel

+ +![Spectrum Mousewheel](../../doc/img/MainWindow_spectrum_mousewheel.png) + +

A: Channel moving

+ +When the mouse is over the center line of a channel: + + - scrolling will move the channel by +/- 10 Hz at each scroll up/down respectively + - combined with Ctrl it will move the channel by +/- 100 Hz + - combined with Shift it will move the channel by +/- 1 kHz + +

B: Frequency zooming

+ +When the mouse is in the spectrum or waterfall area but not over the center line of a channel it will zoom in/out along X (frequency) axis by a 0.5 step at each scroll up/down respectively between 1x (no zoom) and 10x. Note that in order to zoom on the center line of a channel you may move the mouse pointer in the top margin (center line moving is not active there but zooming is). + +When frequency zooming is active use Alt + left click to move the center frequency to the clicked point. + +

C: Power zooming

+ +When the mouse is inside the power scale (spectrum) the power range is decreased by 2 (zoom in) or increased by 2 (zoom in) at each wheel step forward or backward respectively. The behavior of the reference level depends on where in the scale is the mouse pointer: + + - in the top third: the reference level is maintained thus the reference level at the top stays the same + - in the middle third: the reference level is decreased by 1 (zoom in) or increased by 1 (zoom out) at each wheel step forward or backward thus the level in the middle stays the same + - in the bottom third: the reference level is decreased by 2 (zoom in) or increased by 2 (zoom out) at each wheel step forward or backward thus the level at the bottom stays the same + +

D: Time zooming

+ +When the mouse is inside the time scale (waterfall) the overlap is increased by 1 (zoom in) or decreased by 1 (zoom out) at each wheel step forward or backward respectively. Overlap is bounded by 0 and half of the FFT size minus one. + +

B. Spectrum controls

+ +Not all controls are visible by default. See B.7.8 for how to select which controls are visible. + +Controls are organized in 7 blocks arranged in a flow layout so that the size of the control area can adapt to the width of the spectrum arranging the blocks from 5 to 1 line as the spectrum widens. The buttons and various controls in each block remain at the same place. + +Narrow (5 lines): + +![Spectrum GUI](../../doc/img/MainWindow_spectrum_gui_narrow.png) + +Wide (1 line): + +![Spectrum GUI](../../doc/img/MainWindow_spectrum_gui_wide.png) + +The 7 blocks are detailed next: + +![Spectrum GUI](../../doc/img/MainWindow_spectrum_gui.png) + +

B.1: Grid phosphor and max controls (histogram) - block #1

+ +![Spectrum GUI A](../../doc/img/MainWindow_spectrum_gui_A.png) + +

B.1.1: Grid

+ +Toggles the grid display + +

B.1.2: Grid intensity

+ +Controls the intensity of the grid display + +

B.1.3: Truncate frequency scale upper digits

+ +If possible truncate the non significant upper digits on frequency scale. This is useful when the bandwidth is much smaller than the center frequency. For example if center frequency is 1.00001 GHz and bandwidth is 15.625 kHz this results in 3 ticks being displayed with "1.0000" prefixing all values: + +![Spectrum GUI A Fscale 1](../../doc/img/MainWindow_spectrum_gui_A_fscale1.png) + +When truncation is engaged 1 GHz will be subtracted from all values resulting in a more readable scale with more definition: + +![Spectrum GUI A Fscale 2](../../doc/img/MainWindow_spectrum_gui_A_fscale2.png) + +A leading tick marks the fact that upper digits have been truncated and values are suffixed with the multiplier character (k, M, G) for better readability. + +Note that resolution depends on which boundaries are crossed within the bandwidth and sometimes truncation is not possible (in the example if 1 GHz falls within range) resulting in no change in scale display. + +

B.1.4: Reset spectrum histogram

+ +This resets the maximum spectrum trace and phosphor remanence + +

B.1.5: Phosphor display

+ +Toggles the phosphor display on the spectrum + +

B.1.6: Maximum hold trace

+ +Toggles the maximum hold trace display (red trace) on the spectrum + +

B.1.7: Phosphor display stroke and max hold decay

+ +This controls the decay rate of the stroke when phosphor display is engaged (B.1.5). The histogram pixel value is diminished by this value each time a new FFT is produced. A value of zero means no decay and thus phosphor history and max hold (red line) will be kept until the clear button (B.1.4) is pressed. + +

B.1.8: Phosphor display stroke and max hold decay divisor

+ +When phosphor display is engaged (B.1.5) and stroke decay is 1 (B.1.7) this divides the unit decay by this value by diminishing histogram pixel value by one each time a number of FFTs equal to this number have been produced. Thus the actual decay rate is 1 over this value. This allow setting a slower decay rate than one unit for each new FFT. + +

B.1.9: Phosphor display stroke strength

+ +This controls the stroke strength when phosphor display is engaged (B.1.5). The histogram value is incremented by this value at each new FFT until the maximum (red) is reached. + +

B.2: Spectrum display controls - block #2

+ +![Spectrum GUI A](../../doc/img/MainWindow_spectrum_gui_B.png) + +

B.2.1: Current trace with line style

+ +Toggles the current trace display as a yellow line on the spectrum + +

B.2.2: Current trace with fill style

+ +Toggles the current trace display as a yellow line on the spectrum with the surface below the line filled with yellow color + +

B.2.3: Current trace with gradient style

+ +Toggles the current trace display as a white line on the spectrum with the surface below the line filled with a gradient of colors corresponding to the color map (B.2.5) + +

B.2.4: Trace intensity

+ +This controls the intensity of the maximum (B.1.5) and current (B.2.1-3) spectrum lines + +

B.2.5: Color Map

+ +This dropdown allows the selection of a number of pre-defined color maps that are used for rendering the gradient filling of spectrum, the 2D waterfall and the 3D Spectrogram. 'Angel' is the default SDRangel color map that was the unique color map until v7.4. + +

B.3: Waterfall and 3D spectrogram controls - block #3

+ +![Spectrum GUI C](../../doc/img/MainWindow_spectrum_gui_C.png) + +

B.3.1: Waterfall/spectrum placement

+ +Toggles the spectrum on bottom (off) or on top (on) versus waterfall/spectrogram. It changes the direction of flow of the waterfall or spectrogram so that it always goes from the spectrum side to the opposite side. + +

B.3.2: Waterfall (2D)

+ +Toggles the waterfall display + +

B.3.3: 3D Spectrogram

+ +Toggles the 3D spectrogram display. Controls inside the spectrogram window are described at the bottom of this page + +

B.3.4: 3D spectrogram style

+ +This control is only visible when the 3D Spectrogram is being displayed. + +This dropdown determines how the 3D Spectrogram data is rendered. + + - **Points**: The data are rendered as points. + - **Lines**: The data points are connected by lines. + - **Solid**: The data are rendered as a solid surface with constant illumination. + - **Outline**: The data are rendered as a solid surface with outlines of the polygons highlighted. + - **Shaded**: The data are rendered as a solid surface with a combination of ambient and diffuse lighting. This requires OpenGL 3.3 or greater. + +

B.4: Spectrum FFT controls - block #4

+ +![Spectrum GUI D](../../doc/img/MainWindow_spectrum_gui_D.png) + + +

B.4.1. FFT window selector

+ +Use this combo box to select which window is applied to the FFT: + - **Bart**: Bartlett + - **B-H**: 4 term Blackman-Harris + - **FT**: Flat top + - **Ham**: Hamming + - **Han**: Hanning (default) + - **Rec**: Rectangular (no window) + - **Kai**: Kaiser with alpha = 2.15 (beta = 6.76) gives sidelobes < -70dB + - **Blackman**: Blackman (3 term) + - **B-H7**: 7 term Blackman-Harris + +

B.4.2. FFT size

+ +Select the size of the FFT window among these values: + - 64 + - 128 + - 256 + - 512 + - 1k = 1024 (default) + - 2k = 2048 + - 4k = 4096 + - 8k = 8192 + - 16k = 16384 + - 32k = 32768 + +

B.4.3: FFT Overlap

+ +FFT Overlap in number of samples over half of the FFT size. The percentage of overlap appears in the tooltip. Ranges from 0 (no overlap) to half the FFT size minus one (maximum overlap). + +Example with a FFT of 1k (1024) and an overlap of 128 the overlap percentage is 128 ÷ 512 = 25% + +

B.4.4: Averaging mode

+ +Use this combo to select which averaging mode is applied: + - **No**: no averaging. Disables averaging regardless of the number of averaged samples (B.2.5). This is the default option + - **Mov**: moving average. This is a sliding average over the amount of samples specified next (B.2.5). There is one complete FFT line produced at every FFT sampling period + - **Fix**: fixed average. Average is done over the amount of samples specified next (B.2.5) and a result is produced at the end of the corresponding period then the next block of averaged samples is processed. There is one complete FFT line produced every FFT sampling period multiplied by the number of averaged samples (4.6). The time scale on the waterfall display is updated accordingly. + - **Max**: this is not an averaging but a max hold. It will retain the maximum value over the amount of samples specified next (B.2.5). Similarly to the fixed average a result is produced at the end of the corresponding period which results in slowing down the waterfall display. The point of this mode is to make outlying short bursts within the "averaging" period stand out. With averaging they would only cause a modest increase and could be missed out. + - **Min**: It will retain the minimum value over the amount of samples specified next (B.2.5). Similarly to the fixed average a result is produced at the end of the corresponding period which results in slowing down the waterfall display. This mode is useful to measure the noise floor by retaining the minimum value over the averaging period. + +

B.4.5: Number of averaged samples

+ +Each FFT bin (squared magnitude) is averaged or max'ed over a number of samples. This combo allows selecting the number of samples between these values: 1 (no averaging), 2, 5, 10, 20, 50, 100, 200, 500, 1k (1000) for all modes and in addition 2k, 5k, 10k, 20k, 50k, 1e5 (100000), 2e5, 5e5, 1M (1000000) for "fixed" and "max" modes. Averaging reduces the noise variance and can be used to better detect weak continuous signals. The fixed averaging mode allows long time monitoring on the waterfall. The max mode helps showing short bursts that may appear during the "averaging" period. + +The resulting spectrum refresh period appears in the tooltip taking sample rate, FFT size (B.2.2), average size (B.2.5) and overlap (B.2.3) into consideration. Averaging size adjustment is valid for fixed average and max modes only: + +Period = ((((FFT_size ÷ 2) - overlap) × 2) ÷ sample_rate) × averaging_size + +

B.4.6:Math mode

+ +Use this combo to select which mathematical operation is applied to the spectrum: + - **No**: no math operation. + - **x-μ**: difference between current spectrum and a moving average. + - **x-μ dB**: difference between current spectrum and a moving average after values are converted to dB (so x/μ). + - **x-μ+∧μ dB**: difference between current spectrum and a moving average after values are converted to dB (so x/μ) and then adding the average back in dB (∧μ) to keep the overall level of the spectrum. This is useful to make outlying short bursts within the "averaging" period stand out while keeping the overall level of the spectrum unchanged. With "x-μ dB" the resulting spectrum would be centered around zero which may not be desirable. + - **x-μ dB**: absolute value of difference between current spectrum and a moving average after values are converted to dB (so |x/μ|). + - **x-M1**: difference between current spectrum and the spectrum stored in memory M1. + - **x-M1 dB**: difference between current spectrum and the spectrum stored in memory M1 after values are converted to dB (so x/M1). + - **|x-M1| dB**: absolute value of difference between current spectrum and the spectrum stored in memory M1 after values are converted to dB (so |x/M1|). + - **x-M2**: difference between current spectrum and the spectrum stored in memory M2. + - **x-M2 dB**: difference between current spectrum and the spectrum stored in memory M2 after values are converted to dB (so x/M1). + - **|x-M2| dB**: absolute value of difference between current spectrum and the spectrum stored in memory M1 after values are converted to dB (so |x/M1|). + +

B.4.7: Math moving average length

+ +When the math mode (B.4.6) is set to a mode that requires a moving average (x-μ, x-μ dB, x-μ+∧μ dB, |x-μ| dB) this combo allows selecting the number of samples for the moving average. +One of the predefined values can be selected or a user-defined value can be entered between 2 and 1M. + +

B.5: Spectrum display controls - block #5

+ +![Spectrum GUI E](../../doc/img/MainWindow_spectrum_gui_E.png) + + +

B.5.1: Autoscale

+ +Scales spectrum by setting reference level and range automatically based on maximum and minimum levels. Takes the average of FFT size ÷ 32 minima for the minimum and 10 dB over maximum for the maximum. + +

B.5.2: Reference level

+ +This is the level in dB at the top of the display range. You can select values between 0 and -110 in 1 dB steps + +

B.5.3: Range

+ +This is the range of display in dB. You can select values between 1 and 100 in 1 dB steps + +

B.5.4: FPS capping

+ +The refresh rate of the spectrum is capped by this value in FPS i.e. the refresh period in seconds is 1 ÷ FPS. The default value is 20 and corresponds to general usage. You may use a lower value to limit GPU usage and power consumption. You may also use a higher value for an even more reactive display. "NL" corresponds to "No Limit". With "No Limit" the spectrum update will be triggered immediately when a new FFT is calculated. Note that actual refresh rate will be limited by other factors related to hardware and graphics drivers. + +The refresh period is limited anyway by the FFT period which is the FFT size divided by the baseband sampling rate and multiplied by the fixed average or max size (3A.5) in case these features are engaged (3A.4). Setting a resulting FFT refresh time above the refresh rate will make sure that a short burst is not missed particularly when using the max mode. + +Example with a FFT size of 1k (1024) and no overlap, a baseband rate of 48 kS/s and an averaging size of 5 the refresh period is: + +(1024 ÷ 48000) × 5 ≈ 107 ms + +Thus if the FPS capping is 20 (50 ms) the refresh period will be in fact 107 ms (≈ 9 FPS) anyway. + +

B.5.5: Logarithmic/linear scale

+ +Use this toggle button to switch between spectrum logarithmic and linear scale display. The face of the button will change to represent either a logarithmic or linear curve. + +When in linear mode the range control (B.3.3) has no effect because the actual range is between 0 and the reference level. The reference level in dB (B.3.2) still applies but is translated to a linear value e.g -40 dB is 1e-4. In linear mode the scale numbers are formatted using scientific notation so that they always occupy the same space. + +

B.6: Spectrum memory controls - block #6

+ +![Spectrum GUI E](../../doc/img/MainWindow_spectrum_gui_F.png) + + +

B.6.1: Memory 1

+ +Left clicking M1 toggles display of the spectrum stored in memory M1. + +Right clicking M1 displays a menu with the following options: + - **Clear M1**: clears the spectrum stored in memory M1. + - **Set M1 to current spectrum**: stores the current spectrum in memory M1. + - **Set M1 to moving average**: stores the moving average in memory M1. This option is only available when the Math mode (B.4.6) is set to a mode that uses the moving average. + - **Add offset to M1**: displays a dialog that allows the user to enter a value that will be added to each value in M1. This allows the spectrum to be moved up or down. + - **Smooth M1**: smooths the values in M1. Values are set to the average of the neighbouring 5 samples. This can be applied repeatedly to further smooth the spectrum. + - **Set M1 to M1+M2**: adds M1 to M2, storing the result in M1. + - **Set M1 to M1-M2**: subtracts M2 from M1, storing the result in M1. + - **Load M1 from .csv**: loads M1 from a .csv file. The .csv should have a single column named Power, with FFT size rows. + - **Save M1 to .csv**: saves M1 to a .csv file. + +Colour and label for the M1 spectrum can be set in the Spectrum Display Settings dialog. + +

B.6.2: Memory 2

+ +Left clicking M2 toggles display of the spectrum stored in memory M2. + +Right clicking M2 display a menu as described above for M1. + +

B.6.3: Load spectrum to CSV file

+ +Click to specify the name of a .csv file that will be loaded to the current spectrum or spectrum scroll buffer. + +

B.6.4: Save spectrum to CSV file

+ +Click to specify the name of a .csv file that will have the current spectrum or spectrum scroll buffer saved to. + +

B.6.5: Save spectrum/waterfall to image file

+ +Click to specify the name of a .png or .jpg file to save the current display (spectrum and waterfall) to. + +

B.7: Spectrum miscellaneous controls - block #7

+ +![Spectrum GUI F](../../doc/img/MainWindow_spectrum_gui_G.png) + + +

B.7.1: Play/Pause spectrum

+ +Use this button to freeze the spectrum update. Useful when making measurements with the markers. + +

B.7.2: Spectrum server control

+ +A websockets based server can be used to send spectrum data to clients. An example of such client can be found in the [SDRangelSpectrum](https://github.com/f4exb/sdrangelspectrum) project. + + - Left button: toggles server on/off + - Right button: opens a secondary dialog that lets you choose the server listening (local) address and port. + +The server only sends data. Control including FFT details is done via the REST API. FFT frames are formatted as follows (in bytes): + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OffsetLengthValue
08Center frequency in Hz as 64 bit integer
88Effective FFT time in milliseconds as 64 bit integer
168Unix timestamp in milliseconds as 64 bit integer
244FFT size as 32 bit integer
284FFT bandwidth in Hz as 32 bit integer
324 + Indicators as 32 bit integer LSB to MSB: +
    +
  • bit 0: Linear (1) / log (0) spectrum indicator
  • +
  • bit 1: SSB (1) / DSB (0) spectrum indicator
  • +
  • bit 2: USB (1) / LSB (0) spectrum indicator
  • +
+
36N*4Vector of N = FFT size 32 bit floating point spectrum power values either log (dB) or linear
+ +

B.7.3: Spectrum markers dialog

+ +Opens the [spectrum markers dialog](spectrummarkers.md) + +

B.7.4: Spectrum measurements dialog

+ +Opens the [Spectrum measurement control dialog](spectrummeasurements.md) Check this link for details on the available measurements. + +

B.7.5: Spectrum calibration

+ +Use the toggle button to switch between relative and calibrated power readings. + +Right click to open the [calibration management dialog](spectrumcalibration.md) + +

B.7.6: Spectrum Display Settings dialog

+ +Click to open the Spectrum Display Settings dialog. See below. + +

B.7.7: Spectrum controls display

+ +Selects which of these spectrum controls are displayed. This allows a user to hide less frequently used controls. + + - **Min**: displays a minimum set of controls. + - **Std**: displays the standard set of controls. + - **All**: displays all controls. + +

B.7.8: Go to annotation marker

+ +This combo only appears if the spectrum display is the spectrum of a device (i.e. main spectrum) and if there are visible annotation markers. It allows to set the device center frequency to the frequency of the selected annotation marker. + +

C. Spectrum Display Settings dialog

+ +The Spectrum Display Settings dialog contains settings that do not have dedicated controls below the spectrum. + +![Spectrum Display Settings dialog](../../doc/img/Spectrum_Display_Settings.png) + +

C.1: Waterfall Scrolling

+ +When enabled, a scroll bar will be displayed on the right hand side of the spectrum and spectra will be stored in memory that can be larger than the displayed waterfall. +The scroll bar can then be used to scroll through and display any spectra in memory. The number of spectra that can be stored in memory can be set via the Length (Spectra) field. +The amount of RAM required and total time duration of all spectra are displayed underneath. + +

C.2: Waterfall Axis

+ +

C.2.1: Time units

+ +Specifies what units will be used for the vertical time axis for the waterfall. + + - **Time offset**: displays a time offset. + - **Local time**: displays local time. Only available when Waterfall Scrolling is enabled. + - **UTC time**: displays UTC time. Only available when Waterfall Scrolling is enabled. + +

C.2.2: Time format

+ +When local time or UTC time is used for the time axis, the Time format field species how that time will be formatted. The default is hh:mm:ss. Other examples include: + + - **dd.MM.yyyy** - 21.05.2001 + - **ddd MMMM d yy** - Tue May 21 01 + - **hh:mm:ss.zzz** - 14:13:09.120 + - **hh:mm:ss.z** - 14:13:09.12 + - **h:m:s ap** - 2:13:9 pm + +

C.3: Status Line

+ +Allows customizing which information is displayed in the status line. + +

C.3.1: Display RBW

+ +When checked, the Resolution Bandwidth (RBW) will be displayed in the status line. + +

C.3.2: Display power/frequency under cursor

+ +When checked, the power and frequency of the FFT bin under the cursor will be displayed in the status line. + +

C.3.3: Display peak power/frequency

+ +When checked, the power and frequency of the highest peak will be displayed in the status line. + +

C.4: Spectrum

+ +

C.4.1: Colour

+ +Specifies the color to draw the spectrum when line (B.2.1) or fill (B.2.2) style is selected. + +

C.5: Spectrum Memories

+ +

C.5.1: Memory

+ +Selects which memory settings will be displayed for (M1 or M2). + +

C.5.2: Label

+ +Specifies a text label that will be displayed to the left hand side of the spectrum held in the memory. + +

C.5.3: Color

+ +Specifies the color to draw the spectrum held in the memory. + +

3D Spectrogram Controls

+ +![3D Spectrogram](../../doc/img/MainWindow_3D_spectrogram.png) + +The 3D Spectrogram view can be controlled by mouse/trackpad: + + - Left button: Rotate + - Middle button: Pan + - Right button: Scale Z axis (power) + - Wheel/pinch: Zoom + +Or keyboard: + + - Arrow: Rotate + - CTRL Arrow: Pan + - '+'/'-': Zoom + - CTRL '+'/'-': Scale Z axis (power) + - 'r': Reset view to default + - 'f': Flat view (top down)