updated
This commit is contained in:
parent
0160622031
commit
84d2041fd6
@ -1,2 +1,2 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
arecord --rate 10000 --buffer-size=1024 -D loopout -MNqc 1 -f S24_LE -t raw | hexdump -e '/4 " %d"' | tr -d '*' | ./spark
|
arecord --buffer-size=128 -Dloopout -MNqc1 -fS24_LE -traw 2> /dev/null | hexdump -e '/4 "%d "' | ./spark
|
||||||
|
@ -9,35 +9,19 @@
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#define NARGS 4096
|
#define NARGS 1024
|
||||||
#define ARG_SIZE 50
|
#define ARG_SIZE 50
|
||||||
#define MAX 1000000
|
|
||||||
#define MIN 90000
|
|
||||||
|
|
||||||
int args;
|
int args;
|
||||||
double values[NARGS + 1];
|
int values[NARGS + 1];
|
||||||
|
|
||||||
struct winsize ws;
|
struct winsize ws;
|
||||||
|
|
||||||
int parse_double(const char *str, double *res) {
|
|
||||||
char *ptr;
|
|
||||||
|
|
||||||
*res = strtod(str, &ptr);
|
|
||||||
if (*ptr)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int add_value(const char *str) {
|
int add_value(const char *str) {
|
||||||
if (args >= sizeof(values) / sizeof(double) || args > ws.ws_col)
|
if (args >= sizeof(values) / sizeof(int) || args > ws.ws_col)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
double val = 0;
|
values[args] = atoi(str);
|
||||||
if (!parse_double(str, &val))
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
values[args] = val;
|
|
||||||
args++;
|
args++;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -47,7 +31,6 @@ void stdin_read(void) {
|
|||||||
char arg[ARG_SIZE + 1];
|
char arg[ARG_SIZE + 1];
|
||||||
char *p = arg;
|
char *p = arg;
|
||||||
|
|
||||||
fflush(stdin);
|
|
||||||
while (1) {
|
while (1) {
|
||||||
int c = getchar();
|
int c = getchar();
|
||||||
if (c == EOF)
|
if (c == EOF)
|
||||||
@ -71,26 +54,6 @@ void stdin_read(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void print(double value, double diff, int col) {
|
|
||||||
if (col % 2)
|
|
||||||
return;
|
|
||||||
|
|
||||||
int lvl = 0;
|
|
||||||
if (value > 0)
|
|
||||||
lvl = (int)round((value - MIN + 1) / diff);
|
|
||||||
|
|
||||||
else
|
|
||||||
lvl = (int)round(((value * -1) - MIN + 1) / diff);
|
|
||||||
|
|
||||||
for (int i = 0; i < lvl; i++) {
|
|
||||||
if (value > 0)
|
|
||||||
mvprintw((ws.ws_row / 2) - i, col, "$");
|
|
||||||
|
|
||||||
else
|
|
||||||
mvprintw((ws.ws_row / 2) + i, col, "$");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void sig_handler(int sig) {
|
void sig_handler(int sig) {
|
||||||
(void)sig;
|
(void)sig;
|
||||||
|
|
||||||
@ -100,25 +63,44 @@ void sig_handler(int sig) {
|
|||||||
|
|
||||||
int main(void) {
|
int main(void) {
|
||||||
signal(SIGINT, sig_handler);
|
signal(SIGINT, sig_handler);
|
||||||
|
signal(SIGTERM, sig_handler);
|
||||||
if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) < 0)
|
if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) < 0)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
initscr();
|
initscr();
|
||||||
|
noecho();
|
||||||
curs_set(0);
|
curs_set(0);
|
||||||
timeout(0);
|
timeout(0);
|
||||||
|
|
||||||
double diff = MAX - MIN + 1;
|
int min = 0;
|
||||||
if (diff < 1)
|
int max = 0;
|
||||||
diff = 1;
|
|
||||||
|
|
||||||
|
int middle = ws.ws_row / 2;
|
||||||
while (1) {
|
while (1) {
|
||||||
args = 0;
|
args = 0;
|
||||||
stdin_read();
|
stdin_read();
|
||||||
|
|
||||||
clear();
|
clear();
|
||||||
|
for (int i = 0; i < args; i++) {
|
||||||
|
if (values[i] < min)
|
||||||
|
min = values[i];
|
||||||
|
|
||||||
for (int i = 1; i < args - 1; i++)
|
else if (values[i] > max)
|
||||||
print((values[i - 1] + values[i] + values[i + 1]) / 3, diff, i);
|
max = values[i];
|
||||||
|
|
||||||
|
int val = (values[i] - min) * 10 / ((max - min) + 1);
|
||||||
|
for (int j = 0; j < val; j++) {
|
||||||
|
mvprintw(middle - 2 - j, i, "#");
|
||||||
|
mvprintw(middle + 2 + j, i, "#");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Vol */
|
||||||
|
int val = (values[args - 1] - min) * ws.ws_col / ((max - min) + 1);
|
||||||
|
for (int j = 0; j < val; j++) {
|
||||||
|
mvprintw(middle - 1, ws.ws_col - j, "<=");
|
||||||
|
mvprintw(middle + 1, ws.ws_col - j, "<=");
|
||||||
|
}
|
||||||
|
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user