Thanks so much for the help. I didn't appreciate that the code was available to look at and modify. I made the change and it works!
Is there a mechanism to report the bug/fix to the developers so that the fix becomes official?
> -----Original Message-----
> From: JohnD [mailto:firstname.lastname@example.org]
> Sent: Thursday, March 11, 2021 12:21 AM
> To: 'Cathy Zupke'
> Cc: email@example.com
> Subject: RE: playTone duration in Arduino package
> >> playTone(a,'D10',440,1) %piezo speaker is attached to D10 and makes a
> tone that never stops
> >> playTone(a,'D10',300,1) %frequency changes but never stops
> >> playTone(a,'D10',0,1) %sound stops
> >> playTone(a,'D10',180,3) %makes a tone that never stops
> >> playTone(a,'D10',440,0) %frequency changes but never stops
> >> version %I think this gives the version of octave
> > It is my understanding that the last parameter is supposed to be duration in
> seconds. So I'd expect the tones to stop after that time has elapsed.
> It looks good to me, so must be a bug in the code - the duration should be
> passed to the Arduino tone function in the library code, so if its not turning
> off, its acting like the duration its receiving is 0 that would play until the stop
> is called.
> I will have to hook up an Arduino and take a look.
Found an obvious mistake in inst/@arduino/playTone.m. If you change the line
if nargin >= 3
if nargin < 4
It then works for me.
--- a/inst/@arduino/playTone.m Wed Mar 10 15:57:09 2021 -0500
+++ b/inst/@arduino/playTone.m Thu Mar 11 07:35:29 2021 -0500
@@ -35,7 +35,7 @@
if nargin < 3
error ("@arduino.playTone: expected pin name and frequency");
- if nargin >= 3
+ if nargin < 4
duration = 0;
Normally creating a bug on the octave bug page will work 
However, since I am the author of the package, it has already been added to the repo and will appear in the next release.