View previous topic :: View next topic |
Author |
Message |
docdoc n00b
Joined: 08 May 2008 Posts: 5
|
Posted: Thu May 08, 2008 6:25 pm Post subject: HardwareMixerProjekt |
|
|
Hallo Gentoo Gemeinde,
Ich ich habe eine etwas ungewöhnliche Idee. Mir schweb ein Mischpult auf Basis einer normalen Hauptplatine vor.
Gespickt mit 2 bis 4 Soundkarten je nach bedarf und Verfügung.
Haptidee dabei wäre die normalen Fader für die Kanäle durch optischen Sensoren von USB-Mäusen zu realisieren um die klassischen Verschleißerscheinungen zu vermeiden.
Evt. dann auch mit Erweiterungen wie z.B. Effekteinheiten Equilizer
Mich interessiert eure Einschätzung zu meiner Idee im Bezug auf Folgendes:
Grundsätzliche Realisierbarkeit?
Wäre gentoo geeignet?
Würdet ihr andere Distributionen empfehlen? Welche? Warum?
Sind ähnliche Projekte bekannt?
Wo liegen evt. Schwierigkeiten?
Lassen sich USB Mäuse "Zweckentfremden" / so umkonfigurieren dass direkt die Lautstärke eines Kanals gesteuert wird?
Und dann habe ich natürlich immer ein offenes Ohr für eure Ideen und Anregungen.
Jetzt bin ich mal gespannt was euch so einfällt!
Greez |
|
Back to top |
|
|
Finswimmer Bodhisattva
Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Thu May 08, 2008 6:48 pm Post subject: |
|
|
Hi!
Willkommen im Forum.
Ich schieb deine Idee mal ins Diskussionforum.
Zum Thema: Wie meinst du das mit "Haptidee dabei wäre die normalen Fader für die Kanäle durch optischen Sensoren von USB-Mäusen zu realisieren um die klassischen Verschleißerscheinungen zu vermeiden. "
Was sind "Verschleißerscheinungen"?
Tobi
Moved from Deutsches Forum (German) to Diskussionsforum. _________________ Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke |
|
Back to top |
|
|
docdoc n00b
Joined: 08 May 2008 Posts: 5
|
Posted: Thu May 08, 2008 7:34 pm Post subject: |
|
|
Danke fürs Verschieben.
Bei handelsüblichen Mischpulten ist oft nach gewisser Zeit beim Verschieben der Regler ein Knacken auf dem entsprechenden Audiokanal zu hören. (Verschleiß / Abnutzung)
Dieses Knacken möchte ich unterbinden indem ich die optischen Sensoren von USB-Mäusen verwende um die Lautstärke der eingebauten Soundkarten zu kontrollieren.
Ich möchte also z.B. durch "nach-Oben-bewegen" der Maus (möglichst in Echtzeit) die Eingangslautstärke meiner Soundkarte erhöhen.
Das ganze dann mit 2 oder mehr Mäusen parallel. Für jeden Eingang eine Maussensor zur Steuerung der jeweiligen Eingangslautstärke.
Ich hoffe ich konnte meine Idee etwas genauer verdeutlichen.
docdoc |
|
Back to top |
|
|
Finswimmer Bodhisattva
Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Thu May 08, 2008 7:49 pm Post subject: |
|
|
Ok. Was spricht gegen alsamixer? _________________ Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke |
|
Back to top |
|
|
AmonAmarth l33t
Joined: 03 Mar 2005 Posts: 727
|
Posted: Thu May 08, 2008 8:15 pm Post subject: |
|
|
man kann es auch bestimmt realisieren das die mausbewegungen irgendwelche JACK mischer bedienen. gerade weil du das thema echtzeit auf den plan bringst |
|
Back to top |
|
|
docdoc n00b
Joined: 08 May 2008 Posts: 5
|
Posted: Thu May 08, 2008 8:27 pm Post subject: |
|
|
Gegen Alsamixer spricht nichts.
Meine Sorgen liegen viel mehr bei der Steuerung mit mehreren Mäusen und der Konfiguration einer Mausaxe auf einen bestimmten Eingangsregler einer Soundkarte,
Lässt sich also z.B. eine zusätzlich an einen Laptop angesteckte USB-Maus so konfigurieren dass sich nicht der Mauszeiger bewegt, sonder beim Bewegen der Main-Regler des Alsamixers gesteuert wird?
gute nacht |
|
Back to top |
|
|
manuels Advocate
Joined: 22 Nov 2003 Posts: 2146 Location: Europe
|
Posted: Fri May 09, 2008 8:34 am Post subject: |
|
|
Das geht im Prinzip schon. Du muesstest nur eine Software dafuer schreiben - X11 so umzukonfigurieren klappt glaub ich nicht. _________________ Build your own live cd with catalyst 2.0! |
|
Back to top |
|
|
Freiburg Guru
Joined: 19 Jun 2004 Posts: 504 Location: Freiburg
|
Posted: Fri May 09, 2008 6:38 pm Post subject: |
|
|
Also wenn du selber programmieren willst würde ich schauen das ich alte Joysticks zerlege und darüber die Kanäle steuere, sollte eigentlich reichen wenn du "normale" Regler nimmst und anstelle der alten Achsen mit einer Joystickplatine verbindest (ok die Spannungen und Wiederstand muss wohl angepasst werden). Danach brauchst du nurnoch eine Software die die richtige Axe auf den richtigen Kanal mapped, alernativ gibts bei Conrad oder so sicher fertige Platinen mit usb anschluss die analoge Eingänge haben, bei der Auflösung die Alsa in den Mixern bietet sollte ein 7bit A/D wandler ausreichen |
|
Back to top |
|
|
bell Guru
Joined: 27 Nov 2007 Posts: 510
|
Posted: Fri May 09, 2008 7:29 pm Post subject: |
|
|
Im Prinzip braucht man folgendes:
1. Der X-Server darf nicht auf die zu verwendenden Mäuse reagieren. Das kann man in der xorg.conf einstellen. (Nur eine bestimmte Maus angeben, und nicht /dev/input/mice)
2. Maus auslesen. Das geht z.B. über evtest aus dem games-util/joystick Paket und "evdev"-Kernel Modul. Das ergibt folgendes:
Code: |
# evtest /dev/input/event2
Input driver version is 1.0.0
Input device ID: bus 0x3 vendor 0x5fe product 0x11 version 0x110
Input device name: "Wireless Mouse Wireless Mouse"
Supported events:
Event type 0 (Sync)
Event type 1 (Key)
Event code 272 (LeftBtn)
Event code 273 (RightBtn)
Event code 274 (MiddleBtn)
Event code 275 (SideBtn)
Event code 276 (ExtraBtn)
Event type 2 (Relative)
Event code 0 (X)
Event code 1 (Y)
Event code 8 (Wheel)
Event type 4 (Misc)
Event code 4 (ScanCode)
Testing ... (interrupt to exit)
Event: time 1210360953.069137, type 2 (Relative), code 1 (Y), value 2
Event: time 1210360953.069141, -------------- Report Sync ------------
Event: time 1210360953.085137, type 2 (Relative), code 0 (X), value -2
Event: time 1210360953.085144, type 2 (Relative), code 1 (Y), value 5
Event: time 1210360953.085145, -------------- Report Sync ------------
Event: time 1210360953.101134, type 2 (Relative), code 0 (X), value -3
Event: time 1210360953.101137, type 2 (Relative), code 1 (Y), value 10
Event: time 1210360953.101138, -------------- Report Sync ------------
Event: time 1210360953.117135, type 2 (Relative), code 0 (X), value -4
Event: time 1210360953.117142, type 2 (Relative), code 1 (Y), value 11
[...]
|
3. Ein Alsa-Client, der Skriptfähig die Lautstärke ändern kann. Kenne ich jetzt spontan nicht.
4. Ein Skript, der 2 parst und 3 bedient.
Eine fertige Lösung habe ich leider nicht.
EDIT: Für 3 eignet sich amixer aus dem media-sound/alsa-utils Paket. Jetzt fehlt "nur" noch ein Skript.
EDIT2: Ich habe mit Bash etwas gespielt. Die Latenzzeiten sind nicht akzeptabel. Der Regler reagiert zu spät . Ich denke, mit C und den dazugehörigen Libs könnte man da mehr Erfolg haben. Würde mich auf jeden Fall interessieren |
|
Back to top |
|
|
docdoc n00b
Joined: 08 May 2008 Posts: 5
|
Posted: Tue May 13, 2008 4:20 pm Post subject: |
|
|
So Hallo mal wieder.
ich hab mich mal schlau gemacht was das "kleine" Programm angeht und folgendes auf die Beine gestellt:
@bell: Meine C-Version hat den Vorteil dass sie theoretisch(noch nicht getestet) auch ohne X läuft!-> später kommt die GraKa raus.
Und ich denke das ganze wird etwas flotter und reagiert "Naturgetreuer".
Nehmt bissl Rücksicht, ich hab noch nicht viel Erfahrung mit c und es fehlen auch sämtliche Sicherheitsabfragen. Das ist quasi einfach mal zum testen. (ich übernehme natürlich keine Haftung für irgendwelche Schäden)
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <linux/soundcard.h>
int main()
{
int fd; /* file descriptor for mixer device */
int vol_master; /*variable für stereolautstärke*/
int left; /*variable für linkslautstärke*/
int right; /*variable für rechtslautstärke*/
char daten[4]; /*4 byte variable um das ps2 protokoll auszuwerten*/
int byte3; /*variable für das dritte byte des ps2 protokolls*/
int x=1; /*variable endlosschleife*/
FILE *datei; /*variable für /dev/input/mouse1*/
datei = fopen("/dev/input/mice", "r+b"); /*öffnen des maus dev files*/
fd = open("/dev/mixer", O_RDONLY); /*öffnen des mixer dev files*/
do{
fgets(daten, 4, datei); /*mausdaten aus dev/input/mouse1 holen (4 char/ 4 byte)*/
byte3=(int)daten[2]; /*drittes byte aus den eigelesenen mausdaten isolieren (y-achse)*/
// printf("%i", byte3);
// printf("\n");
ioctl(fd, MIXER_READ(SOUND_MIXER_VOLUME), &vol_master); /*abfrage der stereolautstärke*/
left = vol_master & 0xff; /*aufteilung in rechten und linken kanal*/
right = (vol_master & 0xff00) >> 8; /*aufteilung in rechten und linken kanal*/
if (byte3>0){ /*bei positiver mausbewegung (y-achse)*/
if( (left+byte3)<100 ){ /*wenn die mausbewegung die maximallautstärke*/
left=right=left+byte3; /*nicht überschreitet, mausstrecke zu lautstärke addieren*/
}//left+byte3)<100 ){
else{
left=right=100;
}//else
}//(byte3>0){
if (byte3<0){ /*entsprechendes für negative bewegung in y-richtung*/
if( (left+byte3)>0 ){
left=right=left+byte3;
}//left+byte3)>0 ){
else{
left=right=0;
}//else
}//(byte3<0){
vol_master = (right << 8) + left; /*linker und rechter kanal für übergabe zusammenfassen*/
ioctl(fd, MIXER_WRITE(SOUND_MIXER_VOLUME), &vol_master); /*setzen der neuen mixereinstellungen*/
}while(x!=2);
fclose (datei); /*maus dev-datei schließen*/
close(fd); /*mixer dev-datei schließen*/
return 0;
}
Wer Lust hat kann das gern mal durch den gcc lassen und sich freuen wenn die Lautstärke (Master) sich bei Bewegung ändert.
Zum ausführen werden rootrechte benötigt(wegen Zugriff auf die Gerätedateien in /dev/).
Ich denke ich werde in der Art weitermachen und mal schauen was das nächste größere Problem wird.
Empfindlichkeit?
Linearität?
mehrere Mäuse?
Was den Vorschlag mit dem Joystick betrifft: ich möchte optische Sensoren verwenden um den Verschleiß gering zu halten. Außerdem ist das Protokoll recht simpel und ich könnte evt. auch noch die Maustasten / Mausrad verwenden.
Schön mein Thema etwas Interesse geweckt hat.
Bis bald |
|
Back to top |
|
|
Max Steel Advocate
Joined: 12 Feb 2007 Posts: 2229 Location: My own world! I and Gentoo!
|
Posted: Wed May 14, 2008 12:31 am Post subject: |
|
|
würde es statt den root-rechten nicht reichen in den richtigen Gruppen (wie uucp,usb,etc.pp.) zu sein?
oder die rule für /dev/input/mouse so ändern das es zur Gruppe mouse gehört, und der User in der Gruppe mouse vorhanden ist. (muss ja nicht mouse sein, input als Gruppenname geht auch, passt sogar eher, wenn man alle /dev/input/* da rein schiebt.).
Edith:
Achja, das nächste mal soetwas bitte in [CODE]-Tags setzen, von wegen übersichtlichkeit und so, danke! _________________ mfg
Steel
___________________
Heim-PC: AMD Ryzen 5950X, 64GB RAM, GTX 1080
Laptop: Intel Core i5-4300U, 16GB RAM, Intel Graphic
Arbeit-PC: Intel i5-1145G7, 16GB RAM, Intel Iris Xe Graphic (leider WSL2) |
|
Back to top |
|
|
docdoc n00b
Joined: 08 May 2008 Posts: 5
|
Posted: Sat May 17, 2008 10:51 am Post subject: |
|
|
Ich kenn mich mit den Rechten noch nicht wirklich gut aus. Müsste aber gehen.
Ich bin auch noch etwas verwirrt da ich Beispielprogramme getestet hab, die praktischen den gleichen Code verwenden und ohne root-Rechte laufen.
Ich schau mir mal den Code nochmal genauer an.
Mittlerweile habe ich meinen Code erweitert und kann die Empfindlichkeit einstellen.
Was die Latenz angeht war ich positiv überrascht. Also durchaus akzeptabel. Da müsste aber bei mir auch am Kernel noch was gehen.
Problematisch und unschön ist momentan dass der Lautstärkeverlauf nicht linear und auch nur in 100 Schritten einstellbar ist(0-100%).
In der unteren Hälfte ist eine verhältnismäßig große Bewegung erforderlich um einen Lautstärkeunterschied zu hören.
Keine Ahnung ob das an meiner verwendeten Hardware liegt oder immer so ist.
Hierfür ist mir noch keine gute Lösung eingefallen.
Werd jetzt mal nach ner zweiten Soundkarte schauen um weitere Tests zu machen.
bis dann. |
|
Back to top |
|
|
rumpel n00b
Joined: 05 Jul 2006 Posts: 2
|
Posted: Thu May 22, 2008 6:13 am Post subject: |
|
|
Das gnome-terminal reagiert auch auf das Scrollrad der Maus. (mal so nebenbei) |
|
Back to top |
|
|
artbody Guru
Joined: 15 Sep 2006 Posts: 489 Location: LB
|
Posted: Wed Jun 11, 2008 10:59 am Post subject: |
|
|
also wenn du als normale Maus z.B. ne MSTECH ? nimmst wird diese per udev nach /dev/input/* eingebunden
wenn du dann
für die Reglermäuse eine bestimmte Logitech nimmst kannst du über die udevrules diese auf andere devices legen .....
x11 problem weg
touchscreen _________________ Never give up
WM : E16 the true enlightenment
achim |
|
Back to top |
|
|
|