Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Музыки прогресс в zenity или 3D.  (Прочитано 1646 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн victor00000

  • Автор темы
  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Музыки прогресс в zenity или 3D.
« : 28 Февраля 2019, 18:18:44 »
victor00000 (c) 2019


выше картинка - это играй музыки или микрофон.

Музыки прогресс в zenity.
3D -> https://forum.ubuntu.ru/index.php?topic=303438.msg2377196#msg2377196
Pavucontrol на PulsePeak.

Я взял pavucontrol на вывод в терминалу из zenity.

1. Установка pavucontrol и исходнмк.
sudo apt-get install pavucontrol build-essential
sudo apt-get build-dep pavucontrol
cd
mkdir pav
cd pav
apt-get source pavucontrol
cd pav*/
./configure
cd src

1.1 Создать и вставить в файл.
pulsepeak.h
float pv = 0;
int poi = 0;
pthread_t *pt = 0;
pthread_mutex_t pmt;
pthread_cond_t pct;

//========================
void *pth_p (void *a){
float pf;
int ppoi;
while (1){
pthread_cond_wait (&pct,&pmt);
pf = pv; ppoi = poi;
if (fflush (stdout) != 0)break;
printf ("#%f:%d\n%d\n",pf,ppoi,(int)(pf*100.f));
}
gtk_main_quit ();
return a;
}

//=====================
void pct_signal (double v, int oi){
if (pt == 0){
pt = (pthread_t*) malloc (sizeof(pthread_t));
pthread_create (pt,0,pth_p,0);
}
pv = v; poi = oi;
pthread_cond_signal (&pct);
}
сохранить и выход.

2 Редактор и изменить в исходники pavucontrol.
nano pav*.cc
найти
Gtk::Main::run(*mainWindow);
на заменить.
fputs ("Home\n",stderr);
setlocale(LC_NUMERIC, "C");
mainWindow->show();
mainWindow->hide();
gtk_main ();
fputs ("End\n",stderr);
// Gtk::Main::run(*mainWindow);
сохранить и выход, снова редактировать.
nano mi*.cc
найти
#include "minimalstreamwidget.h"
на
#include "minimalstreamwidget.h"
#include "pulsepeak.h"

найти тоже в файл mi*.h
updatePeak(double v)
на
updatePeak(double v, int oi)


найти
if (v >= 0) {
на
if (v >= 0) {
pct_signal (v, oi);

найти
peakProgressBar.set_sensitive(FALSE);
на
pct_signal (0,-1);
peakProgressBar.set_sensitive(FALSE);

ещё в ma*.cc
nano ma*.cc

найти внимание начало 1.
w->updatePeak(v);
на
w->updatePeak (v,0);
ещё найти и на 2.
w->updatePeak (v,1);
тоже дальше 3.
на
w->updatePeak (v,2);
ещё 4.
на
w->updatePeak (v,3);


сохранить и всё.

3 компилятор.
make
sudo make install

4 названия программу в фпйл pulsepeak.
sudo mv /usr/local/bin/pavucontrol /usr/local/bin/pulsepeak


5. Музык играй и запустить в терминалу.
стерео

всего стерео и микрофон.
pulsepeak | zenity --progress

лево :0
pulsepeak | grep --line-buffered -A1 ":0$"| grep --line-buffered -v "^-" | zenity --progress

право :1
pulsepeak | grep --line-buffered -A1 ":1$"| grep --line-buffered -v "^-" | zenity --progress

микрофон :2 и :3

Всё!
:)
« Последнее редактирование: 17 Марта 2019, 22:41:58 от victor00000 »
Wars ~.o

Оффлайн Electricity

  • Активист
  • *
  • Сообщений: 250
    • Просмотр профиля
Re: Музыки прогресс в zenity.
« Ответ #1 : 04 Марта 2019, 16:03:43 »
victor00000, может я неправильно выразился.
Мать с выходом 7.1
Т.е. отдельный разъём выхода на сабвуфер.
На alsamixer он как "Center".

Т.е. основные каналы остаются как стерео (2 канала).
А канал "Center", кстати, он есть сабвуфер, пустить через программный эквалайзер. Там срезать верхние частоты. Т.е. оставить низы, срезать вернюю часть средних и высокие.
ФНЧ для канала саб нужен, то бешь.
Стерео-выход НЕ НУЖНО.

На правах флуда. У вас есть машина (не сомневаюсь), а нет саба? Такому Человеку, как Вы, которому выразиться регулярно проще чем объяснить словами не иметь Хаммера с сабом? Ой... не так... Саба, а среди прочего Хаммер)))
Kubuntu 18.04 amd64, Qt: 5.9.5, KDE Frameworks: 5.44.0, plasmashell 5.12.7, корпус чёрный, клава белая

Оффлайн Aleksandru

  • Администратор
  • Старожил
  • *
  • Сообщений: 3337
    • Просмотр профиля
Re: Музыки прогресс в zenity.
« Ответ #2 : 04 Марта 2019, 16:35:39 »
Мать с выходом 7.1
А канал "Center", кстати, он есть сабвуфер
Вот один из семи "Center" а .1 это саб.
Не может быть "Center" сабвуфером.
Я что то даже очень сомневаюсь, что в alsa вывод на саб есть.
Intel Core i5-6400, GeForce GT 1030, ASUS ROG Strix B250G Gaming, 16GB RAM, KINGSTON SV300S37A240G, Digma Mega S3 DGSM3512GS33T 512ГБ.

Оффлайн Electricity

  • Активист
  • *
  • Сообщений: 250
    • Просмотр профиля
Re: Музыки прогресс в zenity.
« Ответ #3 : 05 Марта 2019, 01:36:08 »
Aleksandru, гадом буду.
6 гнёзд, сам сомневался. Розовый. Мать: Ecs 945g-M3.
Ну не чёрный же  :)
Посмотрите сами, чёрный это два задних. Розовый - центр/саб. Через альса регулируется как центр.
Хотя... Из других источников, саб это LFE. У меня LFE бездействует. Может Вы подскажите.

Виктор, ты о сабе или на все каналы? Нужен ФНЧ на выход саба. На все каналы - не вопрос. Нужно именно "Center".
Kubuntu 18.04 amd64, Qt: 5.9.5, KDE Frameworks: 5.44.0, plasmashell 5.12.7, корпус чёрный, клава белая

Оффлайн Aleksandru

  • Администратор
  • Старожил
  • *
  • Сообщений: 3337
    • Просмотр профиля
Re: Музыки прогресс в zenity.
« Ответ #4 : 06 Марта 2019, 10:11:00 »
Почитайте эту тему: https://kubuntu.ru/node/11840
Может поможет.
Сам проверить не могу, у моей звуковухи выход только стерео.
Intel Core i5-6400, GeForce GT 1030, ASUS ROG Strix B250G Gaming, 16GB RAM, KINGSTON SV300S37A240G, Digma Mega S3 DGSM3512GS33T 512ГБ.

Оффлайн victor00000

  • Автор темы
  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Музыки прогресс в zenity или 3D.
« Ответ #5 : 12 Марта 2019, 01:15:17 »

это GTK-3.
// gtk3_progress_peak.c
// ~$ gcc gtk3_progress_peak.c -o gtk3_progress_peak `pkg-config --libs --cflags gtk+-3.0`
// ~$ pulsepeak | ./gtk3_progress_peak
// victor00000 (c) 2019
#include <stdio.h>
#include <gtk/gtk.h>
#include <locale.h>
#include <stdlib.h>

void *quit, *pt;
int pbari = 10;

//===========================
gboolean pbar_p(gpointer a)
{

GtkWidget **pbar = a;
int i, di;
char *c = malloc(32);
float fpbar = 0, ft = 0;
int w, h;

gtk_window_get_default_size(GTK_WINDOW(pbar[pbari]), &w, &h);

fgets(c, 32, stdin);
if (*c == '#') {
c++;
ft = atof(c);
c--;
fgets(c, 32, stdin);

} // else return 1;// continue;
di = (int)(ft * 10.f);
if (di > 9)
di = 9;
for (i = 0; i < pbari; i++) {
fpbar =
    gtk_progress_bar_get_fraction(GTK_PROGRESS_BAR(pbar[i]));
if (di == i && ft > 0.0f) {
fpbar += 0.05f;
} else {
fpbar -= .005f;
}
if (fpbar < 0.0f)
fpbar = 0.0f;
if (fpbar > 1.0f)
fpbar = 1.0f;

gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(pbar[i]), fpbar);
}
free(c);
return 1;
}

//====================
gboolean key_w(GtkWidget * widget, GdkEventKey * event, gpointer data)
{
int k = event->keyval;

if (k == 65307) {
g_application_quit(quit);
}
return 0;
}

//====================
void activate(GtkApplication * app, gpointer user_data)
{
GtkWidget **pbar;
GtkWidget *window;

pbar = malloc(sizeof(void *) * 100);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

gtk_window_set_application(GTK_WINDOW(window), app);
pbar[pbari] = window;
gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);
g_signal_connect(window, "key-release-event", G_CALLBACK(key_w), 0);

int i;

for (i = 0; i < pbari; i++) {
pbar[i] = gtk_progress_bar_new();
gtk_progress_bar_set_inverted(GTK_PROGRESS_BAR(pbar[i]), 1);

gtk_orientable_set_orientation(GTK_ORIENTABLE(pbar[i]),
       GTK_ORIENTATION_VERTICAL);
}
GtkWidget *vbox, *vb1;

vbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);

gtk_container_add(GTK_CONTAINER(window), vbox);

for (i = 0; i < pbari; i++) {

vb1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 100);

gtk_widget_set_size_request(vb1, 25, 200);

gtk_container_add(GTK_CONTAINER(vbox), vb1);

gtk_container_add(GTK_CONTAINER(vb1), pbar[i]);

gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(pbar[i]), .5);
}

GThread *gth = 0;

if (gth != 0)
perror("==============");

gtk_window_set_resizable(GTK_WINDOW(window), FALSE);

gtk_widget_show_all(window);

gdk_threads_add_idle(pbar_p, pbar);

}

int main(int ia, char *ca[])
{

srand(time(0));
GtkApplication *app;

app = gtk_application_new("org.gtk.example", G_APPLICATION_FLAGS_NONE);

int status;

g_signal_connect(app, "activate", G_CALLBACK(activate), 0);

quit = (void *)app;
gtk_disable_setlocale();
setlocale(LC_NUMERIC, "C");
status = g_application_run(G_APPLICATION(app), ia, ca);
return status;
}
« Последнее редактирование: 12 Марта 2019, 01:19:27 от victor00000 »
Wars ~.o

 

Страница сгенерирована за 0.042 секунд. Запросов: 24.