Re: git: ba48d52ca6c8 - main - vt: Fix frequency calcuation for bell

From: Warner Losh <imp_at_bsdimp.com>
Date: Thu, 04 Nov 2021 15:17:38 UTC
On Thu, Nov 4, 2021 at 8:55 AM Rodney W. Grimes <freebsd@gndrsh.dnsmgr.net>
wrote:

> Thank you Warner for all the legwork on tracking this down and
> getting a proper bell tone working on FreeBSD-Current.  I do not
> see any MFC plans for this, can you please consider merging this
> to all supported releases?
>

I'm merging to 13. The merge was easy. I'm unlikely to merge to 12,
though, because some of these changes are dependent on changing
a system interface that I got conflicts with. If there's a lot of demand
I can plow through the conflicts.


> Oh and RELNOTES: YES?
>

Added.


> Thanks,
> Rod
>
> > The branch main has been updated by imp:
> >
> > URL:
> https://cgit.FreeBSD.org/src/commit/?id=ba48d52ca6c867559156dd916631f9ac47abe80f
> >
> > commit ba48d52ca6c867559156dd916631f9ac47abe80f
> > Author:     Warner Losh <imp@FreeBSD.org>
> > AuthorDate: 2021-11-03 21:55:55 +0000
> > Commit:     Warner Losh <imp@FreeBSD.org>
> > CommitDate: 2021-11-03 22:03:51 +0000
> >
> >     vt: Fix frequency calcuation for bell
> >
> >     386BSD provided a MD function sysbeep. This took two arguments (pitch
> >     and period). Pitch was jammed into the PIT's divisor directly (which
> >     means the argument was expected to sound a tone at '1193182 / pitch'
> >     Hz). FreeBSD inherited this interface.
> >
> >     In commit e46598588587 (svn 177642, Mar 26 2008), phk changed this
> >     function to take a tone to sound in hz. He converted all in-tree
> >     instances of 1193182 / hz to just hz (and kept the few misguided
> folks
> >     that passed hz directly unchanged -- this was part of what motivated
> the
> >     change). He converted the places where we pre-computed the 8254
> divisor
> >     from being pitch to 1193182 / pitch (since that converts the divisor
> to
> >     the frequency and the interfaces that were exposed to userland
> exposed
> >     it in these units in places, continuing the tradition inherited from
> SCO
> >     System V/386 Unix in spots).
> >
> >     In 2009, Ed Shouten was contracted by the FreeBSD Foundation to
> write /
> >     finish newcons. This work was done in perforce and was imported into
> >     subversion in user/ed/newcons in revision 199072
> >     (https://svnweb.freebsd.org/base?view=revision&revision=199072)
> which
> >     was later imported into FreeBSD by ray@ (Aleksandr Rybalko).
> >
> >     From that earliest import into svn import to this date, we ring the
> bell
> >     with:
> >           sysbeep(1193182 / VT_BELLPITCH, VT_BELLDURATION);
> >     where VT_BELLPITCH was defined to be 800. This results in a bell
> >     frequency of 1491Hz, more or less today. This is similar to the
> >     frequency that syscons and pcvt used (1493Hz and 1500Hz
> respectively).
> >     This in turn was inherited from 386BSD, it seems, which used the hard
> >     coded value 0x31b which is 795 -> 1500Hz.
> >
> >     This '800' was intended to be the bell tone (eg 800Hz) and this
> >     interface was one that wasn't converted. The most common terminal
> prior
> >     to the rise of PCs was the VT100, which had an approximately 800Hz
> >     bell. Ed Shouten has confirmed that the original intent was 800Hz and
> >     changing this was overlooked after the change to -current was made.
> >     This restors that original intent and makes the bell less obnoxious
> in
> >     the process.
> >
> >     Reviewed by:            des, adrian
> >     Differential Revision:  https://reviews.freebsd.org/D32594
> >     Sponsored by:           Netflix
> > ---
> >  sys/dev/vt/vt_core.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/sys/dev/vt/vt_core.c b/sys/dev/vt/vt_core.c
> > index 38efd1e5501c..06f5827078ca 100644
> > --- a/sys/dev/vt/vt_core.c
> > +++ b/sys/dev/vt/vt_core.c
> > @@ -121,7 +121,7 @@ const struct terminal_class vt_termclass = {
> >
> >  /* Bell pitch/duration. */
> >  #define      VT_BELLDURATION (SBT_1S / 20)
> > -#define      VT_BELLPITCH    (1193182 / 800) /* Approx 1491Hz */
> > +#define      VT_BELLPITCH    800
> >
> >  #define      VT_UNIT(vw)     ((vw)->vw_device->vd_unit * VT_MAXWINDOWS
> + \
> >                       (vw)->vw_number)
> >
>
> --
> Rod Grimes
> rgrimes@freebsd.org
>