[med-svn] [Git][med-team/praat][master] 4 commits: New upstream version 6.0.47

Rafael Laboissiere gitlab at salsa.debian.org
Mon Feb 18 17:47:18 GMT 2019


Rafael Laboissiere pushed to branch master at Debian Med / praat


Commits:
f9abb34d by Rafael Laboissiere at 2019-02-17T12:23:38Z
New upstream version 6.0.47
- - - - -
7477d7f8 by Rafael Laboissiere at 2019-02-17T12:26:04Z
Merge tag 'upstream/6.0.47'

Upstream version 6.0.47

- - - - -
03abcc82 by Rafael Laboissiere at 2019-02-18T05:18:37Z
debian/What_s_new_.html: Update upstream ChangeLog

Gbp-Dch: Ignore

- - - - -
69e9f5c7 by Rafael Laboissiere at 2019-02-18T17:46:27Z
Changelog entry for version 6.0.47-1

Gbp-Dch: Ignore

- - - - -


15 changed files:

- debian/What_s_new_.html
- debian/changelog
- dwsys/NUM2.cpp
- dwtools/DTW.cpp
- dwtools/VowelEditor.cpp
- fon/Pitch.cpp
- fon/Pitch.h
- fon/Sound.cpp
- fon/manual_Script.cpp
- fon/manual_tutorials.cpp
- fon/praat_Fon.cpp
- sys/Ui.cpp
- sys/praat_objectMenus.cpp
- sys/praat_version.h
- + test/dwtools/CPPS.praat


Changes:

=====================================
debian/What_s_new_.html
=====================================
@@ -7,6 +7,12 @@ What's new?
 <p>
 Latest changes in Praat.</p>
 <p>
+<b>6.0.47</b> (8 February 2019)</p>
+<ul>
+<li>
+ Removed a bug introdu ed in 6.0.44 whereby a cepstral peak prominence would be computed incorrectly.
+</ul>
+<p>
 <b>6.0.46</b> (3 January 2019)</p>
 <ul>
 <li>
@@ -458,4 +464,179 @@ Latest changes in Praat.</p>
 <b>5.4.17</b> (20 August 2015)</p>
 <ul>
 <li>
- Scripting: removed a bug that could cause Praat to crash 
\ No newline at end of file
+ Scripting: removed a bug that could cause Praat to crash when calling <code>writeFile()</code> with an empty text.
+</ul>
+<p>
+<b>5.4.16</b> (16 August 2015)</p>
+<ul>
+<li>
+ Mac 64-bit: removed a bug by which graphical text passed over the right edge in TextGrid intervals.
+<li>
+ Mac 64-bit: removed a bug that allowed the general "Zoom" and "Close" commands to be accessible from a script.
+</ul>
+<p>
+<b>5.4.15</b> (1 August 2015)</p>
+<ul>
+<li>
+ Introduced several command line options that make it easier to call Praat from a web server.
+<li>
+ 64-bit Mac: removed a bug introduced in 5.4.11 that caused incorrect spacing of vertical text in picture files.
+</ul>
+<p>
+<b>5.4.14</b> (24 July 2015)</p>
+<ul>
+<li>
+ Windows and 32-bit Mac: removed a bug introduced in 5.4.12 that could cause weird behavior (even crashing) when pressing the Tab key in the script window or in the manual.
+</ul>
+<p>
+<b>5.4.13</b> (22 July 2015)</p>
+<ul>
+<li>
+ The Demo window can now save itself to a PNG or PDF file.
+<li>
+ Windows: removed a bug introduced in 5.4.10 whereby Praatcon would write garbled text to the console.
+</ul>
+<p>
+<b>5.4.12</b> (10 July 2015)</p>
+<ul>
+<li>
+ Windows: removed a bug introduced in 5.4.10 whereby SpeechSynthesizer would only pronounce the first letter of the text.
+</ul>
+<p>
+<b>5.4.11</b> (8 July 2015)</p>
+<ul>
+<li>
+ Windows: removed a bug introduced in 5.4.10 whereby the file selection window could try to open a file with a garbled name.
+<li>
+ Removed a bug whereby the PointProcess window would crash when showing a perfectly silent sound.
+</ul>
+<p>
+<b>5.4.10</b> (27 June 2015)</p>
+<ul>
+<li>
+ Removed a bug introduced in version 4.5.09 (January 2007) that caused incorrect upsampling of stereo sounds when the upsampling factor was exactly 2. This bug has caused incorrect playing of stereo sounds with a sampling frequency of 22050 Hz on the Mac since January 2015.
+<li>
+ Removed a bug introduced in 2011 that could cause Praat to crash when you scrolled the LongSound window.
+<li>
+ TextGrid: <b>Count intervals where...</b> and <b>Count points where...</b>.
+</ul>
+<p>
+<b>5.4.09</b> (1 June 2015)</p>
+<ul>
+<li>
+ Linux: the tab key can be used to play sounds on more computers.
+<li>
+ Windows: TextGrid files with non-BMP characters are now read correctly.
+<li>
+ Windows: files with names that contain non-BMP characters are now saved correctly.
+<li>
+ Updated manual.
+</ul>
+<p>
+<b>5.4.08</b> (24 March 2015)</p>
+<ul>
+<li>
+ Sound window: removed a bug that caused a crash in "Editor info".
+</ul>
+<p>
+<b>5.4.07</b> (22 March 2015)</p>
+<ul>
+<li>
+ TextGrid window: <b>Add interval</b> now does the same thing as <b>Add boundary</b> if a time stretch is selected.
+<li>
+ Linux: better redrawing in TextGrid window.
+</ul>
+<p>
+<b>5.4.06</b> (21 February 2015)</p>
+<ul>
+<li>
+ Windows: repaired a bug that could cause Praat to crash if a metafile resolution was 200 dpi.
+</ul>
+<p>
+<b>5.4.05</b> (13 February 2015)</p>
+<ul>
+<li>
+ Better support for big integer numbers on Windows XP.
+<li>
+ Sound window: guarded against empty view ranges for the intensity curve.
+</ul>
+<p>
+<b>5.4.04</b> (28 December 2014)</p>
+<ul>
+<li>
+ Windows audio playback: if the sound has more channels than the audio hardware, distribute them evenly.
+</ul>
+<p>
+<b>5.4.03</b> (18 December 2014)</p>
+<ul>
+<li>
+ TextGrid reading: Praat now corrects some incomplete TextGrid files created by others.
+<li>
+ Better support for text files larger than 2 GB.
+</ul>
+<p>
+<b>5.4.02</b> (26 November 2014)</p>
+<ul>
+<li>
+ Mac: repaired a bug by which quote characters typed into the script window could become curly instead of straight.
+</ul>
+<p>
+<b>5.4.01</b> (9 November 2014)</p>
+<ul>
+<li>
+ <a href="MelSpectrogram.html">MelSpectrogram</a>, <a href="BarkSpectrogram.html">BarkSpectrogram</a>.
+<li>
+ Linux: removed a bug that could cause too many flashes when scrolling a Sound window.
+<li>
+ Mac: repaired a bug that could cause a crash in the VowelEditor window.
+</ul>
+<h3>
+What used to be new?</h3>
+<ul>
+<li>
+ <a href="What_was_new_in_5_4_.html">What was new in 5.4?</a>
+<li>
+ <a href="What_was_new_in_5_3_.html">What was new in 5.3?</a>
+<li>
+ <a href="What_was_new_in_5_2_.html">What was new in 5.2?</a>
+<li>
+ <a href="What_was_new_in_5_1_.html">What was new in 5.1?</a>
+<li>
+ <a href="What_was_new_in_5_0_.html">What was new in 5.0?</a>
+<li>
+ <a href="What_was_new_in_4_6_.html">What was new in 4.6?</a>
+<li>
+ <a href="What_was_new_in_4_5_.html">What was new in 4.5?</a>
+<li>
+ <a href="What_was_new_in_4_4_.html">What was new in 4.4?</a>
+<li>
+ <a href="What_was_new_in_4_3_.html">What was new in 4.3?</a>
+<li>
+ <a href="What_was_new_in_4_2_.html">What was new in 4.2?</a>
+<li>
+ <a href="What_was_new_in_4_1_.html">What was new in 4.1?</a>
+<li>
+ <a href="What_was_new_in_4_0_.html">What was new in 4.0?</a>
+<li>
+ <a href="What_was_new_in_3_9_.html">What was new in 3.9?</a>
+<li>
+ <a href="What_was_new_in_3_8_.html">What was new in 3.8?</a>
+<li>
+ <a href="What_was_new_in_3_7_.html">What was new in 3.7?</a>
+<li>
+ <a href="What_was_new_in_3_6_.html">What was new in 3.6?</a>
+<li>
+ <a href="What_was_new_in_3_5_.html">What was new in 3.5?</a>
+<li>
+ <a href="What_was_new_in_3_3_.html">What was new in 3.3?</a>
+<li>
+ <a href="What_was_new_in_3_2_.html">What was new in 3.2?</a>
+<li>
+ <a href="What_was_new_in_3_1_.html">What was new in 3.1?</a>
+</ul>
+<hr>
+<address>
+	<p>© ppgb, February 8, 2019</p>
+</address>
+</body>
+</html>


=====================================
debian/changelog
=====================================
@@ -1,3 +1,9 @@
+praat (6.0.47-1) unstable; urgency=medium
+
+  * New upstream version 6.0.47
+
+ -- Rafael Laboissiere <rafael at debian.org>  Sun, 17 Feb 2019 15:45:54 -0300
+
 praat (6.0.46-4) unstable; urgency=medium
 
   * Fix FTCBFS


=====================================
dwsys/NUM2.cpp
=====================================
@@ -2032,7 +2032,7 @@ void NUMlineFit_theil (constVEC x, constVEC y, double *out_m, double *out_interc
 						mbs [++ index] = (y [j] - y [i]) / (x [j] - x [i]);
 			}
 			VECsort_inplace (mbs.part (1, numberOfCombinations));
-			m = NUMquantile (mbs.get(), 0.5);
+			m = NUMquantile (mbs.part (1, numberOfCombinations), 0.5);
 			for (integer i = 1; i <= x.size; i ++)
 				mbs [i] = y [i] - m * x [i];
 			VECsort_inplace (mbs.part (1, x.size));


=====================================
dwtools/DTW.cpp
=====================================
@@ -991,7 +991,7 @@ static void DTW_checkSlopeConstraints (DTW me, double band, int slope) {
         if (dtw_slope < 1.0)
             dtw_slope = 1.0 / dtw_slope;
 
-        Melder_require (dtw_slope <= slopes [slope], U"There is a conflict between the chosen slope constraint and the relative duration. The duration ratio of the integerest and the shortest object is ", dtw_slope, U". This implies that the largest slope in the constraint must have a value greater or equal to this ratio.");
+        Melder_require (dtw_slope <= slopes [slope], U"There is a conflict between the chosen slope constraint and the relative duration. The duration ratio of the longest and the shortest object is ", dtw_slope, U". This implies that the largest slope in the constraint must have a value greater or equal to this ratio.");
     } catch (MelderError) {
         Melder_throw (U"Slope constraints cannot be met.");
     }


=====================================
dwtools/VowelEditor.cpp
=====================================
@@ -1,6 +1,6 @@
 /* VowelEditor.cpp
  *
- * Copyright (C) 2008-2017 David Weenink, 2015,2017,2018 Paul Boersma
+ * Copyright (C) 2008-2019 David Weenink, 2015,2017,2018 Paul Boersma
  *
  * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -91,9 +91,6 @@ Thing_implement (VowelEditor, Editor, 0);
 #define BUFFER_SIZE_SEC 4
 #define SAMPLING_FREQUENCY 44100
 
-#define STATUSINFO_STARTINTR0 U"Start (F1,F2,F0) = ("
-#define STATUSINFO_ENDINTR0 U"End (F1,F2,F0) = ("
-#define STATUSINFO_ENDING U")"
 #define MICROSECPRECISION(x) (round((x)*1000000)/1000000)
 
 // To prevent the generation of inaudible short Sounds we set a minimum duration
@@ -981,8 +978,8 @@ static void menu_cb_showVowelMarksFromTableFile (VowelEditor me, EDITOR_ARGS_FOR
 }
 
 static void menu_cb_setF0 (VowelEditor me, EDITOR_ARGS_FORM) {
-	EDITOR_FORM (U"Set F0", nullptr);
-		POSITIVE (startF0, U"Start F0 (Hz)", U"150.0")
+	EDITOR_FORM (U"Set f0", nullptr);
+		POSITIVE (startF0, U"Start f0 (Hz)", U"150.0")
 		REAL (slope, U"Slope (oct/s)", U"0.0")
 	EDITOR_OK
 	EDITOR_DO
@@ -1139,13 +1136,13 @@ static void gui_drawingarea_cb_expose (VowelEditor me, GuiDrawingArea_ExposeEven
 		return;   // could be the case in the very beginning
 	Graphics_clearWs (my graphics.get());
 
-	appendF1F2F0 (& statusInfo, STATUSINFO_STARTINTR0, FormantTier_getValueAtTime (ft, 1, ts),
-		FormantTier_getValueAtTime (ft, 2, ts), getF0 (& my f0, ts), STATUSINFO_ENDING);
+	appendF1F2F0 (& statusInfo, U"Start (F1,F2,f0) = (", FormantTier_getValueAtTime (ft, 1, ts),
+		FormantTier_getValueAtTime (ft, 2, ts), getF0 (& my f0, ts), U")");
 	GuiLabel_setText (my startInfo, statusInfo.string);
 	MelderString_empty (& statusInfo);
 
-	appendF1F2F0 (& statusInfo, STATUSINFO_ENDINTR0, FormantTier_getValueAtTime (ft, 1, te),
-		FormantTier_getValueAtTime (ft, 2, te), getF0 (& my f0, te), STATUSINFO_ENDING);
+	appendF1F2F0 (& statusInfo, U"End (F1,F2,f0) = (", FormantTier_getValueAtTime (ft, 1, te),
+		FormantTier_getValueAtTime (ft, 2, te), getF0 (& my f0, te), U")");
 	GuiLabel_setText (my endInfo, statusInfo.string);
 	MelderString_empty (& statusInfo);
 
@@ -1313,7 +1310,7 @@ void structVowelEditor :: v_createMenus () {
 	Editor_addCommand (this, U"File", U"Draw trajectory...", 0, menu_cb_drawTrajectory);
 	Editor_addCommand (this, U"File", U"-- scripting --", 0, nullptr);
 	Editor_addCommand (this, U"Edit", U"-- f0 --", 0, nullptr);
-	Editor_addCommand (this, U"Edit", U"Set F0...", 0, menu_cb_setF0);
+	Editor_addCommand (this, U"Edit", U"Set f0...", 0, menu_cb_setF0);
 	Editor_addCommand (this, U"Edit", U"Set F3 & F4...", 0, menu_cb_setF3F4);
 	Editor_addCommand (this, U"Edit", U"-- trajectory commands --", 0, nullptr);
 	Editor_addCommand (this, U"Edit", U"Reverse trajectory", 0, menu_cb_reverseTrajectory);
@@ -1338,7 +1335,7 @@ void structVowelEditor :: v_createHelpMenuItems (EditorMenu menu) {
 
 void structVowelEditor :: v_createChildren ()
 {
-	const int button_width = 90, text_width = 95, status_info_width = 290;
+	const int button_width = 90, text_width = 95, status_info_width = 330;
 	int top, bottom, bottom_widgets_top, bottom_widgets_bottom, bottom_widgets_halfway;
 
 	// Three buttons on a row: Play, Reverse, Publish
@@ -1349,8 +1346,8 @@ void structVowelEditor :: v_createChildren ()
 	reverseButton = GuiButton_createShown (our windowForm, left, right, top, bottom, U"Reverse", gui_button_cb_reverse, this, 0);
 	left = right + 10; right = left + button_width;
 	publishButton = GuiButton_createShown (our windowForm, left, right, top, bottom, U"Publish", gui_button_cb_publish, this, 0);
-	// Four Text widgets with the label on top: Duration, Extend, F0, Slope
-	// Make the F0 slope button 10 wider to accomodate the text
+	// Four Text widgets with the label on top: Duration, Extend, f0, Slope
+	// Make the f0 slope button 10 wider to accomodate the text
 	// We wil not use a callback from a Text widget. It will get called multiple times during the editing
 	// of the text. Better to have all editing done and then query the widget for its value!
 	left = right + 10; right = left + text_width; bottom_widgets_halfway = bottom = (top + bottom) / 2; top = bottom_widgets_top;
@@ -1364,21 +1361,25 @@ void structVowelEditor :: v_createChildren ()
 	extendTextField = GuiText_createShown (our windowForm, left, right, top, bottom, 0);
 
 	left = right + 10; right = left + text_width; top = bottom_widgets_top; bottom = bottom_widgets_halfway;
-	GuiLabel_createShown (our windowForm, left, right, top, bottom, U"Start F0 (Hz):", 0);
+	GuiLabel_createShown (our windowForm, left, right, top, bottom, U"Start f0 (Hz):", 0);
 	top = bottom; bottom = bottom_widgets_bottom;
 	f0TextField = GuiText_createShown (our windowForm, left, right, top, bottom, 0);
 
 	left = right + 10; right = left + text_width + 10; top = bottom_widgets_top; bottom = bottom_widgets_halfway;
-	GuiLabel_createShown (our windowForm, left, right, top, bottom, U"F0 slope (oct/s):", 0);
+	GuiLabel_createShown (our windowForm, left, right, top, bottom, U"Slope f0 (oct/s):", 0);
 	top = bottom; bottom = bottom_widgets_bottom;
 	f0SlopeTextField = GuiText_createShown (our windowForm, left, right, top, bottom, 0);
 
 	// The status startInfo and endInfo widget at the bottom:
 
-	bottom = - (STATUS_INFO - Gui_LABEL_HEIGHT) / 2; top = bottom - Gui_LABEL_HEIGHT; left = MARGIN_LEFT; right = left + status_info_width;
+	bottom = - (STATUS_INFO - Gui_LABEL_HEIGHT) / 2;
+	top = bottom - Gui_LABEL_HEIGHT;
+	left = MARGIN_LEFT;
+	right = left + status_info_width;
 	startInfo = GuiLabel_createShown (our windowForm, left, right, top, bottom, U"", 0);
 
-	left = right; right = left + status_info_width;
+	left = right;
+	right = left + status_info_width;
 	endInfo = GuiLabel_createShown (our windowForm, left, right, top, bottom, U"", 0);
 
 	/***** Create drawing area. *****/


=====================================
fon/Pitch.cpp
=====================================
@@ -458,6 +458,33 @@ integer Pitch_getMaxnCandidates (Pitch me) {
 	return result;
 }
 
+static void Pitch_checkFrameNumber (Pitch me, integer frameNumber) {
+    Melder_require (frameNumber >= 1,
+    	U"The frame number should be at least 1, but is ", frameNumber, U" instead.");
+    Melder_require (frameNumber <= my nx,
+    	U"The frame number should at most the number of frames (", my nx, U"), but is ", frameNumber, U" instead.");
+}
+
+autoMAT Pitch_Frame_getAllCandidates (Pitch_Frame me) {
+	integer numberOfCandidates = my nCandidates;
+	autoMAT candidates = newMATraw (2, numberOfCandidates);
+	for (integer icand = 1; icand <= numberOfCandidates; icand ++) {
+		candidates [1] [icand] = my candidate [icand]. frequency;
+		candidates [2] [icand] = my candidate [icand]. strength;
+	}
+	return candidates;
+}
+
+autoMAT Pitch_getAllCandidatesInFrame (Pitch me, integer frameNumber) {
+	try {
+    	Pitch_checkFrameNumber (me, frameNumber);
+    	Pitch_Frame frame = & my frame [frameNumber];
+    	return Pitch_Frame_getAllCandidates (frame);
+	} catch (MelderError) {
+		Melder_throw (U"Candidate matrix not created.");
+	}
+}
+
 void Pitch_pathFinder (Pitch me, double silenceThreshold, double voicingThreshold,
 	double octaveCost, double octaveJumpCost, double voicedUnvoicedCost,
 	double ceiling, int pullFormants)


=====================================
fon/Pitch.h
=====================================
@@ -122,6 +122,9 @@ void Pitch_setCeiling (Pitch me, double ceiling);
 		my ceiling = ceiling;
 */
 
+autoMAT Pitch_Frame_getAllCandidates (Pitch_Frame me);
+autoMAT Pitch_getAllCandidatesInFrame (Pitch me, integer frameNumber);
+
 void Pitch_pathFinder (Pitch me, double silenceThreshold, double voicingThreshold,
 	double octaveCost, double octaveJumpCost, double voicedUnvoicedCost,
 	double ceiling, int pullFormants);


=====================================
fon/Sound.cpp
=====================================
@@ -905,6 +905,8 @@ autoSound Sound_createAsPureTone (integer numberOfChannels, double startingTime,
 	double sampleRate, double frequency, double amplitude, double fadeInDuration, double fadeOutDuration)
 {
 	try {
+		Melder_require (numberOfChannels >= 1,
+			U"The number of channels has to be at least 1.");
 		double numberOfSamples_f = round ((endTime - startingTime) * sampleRate);
 		if (numberOfSamples_f > (double) INT32_MAX)
 			Melder_throw (U"Cannot create sounds with more than ", Melder_bigInteger (INT32_MAX), U" samples, because they cannot be saved to disk.");


=====================================
fon/manual_Script.cpp
=====================================
@@ -1770,7 +1770,7 @@ MAN_END
 MAN_BEGIN (U"Scripting 3. Simple language elements", U"ppgb", 20130421)
 INTRO (U"The Praat scripting language doesn't only call the menu commands "
 	"discussed in the @@Scripting 1. Your first scripts|first@ and @@Scripting 2. How to script settings windows|second@ chapters of this tutorial, "
-	"it is only a general procedural programming language that allows you to compute numbers, handle texts, and make custom analyses.")
+	"it is also a general procedural programming language that allows you to compute numbers, handle texts, and make custom analyses.")
 NORMAL (U"This chapter focuses on the things you need most. It is designed in such a way that you can work through it even if you haven't written computer programs before.")
 LIST_ITEM (U"@@Scripting 3.1. Hello world@ (writeInfoLine, appendInfoLine)")
 LIST_ITEM (U"@@Scripting 3.2. Numeric variables@ (assignments)")


=====================================
fon/manual_tutorials.cpp
=====================================
@@ -22,9 +22,11 @@
 void manual_tutorials_init (ManPages me);
 void manual_tutorials_init (ManPages me) {
 
-MAN_BEGIN (U"What's new?", U"ppgb", 20190103)
+MAN_BEGIN (U"What's new?", U"ppgb", 20190208)
 INTRO (U"Latest changes in Praat.")
 //LIST_ITEM (U"• Manual page about @@drawing a vowel triangle at .")
+NORMAL (U"##6.0.47# (8 February 2019)")
+LIST_ITEM (U"• Removed a bug introdu ed in 6.0.44 whereby a cepstral peak prominence would be computed incorrectly.")
 NORMAL (U"##6.0.46# (3 January 2019)")
 LIST_ITEM (U"• Removed a crashing bug in the LongSound window introduced in 6.0.44.")
 LIST_ITEM (U"• Removed a bug causing incorrect conversion from Formant to LPC introduced in 6.0.44.")


=====================================
fon/praat_Fon.cpp
=====================================
@@ -1550,7 +1550,16 @@ DO
 	MODIFY_EACH_WEAK_END
 }
 
-FORM (REAL_Pitch_getMinimum, U"Pitch: Get minimum", 0) {
+FORM (NUMMAT_Pitch_getAllCandidatesInFrame, U"Pitch: Get all candidates in frame", nullptr) {
+	NATURAL (frameNumber, U"Frame number", U"1")
+	OK
+DO
+	NUMMAT_ONE (Pitch)
+		autoMAT result = Pitch_getAllCandidatesInFrame (me, frameNumber);
+	NUMMAT_ONE_END
+}
+
+FORM (REAL_Pitch_getMinimum, U"Pitch: Get minimum", nullptr) {
 	praat_TimeFunction_RANGE (fromTime, toTime)
 	OPTIONMENU_ENUM (kPitch_unit, unit, U"Unit", kPitch_unit::DEFAULT)
 	RADIOx (interpolation, U"Interpolation", 2, 0)
@@ -3200,6 +3209,9 @@ praat_addAction1 (classFormant, 0, U"Hack", nullptr, 0, nullptr);
 		praat_addAction1 (classPitch, 1, U"Get slope without octave jumps", nullptr, 1, REAL_Pitch_getMeanAbsSlope_noOctave);
 		praat_addAction1 (classPitch, 2, U"-- query two --", nullptr, 1, nullptr);
 		praat_addAction1 (classPitch, 2, U"Count differences", nullptr, 1, INFO_Pitch_difference);
+		praat_addAction1 (classPitch, 2, U"-- hack --", nullptr, 1, nullptr);
+		praat_addAction1 (classPitch, 1, U"Internal", nullptr, 1, nullptr);
+			praat_addAction1 (classPitch, 1, U"Get all candidates in frame...", nullptr, 2, NUMMAT_Pitch_getAllCandidatesInFrame);
 	praat_addAction1 (classPitch, 0, U"Modify -", nullptr, 0, nullptr);
 		praat_TimeFunction_modify_init (classPitch);
 		praat_addAction1 (classPitch, 0, U"Formula...", nullptr, 1, MODIFY_Pitch_formula);


=====================================
sys/Ui.cpp
=====================================
@@ -1226,7 +1226,10 @@ static void UiField_argToValue (UiField me, Stackel arg, Interpreter /* interpre
 					Melder_throw (U"Argument \"", my name.get(), U"\" should be a number, not ", arg -> whichText(), U".");
 				}
 			} else if (arg -> which == Stackel_NUMBER) {
-				my integerValue = Melder_iround (arg -> number);
+				double realValue = arg -> number;
+				my integerValue = Melder_iround (realValue);
+				Melder_require (my integerValue == realValue,
+					U"Argument \"", my name.get(), U"\" should be a whole number.");
 				if (my type == _kUiField_type::NATURAL_ && my integerValue < 1)
 					Melder_throw (U"Argument \"", my name.get(), U"\" should be a positive whole number.");
 			} else {


=====================================
sys/praat_objectMenus.cpp
=====================================
@@ -640,8 +640,8 @@ void praat_addMenus (GuiWindow window) {
 	}
 	
 	MelderString_append (& itemTitle_about, U"About ", praatP.title.get(), U"...");
+	praat_addMenuCommand (U"Objects", U"Praat", itemTitle_about.string, nullptr, praat_UNHIDABLE, WINDOW_About);
 	#ifdef macintosh
-		praat_addMenuCommand (U"Objects", U"Praat", itemTitle_about.string, nullptr, praat_UNHIDABLE, WINDOW_About);
 		#if cocoa
 			/*
 			 * HACK: give the following command weird names,


=====================================
sys/praat_version.h
=====================================
@@ -1,5 +1,5 @@
-#define PRAAT_VERSION_STR 6.0.46
-#define PRAAT_VERSION_NUM 6046
+#define PRAAT_VERSION_STR 6.0.47
+#define PRAAT_VERSION_NUM 6047
 #define PRAAT_YEAR 2019
-#define PRAAT_MONTH January
-#define PRAAT_DAY 3
+#define PRAAT_MONTH February
+#define PRAAT_DAY 8


=====================================
test/dwtools/CPPS.praat
=====================================
@@ -0,0 +1,5 @@
+sound = Create Sound from formula: "sineWithNoise", 1, 0, 1, 44100, "1/2 * sin(2*pi*377*x) + randomGauss(0,0.1)"
+ceps = To PowerCepstrogram: 60, 0.002, 5000, 50
+cpps = Get CPPS: "yes", 0.02, 0.0005, 60, 330, 0.05, "Parabolic", 0.001, 0, "Exponential decay", "Robust"
+assert 4.0 < cpps and cpps < 4.9 ; 'cpps'
+removeObject: sound, ceps



View it on GitLab: https://salsa.debian.org/med-team/praat/compare/ca920e30b60104da9fc0974e01398b7cc2b6d1ae...69e9f5c7e67a9e0db7bcee0d3aeaef5e2abf3951

-- 
View it on GitLab: https://salsa.debian.org/med-team/praat/compare/ca920e30b60104da9fc0974e01398b7cc2b6d1ae...69e9f5c7e67a9e0db7bcee0d3aeaef5e2abf3951
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20190218/07463ffe/attachment-0001.html>


More information about the debian-med-commit mailing list