Fade Out MOC Se outro aplicativo começar a jogar algo -- sound campo com alsa campo com music-player camp askubuntu Relacionado O problema

Fade out MOC if other application starts playing something


0
vote

problema

português

Eu preciso encontrar uma boa maneira de forçar a reprodução do som de um daemon MOC

Eu tenho o seguinte cenário:

Eu tenho executando uma pequena caixa de servidor Ubuntu 12.04 com um daemon MOC (MusiconConsole) e um aplicativo de rubi personalizado.

O aplicativo Ruby ocasionalmente reproduz um WAV ou outro soundfile em cenários orientados periódicos ou eventos. por exemplo. às 7 horas da noite. joga "store_is_closing.mp3" ou algo assim.

Eu também tenho um daemon moc executando com uma lista de reprodução de MP3, que joga música o dia inteiro.

Eu estou usando a ALSA para fazer a mistura.

Tudo funciona bem, mas estou perdendo um ponto.

Se, digamos que o MOC esteja jogando uma música e o aplicativo Ruby reproduz um arquivo de som, tudo está no mesmo nível de som (obviamente). Então, você não consegue entender nada do arquivo de som jogado pelo aplicativo Ruby.

Eu preciso encontrar uma maneira de forçar o daemon MOC a desvanecer sua reprodução da música para uma porcentagem definida (digamos 10% do nível de som original) e depois do aplicativo Ruby jogou o arquivo de som, MOC deve ser alternou de volta para o nível de som de origem.

english

I need to find a good way to force fade down the sound playback of a moc daemon

I have the following scenario:

I have running a small Ubuntu 12.04 server box with a MOC (musiconconsole) daemon and a custom ruby application.

The ruby application occasionally plays a wav or other soundfile in periodic or event driven scenarios. e.g. at 7 p.m. it plays "store_is_closing.mp3" or something like that.

I also have a MOC daemon running with a mp3 playlist, which plays music the whole day.

I am using ALSA to do the mixing.

Everything works fine but I am missing one point.

If, let's say MOC is playing a song and the ruby app plays a sound file, everything is on the same sound level (obviously). so, you can't understand anything of the sound file played by the ruby app.

I need to find a way to force the MOC daemon to fade down his playback of the song to a defined percentage (let's say 10% of the original sound level) and after the ruby app played the sound file, moc should be toggled back back to the origin sound level.

        
   
   

Lista de respostas

0
 
vote

O daemon MOC pode ser controlado apenas com o cliente abcdefghgjklmnabcdefghijklmn13 .

Se você estava usando o PulseAudio, você poderia usar * * * * 1-5 root bash /home/xxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/jmeter-cron-randomise.sh >> /home/xxxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/cron.log # ...............^^^^ 4 para alterar o volume de MOC.

Se você substituiu MOC com mpd , você poderia usar * * * * 1-5 root bash /home/xxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/jmeter-cron-randomise.sh >> /home/xxxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/cron.log # ...............^^^^ 5 para alterar o MPD's volume.

Se você realmente quiser fazer isso com a ALSA, você pode colocar o seguinte em ABCDEFGHIJKLMNABCDEFGHIJKLMN16 :

* * * * 1-5 root bash /home/xxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/jmeter-cron-randomise.sh >> /home/xxxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/cron.log # ...............^^^^ 7

e configure MOC para usar o nome do dispositivo ALSA * * * * 1-5 root bash /home/xxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/jmeter-cron-randomise.sh >> /home/xxxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/cron.log # ...............^^^^ 8 em vez de * * * * 1-5 root bash /home/xxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/jmeter-cron-randomise.sh >> /home/xxxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/cron.log # ...............^^^^ 9 .


Se o seu programa de mudança de volume não permitir configurar seu controle do mixer, você deve monitorar o outro controle do mixer e copiar seu valor para o controle MOC Mixer. Isso poderia ser feito com um programa como este:

bash0

(use bash1 para verificar os nomes de controle reais.)

 

The MOC daemon can be controlled only with the mocp client.

If you were using PulseAudio, you could use pacmd to change MOC's volume.

If you replaced MOC with MPD, you could use mpc to change MPD's volume.

If you really want to do this with ALSA, you could put the following into /etc/asound.conf:

pcm.moc_with_volume {     type softvol     slave.pcm "default"  # or whatever you're using in MOC     control {         name "MOC Playback Volume"         count 1     } } 

and configure MOC to use the ALSA device name moc_with_volume instead of default.


If your volume-changing program does not allow to configure its mixer control, you have to monitor the other mixer control and copy its value to the MOC mixer control. This could be done with a program like this:

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <alsa/asoundlib.h>  #define CHECK(fn) check((fn), #fn) static void check(int err, const char *fn) {         if (err < 0) {                 fprintf(stderr, "%s failed: %s\n", fn, snd_strerror(err));                 exit(EXIT_FAILURE);         } }  int main() {         snd_ctl_t *ctl;         snd_ctl_event_t *event;         snd_ctl_elem_id_t *id_src, *id_dst;         snd_ctl_elem_value_t *value;         unsigned int mask;         long raw, db;          CHECK(snd_ctl_open(&ctl, "hw:0", 0));         CHECK(snd_ctl_subscribe_events(ctl, 1));         snd_ctl_event_alloca(&event);         snd_ctl_elem_id_alloca(&id_src);         snd_ctl_elem_id_alloca(&id_dst);         snd_ctl_elem_value_alloca(&value);         snd_ctl_elem_id_set_interface(id_dst, SND_CTL_ELEM_IFACE_MIXER);         snd_ctl_elem_id_set_name(id_dst, "MOC Playback Volume");         for (;;) {                 CHECK(snd_ctl_read(ctl, event));                 if (snd_ctl_event_get_type(event) != SND_CTL_EVENT_ELEM)                         continue;                 mask = snd_ctl_event_elem_get_mask(event);                 if (mask == SND_CTL_EVENT_MASK_REMOVE ||                     !(mask & SND_CTL_EVENT_MASK_VALUE) ||                     strcmp(snd_ctl_event_elem_get_name(event),                            "Some Mic Capture Volume"))                         continue;                 snd_ctl_event_elem_get_id(event, id_src);                 snd_ctl_elem_value_set_id(value, id_src);                 CHECK(snd_ctl_elem_read(ctl, value));                 raw = snd_ctl_elem_value_get_integer(value, 0);                 CHECK(snd_ctl_convert_to_dB(ctl, id_src, raw, &db));                 CHECK(snd_ctl_convert_from_dB(ctl, id_dst, db, &raw, 0));                 snd_ctl_elem_value_set_id(value, id_dst);                 snd_ctl_elem_value_set_integer(value, 0, raw);                 snd_ctl_elem_value_set_integer(value, 1, raw);                 CHECK(snd_ctl_elem_write(ctl, value));         } } 

(Use amixer controls to check the actual control names.)

 
 
         
         

Perguntas relacionadas

0  Player de música que classifica por data modificada  ( Music player that sorts by date modified ) 
Eu tenho usado o Ubuntu por cerca de uma semana e estou procurando um player de música que possa classificar música até a data em que foi modificada pela últi...

3  Lente de música não toca música através do player de música padrão  ( Music lens does not play music through default music player ) 
Eu defino Rhythmbox como meu player de música padrão através settings do sistema & gt; Detalhes , mas quando eu navego e toco música do Unity Dash, Banshee a...

12  Player de música que joga listas de reprodução do YouTube  ( Music player that plays youtube playlists ) 
Eu tentei todos os jogadores de música recomendados em respostas para perguntas semelhantes, mas não encontrei um jogador atendendo os seguintes requisitos: ...

4  Comando de terminal para controlar o player de música / vídeo padrão (Play / Stop / Next ..)  ( Terminal command to control the standard music video playerplay stop next ) 
Após googling por um tempo agora sou incapaz (--.-) para encontrar uma solução para isso: Eu quero contar o meu padrão (conforme observado em configurações)...

0  Por que eu não vejo lollypop no menu do indicador de som? [fechado]  ( Why dont i see lollypop in the sound indicator menu ) 
. FECHADO. Esta questão é off-tópico . Atualmente não está aceitando respostas. Quer melh...

4  O iPod Shuffle 4 Gen funciona bem com ritmo?  ( Does the ipod shuffle 4th gen work well with rhythmbox ) 
Estou pensando em obter um iPod shuffle 4 Gen., mas se não funciona bem com o Ubuntu 12.04 / ritmo, é um no-go. Alguém tem alguma experiência com esta combi...

4  Existe um music player que não joga vídeo ou mostra fotos?  ( Is there a music player that doesnt play video or show photos ) 
Eu quero um reprodutor de música que não possa reproduzir vídeo ou mostrar fotos. Eu não tenho outros requisitos. Há algum jogador de música que se ajustem ...

5  Há algum bom mixer de música disponível, equivalente a Windows "Mp3 Tunes"?  ( Are there any good music mixers available equivalent to windows mp3 tunes ) 
No Windows meu pai costumava ter um programa chamado músicas mp3 . Eu tentei correr com vinho e funcionou. Mas coisas estranhas continuaram acontecendo com...

7  Python (v2.7) requer para instalar plugins para criar arquivos de mídia do seguinte tipo: Vorbis Encoder  ( Python v2 7 requires to install plugins to create media files of the following ) 
Esta é a mensagem que recebo quando tento rasgar um CD de qualquer jogador. Eu costumo usar o ritmo de estoque, mas tentei que os outros sem sucesso. Acabei d...

8  Player de música leve  ( Lightweight music player ) 
Existe algum reprodutor de música ultra leve para o Ubuntu (como foobar)? De preferência com a integração da barra de tarefas da unidade. ...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.