mikrocontroller.net

Forum: PC-Programmierung Soundkarte zeitgesteuert "dimmen"


Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hoere in der Werkstatt auf dem Rechner Radio von dieser 
Internetseite:
http://www.surfmusik.de/
Mein Lieblingssender hat die unangenehme Eigenschaft, jeweils 3 Minuten
vor der vollen Stunde respektive halben Stunde die Modulation 
hochzuziehen
und mich mit der immer gleichen Reklame zuzudroehnen...:-(

Jetzt frage ich:
Ist es moeglich ein Programm zu schreiben, was im Hintergrund auf dem
Rechner laueft und die Systemzeit holt. Wenn es erkennt, dass es z.B.
8.57 Uhr ist, soll die Lautstaerke stark abgesenkt bzw. ganz 
unterdrueckt
werden, bis es 9 Uhr geworden ist. Der naechste Vorgang waere dann um
9.27 Uhr bis 9.30 Uhr.

Das Betriebssystem ist Windows XP. Ich habe vor Jahren mit Turbo-Pascal
auf dem Rechner herumgetobt, aber ob und womit sich die obige Funktion
erreichen laesst, weiss ich nicht.

MfG Paul

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sicher geht das, wenn Du eine Programmiersprache verwendest, die 
Win32-API-Aufrufe ausführen kann.

Anzusteuern ist der Multimediamixer, hier ein Beispiel dafür in C++ 
(MFC):

http://www.codeproject.com/KB/audio-video/alexfmixer.aspx

oder hier für Freunde des .Net-Geraffels in Form von C#:

http://www.codeproject.com/KB/audio-video/AudioLib.aspx

Autor: melt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls du Turbo-Pascal kennst wäre eventuell Delphi eine Variante. Ich 
bin mir sicher schon Codeschnipsel für die Mixersteuerung unter 
www.delphipraxis.de gesehen zu haben.

Autor: EagleUser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wirklich Flux wäre das mit einem netten Qt Tool...
QTime + QSound sind die gesuchten Klassen.

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für Eure Hinweise und Ratschläge. Da werde ich mich am Besten bei
Delphi umsehen; -mit dem C++ -Kram komme ich überhaupt nicht klar.

Was mich wundert ist, daß ich der Erste sein soll, der von der Reklame
geplagt so ein Programm sucht.

MfG Paul

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wer weiß... So ein Programm schreibt man doch in 5min. Wenn noch schön 
aussehen soll vielleicht in 10.

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Samuel schrob:
>So ein Programm schreibt man doch in 5min. Wenn noch schön
>aussehen soll vielleicht in 10.

Fein, dann schreib es mir mal in 10 Minuten; es muß noch nicht einmal
schön aussehen.
;-)

SCNR
Paul

Autor: Christopher Schenk (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
War mal eben so Frei

Hoffe es klappt;)

Autor: Christopher Schenk (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Sorry Falsch!

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm... irgendwas fehlt mir ;)
err:module:import_dll Library mscoree.dll (which is needed by L"Z:\\var\\tmp\\Radio.exe") not found
err:module:LdrInitializeThunk Main exe initialization for L"Z:\\var\\tmp\\Radio.exe" failed, status c0000135

oder
** (Radio.exe:4824): WARNING **: The following assembly referenced from /var/tmp/Radio.exe could not be loaded:
     Assembly:   Microsoft.VisualBasic    (assemblyref_index=1)
     Version:    10.0.0.0
     Public Key: b03f5f7f11d50a3a
The assembly was not found in the Global Assembly Cache, a path listed in the MONO_PATH environment variable, or in the location of the executing assembly (/var/tmp/).


** (Radio.exe:4824): WARNING **: Could not load file or assembly 'Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sieht nicht schön aus, aber so war es abgemacht :-)

Autor: Sam .. (sam1994)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Sorry hab nicht mehr rein geschaut. Ich hab grad auch mal so ein 
Progrämmchen geschrieben. Weiß aber nicht ob es funktioniert, da auf 
vista64bit der Zugriff über winmm.dll da nicht funzt. Vielleicht kanns 
ja einer testen. Achja Quellcode hab ich auch beigelegt.

Darf man fragen was du mit radio machst? Bei mir springt sofort Norton 
ein. Ich führs mal auf der VM aus. Da lässt es mich wenigstens in Ruhe.
 EDIT: Also Net4 installiere ich mir nicht auf der VM. NET2.0 hab ich 
drauf mehr aber auch nicht.

Autor: Willnich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
autohotkey geht bestimmt..

http://www.google.de/search?q=mute+schedule

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, jetzt bin ich dazu gekommen, die Programme von Christopher und von
Samuel zu testen:

Zunächst möchte ich mich bei Euch beiden für die Programmierarbeit
bedanken.

@Christopher
Dein Programm tut nach der Installation von einer neueren Version von
Net-Framework prima seinen Dienst. Ich habe es mit dem "künstlichen"
Verstellen der Systemzeit ausprobiert.

@Samuel
Auch Dein Programm startet, allerdings bediene ich es wohl falsch:
Ich weiß nicht, wie ich die beiden Intervalle (von Minute 57 bis
Minute 0 und von Minute 27 bis 30) darin einstellen kann.

Aber: Du hast das Programm entgegen meiner Vermutung doch geschrieben.
;-)
Es war also keine hohle Phrase von Dir.

MfG Paul

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du stellst die Zeit einfach über Nummern Feld ein. Einmal 3 min und 
einmal 57min. Reihenfolge ist egal. Aber ich glaub das Lautstärke 
auslesen / setzen klappt nicht richtig. Ich muss mal nach einer Methode 
für Vista64bit suchen, dann debug ich mal mein prog.

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Programm setzt unter Vista seine eigene Lautstärke. Wie es unter XP 
aussieht weiß ich nicht. Aber funktionieren tut es. Mal schauen wie es 
global geht. Bei dir sind es 2  Intervalle. Da hab ich wohl was 
überlesen. Aber wenn mein Programm funktionieren sollte musst du es nur 
2mal starten.
Aber ehrlich gesagt außer von Codeprojekt find ich nichts über global 
Lautstärke verändern mit vista.

Autor: Juppi J. (juppiii)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Na Paul,bist du zufrieden?

Wieviel Zeit haben den die Proghersteller wirklich gebraucht?
Wird oft untertrieben bei Home.

Gruß

Autor: Christopher Schenk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich finde ein vernünftiges Programm schreibt man nicht mal eben so 
in 5 oder 10 Minuten ich für meins zwar ca 10 gebraucht aber dafür ist 
es auch übertrieben sch....


MFG

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Juppi
Ja, ich bin vollkommen zufrieden.

@Christopher
Das Programm tut genau das, was es soll. Wenn Du schon so gut bist, es
zu schreiben, werde ich den Teufel tun, auch noch Ansprüche zu stellen.

Ich habe zwar kein Problem, den Algorithmus dafür in Pseudocode hin-
zuschreiben, aber ich kann ihn nicht in die Syntax der "modernen"
Sprachen umsetzen. Diese objektorientierte Denkweise kriege ich nicht
mehr in meinen alten Kopf.
;-)

Nur eine Frage: Womit hast Du es geschrieben (C, C++, C#)

MfG Paul

Autor: Christopher Schenk (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Paul,
geschrieben habe ich es mit Visual Baisic .Net mit Visual Studio 2010

Nebenbei ne neue Version;)

MFG

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Christopher
Aha.
In Visual Basic würde ich wahrscheinlich sogar den Quelltext im Formular 
verstehen.

Das Programm habe ich gleich getestet; -es fühlt sich als "R" in der
Taskleiste ziemlich wohl.

Danke noch einmal für Deine Taten!
:-)
MfG Paul

Autor: Christopher Schenk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier nochmal der Code:

Public Class Form1

    Private Const APPCOMMAND_VOLUME_MUTE As Integer = &H80000
    Private Const WM_APPCOMMAND As Integer = &H319
    Declare Function SendMessageW Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr

    Dim flag As Boolean

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If Now.Minute = 27 Or Now.Minute = 57 Then
            If Not flag Then
                SendMessageW(Me.Handle, WM_APPCOMMAND, Me.Handle, CType(APPCOMMAND_VOLUME_MUTE, IntPtr))
                flag = True
            End If
        ElseIf Now.Minute = 30 Or Now.Minute = 0 Then
            If flag = True Then
                flag = False
                SendMessageW(Me.Handle, WM_APPCOMMAND, Me.Handle, CType(APPCOMMAND_VOLUME_MUTE, IntPtr))
            End If
        End If
    End Sub


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Start()
        Me.Visible = False
    End Sub

    Private Sub ToolStripMenuItem1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem1.Click
        Close()
    End Sub
End Class

Sorry für den Rechtschreibfehler es heißt natürlich Basic;)

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Prima!
Ich hatte in VB6 angefangen, das Programm zu schreiben und habe es da
auch geschafft, mir die Minuten aus der Systemzeit zu holen.
Dafür habe ich ein Buch hier.
Aber um den Audiomixer anzusteuern muß man, wie ich herausfand die
Bibliothek "winmm.lib" irgendwie mit hineinknoten. Das gelang mir nicht.
:-(
Das VB-Net scheint sich leider sehr von VB zu unterscheiden, aber ich
werde natürlich versuchen, mich da hineinzufuchsen. Das ist nicht so
ein wildes Zeug wie C++
(==!, {} und solche Sachen)
;-)
MfG Paul

Autor: Juppi J. (juppiii)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja Paul, mit .Net kann man nette Sachen machen,
du wolltest ja nicht.
MfG

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.