[GSoC 2021] Project Proposal

Chris bsd-lists at bsdforge.com
Mon Mar 22 15:41:26 UTC 2021


On 2021-03-22 07:49, Christos Margiolis wrote:
> Hello,
> 
> I'm a Computer Engineering student and I'd like to propose a project for
> GSoC 2021 and possibly attract a mentor. This idea has already got some
> small traction on #freebsd (Freenode) by people involved with the project.
> 
> To not bore with useless information, I basically wanted to implement a
> "toggle" option for mixer(8) so that you can mute and unmute the mixer 
> easily
> without having to write external scripts to do that. Others have apparently
> asked for the same thing in the forums too.
> 
> However, in order to be able to mute and unmute the mixer requires the 
> program
> to have knowledge of the previous volume so that it can set it back, which 
> means
> that since mixer(8) is an one-shot program, it would have to write a file to 
> the
> disk, which is not the most pretty solution.
Every version of mixer that I have run keeps state in /var/db/mixerN-state:
vol 100:100 pcm 100:100
where N is (0-9) which represents a previous state. This has been the case 
for
as long as I can remember. It's much the same WiFi lease(s). Unless I'm 
missing
something IMHO it's current incarnation seems trivial to work with / 
manipulate.
One might consider using JSON notation in it to allow for more advanced 
features
and manipulation / reading / status I suppose.
I'm not trying to take the wind out of your sails, or anything. Just sharing
my own personal observation. :-)

--Chris
> 
> To fix that, after discussing this on IRC, me and debdrup thought it'd be 
> better
> to wrap mixer(8)'s functionality in a new library called libmixer(3) for the
> following reasons:
> 
> 1.      Userland programs will be able to use the mixer more easily
>         using this library.
> 
> 2.      In order to solve the mixer toggling "issue" without having to
>         write anything to disk, a new daemon called mixerd(8) can be
>         written using libmixer(3) to keep track of the volume history
>         among other things.
> 
> 3.      mixer(8) will use libmixer(3).
> 
> 4.      Already existing mixer ports such as MixerTUI
>         (https://www.freshports.org/audio/mixertui) can use the library
>         as well.
> 
> Apart from the reasons I mentioned above, which I think would make
> mixer handling easier and more extensible, I think this library could
> go as far as to implement support for virtual_oss and the like.
> 
> To make things more straight forward, I've already written a basic
> libmixer(3) which currently implements almost all of mixer(8)'s 
> functionality.
> I also rewrote mixer(8) to use my libmixer(3) and it seems to be working
> as expected, although I cannot test everything yet.
> 
> The code can be found in the following links:
> 
> GitHub:                 https://github.com/christosmarg/libmixer
> My personal Git server: https://git.christosmarg.xyz/libmixer/files.html
> 
> Code review is especially welcome, although at the moment it's at a very
> early stage - currently only 1 commit.
> 
> My involvement with the FreeBSD Project also includes the following:
> 
> 1.      Wrote a guide Arduino development on FreeBSD without
>         having to rely on the Arduino IDE:
> 
>         https://wiki.freebsd.org/Arduino/NativeCLI
> 
> 2.      Reported 2 bugs, including 1 fix:
> 
>         https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=254289
>         https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=254290
> 
> 3.      Active on IRC, mostly Freenode and sometimes
>         EFNet (@crm).
> 
> ----------------------------------------------
> Christos Margiolis <christos at christosmarg.xyz>


More information about the freebsd-hackers mailing list