Changes in version 1.8.0 (2026-04-22) - Added the option of a moving cursor showing the current position in the sound file when using talking_praatpicture(). - The various *_highlight arguments now accept nested lists, so that different parts of plots can be highlighted with different parameters. (Thanks to Josie Riverin-Coutlée for pointing out weird behavior in previous versions when trying to do this!) Changes in version 1.7.2 - The line widths and number of axis digits can now be specified on a per-channel basis for multi-channel files. Thanks to Matt Faytak for the suggestion! Changes in version 1.7.1 - Fixed bug whereby Praat .Pitch, .PitchTier, .Formant, and .IntensityTier files could not be read unless they were saved with UTF-8 encoding. Changes in version 1.7.0 (2025-12-08) - Added the spec_scale argument to praatpicture(), and the scale argument to draw_spectralslice(). This allows for using different frequency scales in addition to (linear) Hertz, viz. erb, mel, and log. For this reason, the spec_freqRange and spec_axisLabel arguments of praatpicture() and equivalent arguments of draw_spectralslice() now have dynamic defaults based on the value of spec_scale or scale. - Fixed error that made it impossible to plot derived signal data for multi-channel sound files without plotting the waveform. This fixes [https://github.com/rpuggaardrode/praatpicture/issues/13#issue-3651921917]. - It is now possible to plot only the first formant. Fixes [https://github.com/rpuggaardrode/praatpicture/issues/12]. - The energy range of waveforms can now be specified on a per-channel basis for multi-channel files. Thanks to James Kirby for the suggestion! [https://github.com/rpuggaardrode/praatpicture/issues/11]. Changes in version 1.6.2 (2025-08-25) - praatpicture() has a new argument wave_energyRange for controlling the y-axis range of waveform(s). The default behavior of determining the range dynamically from the minima and maxima of each wave is not changed. - Some leftover debugging code was removed from pitch_overlay(). Changes in version 1.6.1 - The dynamicRange argument of draw_spectralslice() was swapped for a more general energyRange argument. By default this is a single numeric 60 which is interpreted as a dynamic range of 60 dB/Hz, but if a vector of two numbers is passed, it is interpreted as a concrete y-axis range. Changes in version 1.6.0 - Added a new stand-alone function draw_spectralslice() for plotting spectral slices from a (window around a) time point of a sound file. The function is flexible in terms of signal processing (spectral estimation method, window size and shape) and presentation. Similar highlighting options are available as in praatpicture() and sister functions. Changes in version 1.5.0 (2025-07-11) - Added arguments pitch_plotOnWave and intensity_plotOnWave for overlaying pitch and intensity on waveforms, analogous to the pitch_plotOnSpec and intensity_plotOnSpec arguments. Since the code required for this is very similar for spectrograms and waveforms, I did some refactoring to avoid repeating code. (Thanks to Janne Lorenzen for the suggestion!) - Added Shiny support for waveform overlays and for controlling the y-axis digits in waveforms. - Long overdue updates to some of the documentation. Changes in version 1.4.4 - Added argument wave_axisDigits to determine how many digits should be used for the waveform y-axis when min_max_only = TRUE. Passing 0 will suppress the y-axis. (Thanks to Josie Riverin-Coutlée for the suggestion!) Changes in version 1.4.3 (2025-05-13) - Fixed bug that broke TextGrid-delimited highlighting Changes in version 1.4.2 (2025-04-02) - Added Shiny support for background highlighting. Changes in version 1.4.1 - Added support for a background argument in the *_highlight arguments. - Added tg_edgeLabels argument for controlling the behavior of TextGrid intervals what fall partially outside of the plotting area. - Fixed a bug with the *_highlight arguments leading to crashes when there were TextGrid matches outside the plotting area. Changes in version 1.4.0 (2025-01-14) - Added a range of arguments to praatpicture() and sister functions for differential highlighting of signals with colors, line width, point size to stand out from the rest of the plot. These are highlight (for all signals), wave_highlight, spec_highlight, tg_highlight, pitch_highlight, formant_highlight, and intensity_highlight. These should be named list()s with information about which part of the signal to highlight, using either start or end arguments, or using tier and label arguments if highlighting is based on information in a TextGrid. Other possible arguments are color, drawSize, and speckleSize, which work in the usual way. Shiny support has been added, but is somewhat simplified. Changes in version 1.3.1 - Fix to emupicture(). In previous versions, all annotation levels were converted to a TextGrid, which could have unfortunate side effects if some levels have no time information. Changed so that when the tg_tiers argument is set, only those annotation levels are exported. Changes in version 1.3.0 (2024-10-14) - Added the drawSize and speckleSize arguments, which respectively control the line widths of plot components where the _plotType is 'draw' and the point sizes of plot components where the _plotType is 'speckle'. - Added the wave_lineWidth argument which controls the line width of the waveform. - Added the tUnit argument for controlling the time unit printed along the x-axis. The default is still time in seconds, but when tUnit = 'ms', the time unit is milliseconds. The time_axisLabel argument will by default reflect the unit specified in tUnit, but the axis label can still be controlled by the user. - Added the formant_number argument which determines the number of formants to include in a plot (independently of formant_maxN, which determines the number of formants to track if no .Formant file is provided). By default, all available formants are plotted. - Added the mainTitleAlignment argument which controls the vertical alignment of the plot title. - Added support for all the above features in shiny_praatpicture() - Fixed a bug that made it impossible to plot 24-bit WAV files. Changes in version 1.2.4 - Added the option to plot read and plot Pitch files with the .Pitch extension generated in R in addition to PitchTier files with the .PitchTier extension. If a .Pitch file is available with the same base name as the plotted sound file, this is now by default used to when plotting pitch unless a .PitchTier file is also available. Plotting a .Pitch file is likely somewhat slower than plotting a .PitchTier file, but they are simpler to generate and this fixes the bug where plotting .PitchTier files with pitch_plotType = 'draw' would linearly extrapolate pitch in unvoiced regions. Changes in version 1.2.3 - Added Blackman as a possible option to spec_windowShape. Blackman windows were already available in phonTools::windowfunc() which is used to generate windows for spectrogram estimation. These weren't originally used by praatpicture() as they're not implemented in Praat, but I decided to add them because the Gaussian windows used by phonTools::windowfunc() don't behave the same as Praat. If you the spectrogram of a simple sine wave using the Gaussian windows, sidelobes (horizontal lines) are clearly visible in the spectrogram; these are artefacts of the windowing and should theoretically not be there when using Gaussian windows (at least according to the Praat documentation), but for some reason they are. - Increased the upload limit for the Shiny server to approx 50 MB. Changes in version 1.2.2 - Added talking argument to emupicture(), allowing users to make talking_praatpicture() plots with embedded audio directly from an EMU database. Changes in version 1.2.1 - Fixed color issue when plotting point tiers in tgplot(). Changes in version 1.2.0 (2024-05-22) - Shiny support has been added with the shiny_praatpicture() function. - The proportion argument no longer has to add up to 100. - Users can now specify the location of a .TextGrid file when plotting annotations. Changes in version 1.1.4 - It's now possible to change font sizes, text adjustment, alignment, etc. when using the annotate argument Changes in version 1.1.3 - Fixed bug that made it impossible to control which channel to highlight when plotting multiple channels and other frames Changes in version 1.1.2 - Added option to add a vector of strings to wave_color, for plotting different channels using different colors. Changes in version 1.1.1 - Fixed bug that made it impossible to control the lower frequency range of spectrograms. Changes in version 1.1.0 - Options added to draw straight lines (vertical, horizontal, or otherwise) on plot components with the draw_lines argument. This replaces the formant_dottedLines argument, but doesn't otherwise change the look of the default formant plot. - Background coloring can now be added to lines and speckles when any of the *_plotOnSpec options are TRUE. This is done by adding a vector of two strings to the *_color argument, e.g. pitch_color=c('blue','lightblue') for a blue pitch contour on a light blue background. For formant_color, which already allowed a vector of multiple strings, this creates a range of options: If you pass just two strings but are plotting >2 formants, e.g. c('black','white') all formants will be plotted in black on a white background. If you pass N formants + 1 string, the final color will be used as background for all formants. If you pass double the number of formants, the second half will be used for individual background colors. - Option added for both drawing and speckling formants and pitch in a single plot. Before *_plotType had to be either 'draw' or 'speckle', now also allows c('draw','speckle'). Changes in version 1.0.0 (2024-03-07) - On CRAN! Changes in version 0.6.1 - Initial CRAN submission.