Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu?

Sekcia: Programovanie 19.09 | 11:25
Avatar mirek biňas Fedora 28  Administrátor

ahojte

chcel by som si spraviť jednoduchý zvukový ekvalizér (v demoscéne sa to zvyklo nazývať aj bary) alebo monitor zvuku, kde by na základe úrovne aktuálnej hlasitosti došlo k vykresleniu čiary - čím väčšia hlasitosť, tým dlhšia čiara, žiadna hlasitosť, žiadna čiara. pekny gif je pri projekte cavahttps://github.com/karlstav/cava

problém je, že neviem, odkiaľ sa k tomuto údaju dostať. nemyslím teraz nstavenie alebo získanie hodnoty master volume, čo je celková hlasitosť zvuku v počítači a ktorú keď nastavíte na 0, tak nič nepočujete, a keď ju nastavíte na max, tak zvuk vypeckujete. potrebujem získať aktuálnu hodnotu úrovne zvuku - hodnotu, s ktorou pracujú monitory zvuku napr. v nastaveniach zvuku vo vašom prostredí.

ideálne by bolo, ak by som sa k tomu vedel dostať priamo z príkazového riadku. prepátral som priečinok /proc/asound, ale subor stats, ktory je pri mikrofone... mi akosi nesedi (aj ked som videl nejaky program, ktory funguje ako detektor pritomnosti osoby a povazuje za pohyb lubovolnu zmenu v tomto suboru od poslednej verzie).

pozeral som do priecinku /dev/snd/ ale to asi nebude ono. skusal som nejake kniznice v pythone. a najlepsie vyzerala asi kniznica alsaaudio, ale sposob, ktory bol pouzity v jednom priklade tiez vyzeral zvlastne (po vypnuti zvuku sa stale tvaril, ze nieco dostaval).

nemate niekto nejaky tip? slubne vyzeral sox, len som nemal cast luskat celu dokumentaciu, tak ze ak nahodou niekto viete poradit, tak budem rad ;)

mirek

    • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 19.09 | 12:18
      Avatar qw11 ubuntu mate 18.04 64bit Asus X751LB  Používateľ

      V tom odkaze nieje nahodou postup ako vytvorit virtualne zariadenie z ALSA mixer? Ja sa v tom velmi nevyznam ale pripada mi to tak.

      • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 19.09 | 13:21
        Avatar mirek biňas Fedora 28  Administrátor

        a? je jedno, ci tu hodnotu urovne odcitam z realneho alebo virtualneho zariadenia. otazkou je, ako ju dostanem.

        potrebujem v principe len cislo reprezentujuce uroven, napr. 0 - je ticho a 100 - je max. zvuk. vsetko ostatne je medzitym. a samozrejme v realnom case.

        • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 19.09 | 13:49
          Avatar WlaSaTy   Návštevník

          Tú hodnotu dostaneš spracovaním zvukového toku získaného odpočúvaním. Pozri do adresára input.

          • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 19.09 | 19:05
            Avatar mirek biňas Fedora 28  Administrátor

            to ma veru nenapadlo. podla by-path/ a by-id/ priecinkov som sa dostal len k vstupnym zariadeniam ako klavesnica a mys. cez evtest mi sice zobrazil aj mikrofon, ale obavam sa, ze to bude asi len priznak odpojenia/zapojenia externeho mikrofonu. alebo mas este nejaky tip?

            • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 19.09 | 21:43
              Avatar WlaSaTy   Návštevník

              Do adresára v tých zdrojákoch ktorými si sa chcel inšpirovať. Nie do /sys a ani do /dev .

              • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 20.09 | 08:25
                Avatar mirek biňas Fedora 28  Administrátor

                dik. skusim kuknut. len asi neskor - povinnosti :-/

                pozeral som akurat kod v hlavnom subore, ale nic podozrive som nenasiel. tusim cava pouziva aj tak nejaku externu kniznicu, ktora ma binding aj pre python (co je pre mna pre potreby pouzitia idealne). tak este hodim ockom.

                • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 20.09 | 10:04
                  Avatar WlaSaTy   Návštevník

                  Tak to si pozeral zle. Ono to má rozhranie pre Alsa a Pulse Audio, v céčku.

    • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 19.09 | 16:01
      Avatar debian+   Návštevník

      Zistenie aktualnej hlasitosti

      amixer sget Master 
      Simple mixer control 'Master',0
        Capabilities: pvolume pswitch pswitch-joined
        Playback channels: Front Left - Front Right
        Limits: Playback 0 - 65536
        Mono:
        Front Left: Playback 65536 [100%] [on]
        Front Right: Playback 65536 [100%] [on]

      A tu mas ako nastavis nastavis hlasitost.

      Automaticky za teba poriesi, ci nastavuje pulseaudio, ale rovno ALSA.

    • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 19.09 | 16:02
      Avatar debian+   Návštevník

      Zistenie aktualnej hlasitosti

      $ amixer sget Master
      Simple mixer control 'Master',0
        Capabilities: pvolume pswitch pswitch-joined
        Playback channels: Front Left - Front Right
        Limits: Playback 0 - 65536
        Mono:
        Front Left: Playback 65536 [100%] [on]
        Front Right: Playback 65536 [100%] [on]
      $

      A tu mas ako nastavis nastavis hlasitost.

      Automaticky za teba poriesi, ci nastavuje pulseaudio, ale rovno ALSA.

    • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 19.09 | 17:40
      Avatar debian+   Návštevník

      Tu mas napr. aj "jednoduchy" program.

      • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 19.09 | 18:37
        Avatar bedňa LegacyIce-antiX  Administrátor

        Tri trefy vedľa, prečítaj si ešte raz zadanie kámo.

        Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
    • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 19.09 | 18:35
      Avatar bedňa LegacyIce-antiX  Administrátor

      Jediné riešenie je zobrať kúsok nahrávky, napr rec, alebo ffmpeg dlhú napríklad 0,1 sekundy.

      Potom nahrávku analyzovať cez sox ten ti vráti pekne popísané parametre nahrávky.

      Pridáš trochu matiky k maximu a škále.

      Mno a už môže magické oko plieskať o sto tristo.

      Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
      • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 19.09 | 19:09
        Avatar mirek biňas Fedora 28  Administrátor

        no - vcera som dokazal sox spustit priamo s audio vstupom. v realnom case som ale nevedel zobrazit aktualnu uroven zvuku. statistiku aj tak vzdy vypisal az po ukonceni, ak si dobre pamatam.

        problem bol aj s tym casom, o ktorom pises - cez parameter -d sa myslim nastavovala dlzka zaznamu. udava sa ale v sekundach a teda menej ako 1s som nastavit nevedel. alebo som len necital dokumentaciu.

        ak vies, ake paradne parametre to urobia, tak sem s nimi :-)))

        • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 19.09 | 19:23
          Avatar bedňa LegacyIce-antiX  Administrátor

          Pretože si použil arecord a nie to čo píšem ja. Rec aj ffmpeg myslím, poskytne aj nejaký úsek bytov.

          Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
    • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 19.09 | 22:03
      Avatar debian+   Návštevník

      Ano, zle som precital.

      Kukni/nastuduj "parec -r".

      • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 20.09 | 08:28
        Avatar mirek biňas Fedora 28  Administrátor

        diky. toto som bol schopny spravit aj cez sox/rec. v tomto pripade by uz zostavala len ta analyza zvuku.

    • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 19.09 | 22:15
      Avatar debian+   Návštevník

      Hladaj na nete "music visualizer".

      Kukni projectM (namakana vyualizacia) a tu mas aj nieco v CLI - cava

      • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 19.09 | 22:21
        Avatar debian+   Návštevník

        Ked si budes skusat ten projeckt (debian instaluj projectm-pulseaudio a ttf-dejavu), tak vizualizacia asi zacne, a urcite prepne, na dalsi typ klavesou n.

        • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 19.09 | 23:57
          Avatar samalama.   Návštevník

          osobitne skoly nezacinaju tak ako "normalne skoly", 2.9.?

        • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 19.09 | 23:57
          Avatar samalama.   Návštevník

          osobitne skoly nezacinaju tak ako "normalne skoly", 2.9.?

          • RE: Ako získať hodnotu aktuálnej hlasitosti z mikrofónu alebo zvukového výstupu? 20.09 | 08:03
            Avatar WlaSaTy   Návštevník

            Zmeškal si niečo?