Sound Automator: Musik (Winamp) bei Videos (Youtube) automatisch anhalten und danach weiterspielen

Ein Freund hat mich vor kurzem auf eine Idee gebracht:

Jo: manchmal vergesse ich musik anzumachen und dann ärger ich mich
ich bräuchte n tool das mich immer dran erinnert wenn nix läuft^^
Flo: ja ich auch :D
Jo: weil halt so oft im internet irgendwas mit ton is
dann macht man aus
und vergisst es
Flo: ja… ich glaub ich schreib ein programm dafür^^
Jo: halt son popup
Sie haben seit X minuten keine Musik mehr gehört?
Ticken Sie noch ganz richtig?^^

Das müsste doch einfach zu realisieren sein. Fast alle Soundkarten haben mittlerweile ein Stereomix-Gerät, über welches man das Gehörte aufnehmen kann. Ich müsste also nur ein Programm schreiben, das den Stereomix öffnet, und wenn dort einige Zeit lang kein Ton rauskommt, wird z.B. eine Meldung angezeigt. (Anmerkung: seit Vista und Win 7 ist dieses “Was Sie hören” verschwunden, wenn windows-eigene Treiber verwendet werden, weil Micro$oft nicht will, dass man DRM-geschützte Musik neu aufnimmt. Mit den Treibern der Soundkartenhersteller ist das Gerät meist wieder vorhanden.)

Dann hab ich den Gedanken aber fortgeführt: Warum nur eine Meldung ausgeben, und nicht automatisch die Musik wieder starten? Und warum dann nicht direkt auch vorher die Musik automatisch anhalten? Das erste ist kein Problem, aber letzteres wird kompliziert. Denn dafür muss man z.B. den Ton von Winamp und Youtube unterscheiden, um zu erkennen, wenn ein Video gestartet wird, und vorher schon Musik läuft. Man müsste die einzelnen Kanäle abhören und das geht nicht. Dafür müsste es so etwas wie eine virtuelle Soundkarte geben… also hab ich kurz Google angeworfen und voilà: Virtual Audio Cable ist genau das, was wir brauchen. Damit kann man einfach Audiosignale zwischen beliebigen Anwendungen hin und her routen wie man möchte. Die Vollversion kostet zwar ein paat Taler, aber macht sich bezahlt.

Und hier kommt nun mein ultimatives Programm: wenn ich im Browser ein Video starte, geht bei mir nun automatisch Winamp auf Pause, und wenn das Video vorbei ist, läuft Winamp weiter. Nach dem Programmstart erscheint ein Symbol im System-Tray. Über dieses gelangt man zu den Einstellungen. Oben wird zunächst der Eingangskanal ausgewählt, auf dem das Programm lauschen soll. Anschließend sollte man die Mindest-Lautstärke einstellen, um Grundrauschen zu übergehen (wenn z.B. wie bei mir auch der Line-In abgehört wird.) Darunter kann man individuell die Automatisierung anpassen wie man möchte. Ich hoffe es ist soweit selbsterklärend, ansonsten fragt ruhig.

Wer nur erinnert werden möchte, wenn keine Musik mehr läuft, stellt das Programm ein, wie im ersten Screenshot. Oben wird der Stereomix ausgewählt. Wer mit seiner Soundkarte keinen Stereomix hinbekommt, oder wer die volle Automatisierung haben will, benötigt das oben genannte virtuelle Audiokabel und stellt das Programm ein, wie im zweiten Screenshot.

Sound Automator kann windows messages an Winamp senden oder virtuelle Tastendrücke erzeugen, dazu kann man die Hotkeys von anderen Programmen eintragen. Die Winamp-Steuerung funktinoiert aber etwas sicherer, da hier zuvor der Status des Players abgefragt wird. Für Nutzer von Foobar2000 emfiehlt sich daher z.B. das Winamp IPC Plugin.

Nach Installation des virtuellen Kabels wollen wir, dass die Systemsounds nun über dieses Kabel laufen (inklusive Youtube und allem was so im Browser vor sich hin plärrt.) Dazu muss es in der Systemsteuerung als Standardgerät ausgewählt werden. In Winamp hingegen (bzw. in eurem bevorzugten Player), wird nun der ursprüngliche Soundkanal eingestellt. Nicht der primäre Soundtreiber! (Winamp: options > preferences > output > nullsoft direct sound > configure) Zum Schluss wird das Programm “Audio Repeater” gestartet, damit wir wieder alles hören können. Dort wird bei “Wave in” wieder das virtuelle Kabel gewählt, und bei “Wave out” die Soundkarte. Mit den Werten könnt ihr etwas rumspielen, kleiner bedeutet weniger Latenz aber braucht mehr Leistung.

Anmerkungen:
Falls jemand auf die Idee kommt, und beide Varianten gleichzeitig nutzen will: man kann Sound Automator auch mehrmals mit verschiedenen Konfigurationen starten. Dazu erstellt man eine Verknüpfung und trägt bei Ziel hinter dem Programmnamen einen anderen Dateinamen für die Konfiguration ein, z.B.:
“C:\Program Files (x86)\sound_automator.exe” konfig2.ini

Audio Repeater kann man auch automatisch und direkt minimert starten. Dazu erstellt man im Autostart eine Verknüpfung mit den Eigenschaften Ausführen: “Minimiert” und Ziel:
“C:\Program Files\Virtual Audio Cable\audiorepeater_ks.exe” /Input:”Virtual Cable 1″ /Output:”Line 1/2 (M-Audio Delta Audiophile)” /BufferMs:50 /Buffers:4 /AutoStart
Die gesamten Parameter stehen in der Hilfe zu Audio Repeater.

Und hier nun der Download. Wie immer gibts keine Installation, einfach in den Programme-Ordner entpacken und eine Verknüpfung im Autostart erstellen.

spenden

Update: Ich habe gerade festgestellt, dass Sound Automator kein Device öffnet, wenn Audio Repeater in der Kernel-Streaming-Version gestartet ist. Also habe ich schnell eine Batch-Datei erstellt, mit der man das Problem für den Autostart umgehen kann. Also einfach diese Datei in den Autostart packen und die andern Verknüpfungen wieder löschen.

Seite wieder online

Anfang des Monats gab es Probleme mit dem Server, wobei leider Teile der Datenbank verloren gegangen sind. Das kommt davon, wenn man wie ich mal wieder alles bis auf den letzten Cent gespart hat und dann noch zu dumm zu faul ist, regelmäßig Backups zu machen. Naja, mit Hilfe des Google-Cashes konnte ich alles wieder rekonstruieren ;)
Die Zwischenzeit hab ich genutzt, um die Gallery-Funktion zu aktualisieren, und dann hab ich noch einen Gefällt-mir-Button und weitere social bookmarking services integriert, da ja mittlerweile irgendwie alle Web-Fuzzies von SEO reden. Jetzt ist die Seite wieder online, also weiterhin viel Spaß!

David-Czinczoll.com online!!

Endlich ist Davids neue Webseite fertig!

David hat gemalt und gezeichnet und ich habe in die Tastatur gehauen, und daraus die ultimative Webseite gebaut. Das ganze ist ein WordPress-Theme inklusive ziemlich viel Scripting für alle möglichen Animationen.

Das Ergebnis kann sich auf jeden Fall sehen (und hören) lassen:

Es gibt momentan noch nicht all zu viel Inhalt, aber das wird sich bald ändern.
Schaut mal vorbei!

Ordner-Cover für Windows 7

Ein Bild sagt mehr als Tausend Worte:

Unter Windows XP konnte man in beliebigen Ordnern ein Bild namens ‘folder.jpg’ erstellen, das dann in der Miniaturansicht automatisch als Ordnersymbol angezeigt wurde. Seit Vista gibt es ausschließlich diese aufgefächerte 3D-Variante, die aber meiner (und nicht nur meiner!) Meinung nach total unübersichtlich ist. Wieder mal ein Griff ins Klo der Microsoft-Designer.
Man kann zwar immer noch über “Eigenschaften” > “Anpassen” jedem Ordner ein Bild zuweisen. Aber das macht man nicht mal eben bei ein paar Hundert Musik-Ordnern.
Ganz klar: hier musste ich ein Programm schreiben. Ein paar Screenshots:

Und weil ich so lieb und nett bin, biete ich es euch nun zum Download an:

spenden

Das Tool benötigt keine Installation, einfach entpacken. Evtl. benötigt ihr noch den unlocker. (Sollte man so oder so auf dem PC haben.) Und wer noch auf der Suche nach einem Cover-Downolad-Tool für Musikalben ist, dem empfehle ich spontan den Album Art Downloader.

Achso, und wenn ihr irgendwelche Bugs entdeckt, sagt ruhig Bescheid.

Funksteckdose mit Zusatzschalter

Vor kurzem hab ich mir bei Pollin dieses günstige Funksteckdosen-Set gekauft, um die Lampen in meiner Wohnung fernsteuern zu können.
Die normalen Lichtschalter wollte ich aber trotzdem noch verwenden können. Entweder, wenn man die Fernbedienung verschlampt hat, oder einfach wenn man gerade direkt an der Zimmertür steht.
Also erstmal das Gehäuse öffnen, und nachsehen was sich darin verbirgt… es ist allerdings mit Sicherheitsschrauben verschlossen. Da ich keinen passenden Schraubenzieher hatte, hab ich einfach einen alten Schlitzschraubenzieher genommen, und kurz mit einer Feile bearbeitet ;)

Wie so oft gilt: man muss nicht die ganze Schaltung verstehen, um sie verändern zu können. Anscheinend werden erstmal 5 Volt erzeugt, dann gibt es einen Empfangsteil und einen Decoderchip, der über einen Transistor ein Relais ansteuert, fertig.
An dieser Stelle (also zwischen Decoder und Relais) hab ich eingegriffen, und eine kleine Schaltung dazwischen gehängt. Zuerst wird die LED ausgelötet. Dann braucht man zwei PNP-Transistoren und zwei Widerstände… ich bin kein E-Techniker, aber mit meinen Werten funktioniert es :) Das ganze hab ich wie im Bild einfach fliegend miteinander verlötet; man braucht keine extra Platine.
Den Schalter kann man mit einem Kabel herausführen. Ist er geschlossen, wird Ausgang des Decoderchips umgekehrt: d.h. an wird zu aus, aus wird zu an. Der Sinn dahinter ist, dass man nun stets den Schalter oder die Fernbedienung benutzen kann, um das Licht ein- oder auszuschalten.

Achtung: Arbeiten mit Netzspannung kann lebensgefährlich sein! Nachmachen auf eingene Gefahr. Des weiteren sind die Teile nicht galvanisch vom Netz getrennt. Im Normalfall liegen am Schalter nur 5V an, aber ich weiß nicht, was passiert, wenn irgendwas kaputt geht. Ich übernehme keine Verantwortung für Schäden oder Verletzungen!

Servo-gesteuerte Webcam

Seit Ende letzten Jahres bin auch ich stolzer Besitzer einer Webcam, die mir schon viel tolle Stunden mit Skype beschert hat… bzw. meinen Freunden, die mittlerweile so weit weg wohnen ;) Einziger Nachteil: wenn man wie ich ständig auf seinem Stuhl herumhampelt, sieht der andere nicht viel von einem :D
Um nicht ständig mit den Händen an der Cam zu wursteln, kam die Idee, sie doch einfach zu motorisieren, sodass ich sie per Software fernsteuern kann. Also wurde sie direkt mal auseinander genommen… wie die meisten Sachen, die ich in die Finger bekomme :)
Wer jetzt meint: “Das gibt es doch schon!”, dem sag ich: Ja weiß ich. Die “QuickCam Sphere” kostet bei Logitech ja auch nur 149,99 €. Aber meine hat gebraucht 10€ gekostet, ist auch von Logitech und hat (nachdem man sie richtig konfiguriert hat) auch ein recht gutes Bild. That’s the point ;)

Realisiert habe ich es, wie auch anders zu erwarten, mit einem AVR-Mikrocontroller. Und die alten Servos hab ich geschenkt bekommen – danke an Jan! :) Der Einfachheit halber wurde die Schaltung schnell mit einem Rest Lochrasterplatine aufgebaut.

Der AVR ist ein auf 12MHz übertakteter ATtiny2313V (ich habe noch so viele davon übrig.) Ich hatte zwar noch nie etwas mit Servos gemacht, aber Google ist dein Freund… hier z.B. gibt es eine perfekte Erklärung zur Servo-Ansteuerung. Für die Kommunikation zwischen PC und Controller hätte ich ganz einfach die serielle Schnittstelle nehmen können, aber Com-Ports sind heutzutage rar, mein Laptop hat z.B. gar keinen mehr. Also entschied ich mich für die kompliziertere Lösung: V-USB ist eine USB-Implementierung in Software für AVR.
Der Controller meldet sich als HID-Gerät an. Eigentlich wollte ich noch weitere Funktionen einbauen, aber der Flash war zu klein. Aber so braucht man wenigstens keinen extra Treiber für den PC. Das Steuerprogramm auf der PC-Seite ist (notgedrungen) in Delphi geschrieben. (Weiß jemand warum mein C++Builder 2010 auf Win7 x64 immer abstürzt?) Man kann damit Limits für die Servos einstellen, und sie lassen sich gleichzeitig / getrennt mit Maus oder Pfeiltasten steuern.
Wenn mir mal langweilig ist, baue ich vielleicht noch ne Gesichtserkennung ein ;)

Ihr könnt alle Quellcodes runterladen. Die Controller-Firmware steht unter der GNU General Public License Version 2. Zum kompilieren eignet sich am besten AVR Studio mit WinAVR. Die PC-Software steht unter einer einer Creative Commons Namensnennung-Keine kommerzielle Nutzung-Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz. Dafür benötigt ihr RAD-Studio 2010 und die JEDI-Komponenten. Ich habe aber auch die Executables beigefügt.

Creative Commons License spenden

Deutschunterricht und Chinese gesucht

Das hier hab ich vor ein paar Tagen am schwarzen Brett entdeckt…
auf was für bekloppte Ideen manche Leute kommen…
aber irgendwie gefällt es mir :D

Multicolor-Propellerclock

Vor ein paar Monaten hatte ich wieder einmal etwas auf youtube gesehn, das mich faszinierte. Eine Platine mit LEDs, die auf einem Motor befestigt ist, sich also dreht, und durch exaktes Ein- und Ausschalten der LEDs das Bild einer Uhr und anderen Animationen erzeugt. Mein erster Gedanke: Haben will!! :-D
Da ich zu dem Zeitpunkt sowieso gerade angefangen hatte, mit Mikrocontrollern zu experimentieren, war klar: das muss ich versuchen nachzubauen.
Also hab ich mir eine Schaltung überlegt und bei Reichelt die benötigten Bauteile bestellt. Da das ganze nicht nur einfarbig, sondern bunt werden sollte, wurden über eBay RGB-LEDs aus Hongkong bestellt.

Mir ist schon ein paar mal aufgefallen, dass ich total begeistert irgendetwas gebastelt habe, und dann, als es fertig war, ein wenig das Interesse daran verloren hab… ähnlich wie früher beim Spielen mit Lego-Technik :-D … so bin ich auf die Idee gekommen, dass das Ganze doch ein tolles Geschenk für meinen Vater zum 50. Geburtstag werden könnte. Damit war dann das Geschenk-Problem auch schon gelöst ;-)

Und dann dachte ich mir: wenn schon, denn schon! Ich könnte ja mal mit Eagle eine eigene Platine konstruieren und diese anfertigen lassen. Als ich nach einem Hersteller suchte, bin ich auf die Seite von Thomas Pfeifer gestoßen, der eine tolle Methode erfunden hat, Platinen selber herzustellen. Komplett selbst gebaut wäre natürlich noch cooler… das musste ich ausprobieren! Also wurden Kupferplatten und Chemie besorgt. Außerdem wird ein Laserdrucker benötigt – praktischer weise hatte ich mir gearde einen gekauft :-)

Um die Uhr stellen zu können, während sie sich dreht, hab ich noch eine kleine Fernbedienung entworfen. (Die nächsten Bilder sind von der Fernbedienung.)
Die entworfene Platine wird spiegelverkehrt auf glänzendes Papier ausgedruckt (damit der Toner nicht ins Papier eindringt) und anschließend auf eine Kupferplatte gebügelt. Da meine Platinen doppelseitig werden, müssen Ober- und Unterseite exakt übereinander liegen.

In warmem Wasser mit Spülmittel wird das Papier abgelöst; nun ist der Toner auf der Platte. Mit Edding bessere ich kleine Stellen nach.

Dann wird die Platte ein paar Minuten in 50°C heißes Natriumpersulfat gelegt. Eigentlich sind es keine Kupferplatten sonder mit Kupfer beschichtete Epoxidharzplatten. Das nicht vom Toner bedeckte Kupfer wird nun weggeätzt. Hinterher kann mit Aceton der Toner entfernt werden. (Die Bilder zeigen meinen zweiten Versuch, bem ersten mal hat es nicht so gut geklappt ;-) )

Nun müssen nur noch Löcher gebohrt werden und fertig ist die selbst gemachte Platine!

Anschließend werden die Bauteile draufgelötet und der Controller programmiert.

Für die Platine der Uhr das gleiche Verfahren. Zur Befestigung auf dem Motor hab ich in der Mitte ein Loch ausgesägt und das Innenteil einer Lüsteklemme darin festgelötet. An dieser Stelle danke an David für diese perfekte Idee!

Und noch drei Bilder von der fertige Uhr. Oben sieht man die ersten SMD-Chips (die kleinen schwarzen mit den vielen Beinen), die ich jemals gelötet habe… zum Glück hat es auf Anhieb funktioniert. Auf der Untenseite sieht man eine Lichtschranke, mit der die Drehzahl gemessen wird, und daneben eine Knopfzelle, um die Uhrzeit zu halten. Eine der schwierigsten Sachen war, die Stromübertragung mit Schleifkontakten vernünftig hinzubekommen. Die Schrauben sind dazu da, um die Platine auszuwuchten, damit sie sich so gleichmäßig wie möglich dreht.

Am Ende  hab ich noch ein schönes Gehäuse aus Plexiglas gebastelt. (Also kein original Plexi sondern einfach Acrylglas von Obi.) Das ist übrigens mein neuer Lieblings-Werkstoff, man kann es super sägen, schleifen und mit Aceton ganz einfach kleben.

Hier ein kleines Video:

Und noch ein paar Bilder von der Uhr in Funktion. Mit Blitz kann man sogar die Platine sehen…

Kenwood KRF-A4030 repariert

Der wunderbare Receiver, den ich zur Konfirmation bekommen habe, hat schon seit Jahren nicht mehr auf die Fernbedienung reagiert. Ich wusste aber, dass die Fernbedienung selbst in Ordnung ist (kann man man einfach mit einer Digicam testen.) Googlen zeigte, dass ich nicht der einzige mit diesem Problem war, ich fand allerdings keine Lösung dafür. Die Fernbedienung war mir aber auch nicht so wichtig, und außerdem bedeutete Reparieren, dass ich für diese Zeit keine Musik hören kann :-D
Deshalb hab ich mich so lange nicht darum gekümmert… nun hab ich das Teil doch endlich mal aufgemacht. Wirklich erstaunlich, wie wenig da nur drin ist! Nachdem ich die Frontplatte zerlegt hatte, war der Fehler schnell gefunden: der IR-Sensor hatte sich gelöst. (Mir ist zwar schleierhaft, wie ein mechanisch nicht belastetes Teil einfach so abgehen kann aber was solls.)
Wenn ihr also das gleiche Problem habt, müsst ihr gar nicht wie ich alles auseinander nehmen; einfach die drei Kontakte neu anlöten, danach sollte wieder alles funktionieren.

Searching with google I found out that I’m not the only one who has this problem with his kenwood receiver. If your receiver doesn’t respond to the remote any more, but you’re sure that the remote is ok (digicam-test), you just have to solder on these three points, that should fix it. (You don’t even have to remove the board.)

 

Beck’s-Beagle

Was man alles findet, wenn man Fotos sortiert… Eine sehr gute Freundin von mir hat kurz nach mir Geburtstag. Somit liegt es eigentlich in ihrer Hand, ob wir uns etwas schenken… doch auch wenn wir abmachen, uns nicht zu schenken, schenkt sie mir dann doch etwas, und ich bin quasi gezwungen ;)
Ich weiß schon selbst nie, was ich mir wünschen soll, weil ich mir alles was ich brauche, meistens direkt selber kaufe. Und noch schwerer find ich es, für jemand anderes ein Geschenk zu finden… Aber die cooleren Geschenke sind oft eh die, die man nicht “braucht”.
Auch letztes Jahr hatte ich am Vorabend noch kein Geschenk… Da die Dame wie ich ein Kunst- und Hundeliebhaber ist, und auch gerne mal ein, zwei, drei Bierchen trinkt :D hatte ich dann spontan die Idee, diesen kleinen Kerl für sie zu basteln.
Man braucht eigentlich nur eine Hand voll Kronkorken, Zange, Seitenschneider, dickes Lötzinn, einen nicht zu schwachen Lötkolben und etwas Geschick. Wer es nachbauen möchte, muss nicht mal mehr kreativ sein ;)