DANKE Prog@ndy für dieses Geschenk!
Beiträge von eukalyptus
-
-
Die richtige Quelle ist immer noch eine Dokumentation:
http://www.com.it-berater.org/gdiplus/GdiPlus.htm
Das ist auch meine QuelleWeiters findet man auch in der GDIP.au3 immer was brauchbares!
-
Das sollte helfen:
[autoit]DllCall($ghGDIPDll, "int", "GdipSetInterpolationMode", "handle", $hGraphic, "int", 5)
[/autoit]mfgE
-
Ich würde das in etwa so machen:
Spoiler anzeigen
[autoit]#include <Sound.au3>
[/autoit] [autoit][/autoit] [autoit]HotKeySet("!1", "Song")
[/autoit] [autoit][/autoit] [autoit]
HotKeySet("!2", "Song")
HotKeySet("!3", "Song")
HotKeySet("!4", "Song")
HotKeySet("!5", "Song")HotKeySet("{ESC}", "Stop")
[/autoit] [autoit][/autoit] [autoit]Global $aSnd_id[6], $iSnd_id
[/autoit] [autoit][/autoit] [autoit]$aSnd_id[1] = _SoundOpen(@ScriptDir & "\1.mp3")
[/autoit] [autoit][/autoit] [autoit]
$aSnd_id[2] = _SoundOpen(@ScriptDir & "\2.mp3")
$aSnd_id[3] = _SoundOpen(@ScriptDir & "\3.mp3")
$aSnd_id[4] = _SoundOpen(@ScriptDir & "\4.mp3")
$aSnd_id[5] = _SoundOpen(@ScriptDir & "\5.mp3")While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(10)
WEndFunc Song()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Switch @HotKeyPressed
Case "!1"
$iSnd_id = 1
Case "!2"
$iSnd_id = 2
Case "!3"
$iSnd_id = 3
Case "!4"
$iSnd_id = 4
Case "!5"
$iSnd_id = 5
EndSwitch
_SoundPlay($aSnd_id[$iSnd_id])
EndFuncFunc Stop()
[/autoit]
_SoundStop($aSnd_id[$iSnd_id])
EndFuncDas Problem mit dem Zeilenabstand hab ich auch manchmal auf meinem Rechner in der Firma - hab allerdings keine Ahnung wieso...
mfgE
-
liegen Bass.dll, Bass.au3 und BassConstants.au3 im Scriptordner?
-
In etwa so:
[autoit]#AutoIt3Wrapper_UseX64=n
[/autoit]
#include "Bass.au3"
_BASS_Startup()
_BASS_RecordInit(-1)
_BASS_RecordSetInput(0, $BASS_INPUT_ON, -1)Dieses Script setzt den ersten Input der (in Windows als default gesetzten) Soundkarte aktiv
_BASS_RecordInit: Welche Soundkarte soll initialisiert werden -1=default, 0=erste, 1=zweite Soundkarte
_BASS_RecordSetInput:
erster Parameter: Input der Soundkarte (welche Zahl dem Mikroeingang bzw. dem Stereomix entspricht mußt du halt ausprobieren)
zweiter Parameter: Input aktiv oder inaktiv setzen (= Hakchen im Windows Mixer)
dritter Parameter: Lautstärke; -1=nicht verändern (=Slider im Windows Mixer)Zu beachten ist, daß unter WinXP die Soundkarten so "dargestellt" werden, wie sie hardwaremässig auch aussehen. (Eine Soundkarte kann mehrere Inputs haben)
Win Vista/7 stellt jeden einzelnen Input einer Soundkarte als "eigene" Soundkarte dar...Spoiler anzeigen
[autoit]#AutoIt3Wrapper_UseX64=n
[/autoit] [autoit][/autoit] [autoit]
#include "Bass.au3"OnAutoItExitRegister("_FreeBass")
[/autoit] [autoit][/autoit] [autoit]Global $iDevice, $iInput, $aInfo, $sName
[/autoit] [autoit][/autoit] [autoit]_BASS_Startup()
[/autoit] [autoit][/autoit] [autoit]$iDevice = 0
[/autoit] [autoit][/autoit] [autoit]
While 1
$aInfo = _BASS_RecordGetDeviceInfo($iDevice)
If @error Then ExitLoop
ConsoleWrite(@CRLF & ">Device found: " & $aInfo[0] & @CRLF)
If BitAND($aInfo[2], $BASS_DEVICE_ENABLED) Then
ConsoleWrite("+" & @TAB & "Device is enabled" & @CRLF)
Else
ConsoleWrite("!" & @TAB & "Device is disabled" & @CRLF)
ContinueLoop
EndIf
If BitAND($aInfo[2], $BASS_DEVICE_DEFAULT) Then ConsoleWrite("-" & @TAB & "Device is the system default" & @CRLF)
_BASS_RecordInit($iDevice)
$iInput = 0
While 1
$sName = _BASS_RecordGetInputName($iInput)
If @error Then ExitLoop
$aInfo = _BASS_RecordGetInput($iInput)
ConsoleWrite(">" & @TAB & @TAB & "Input found: " & $sName & @CRLF)
Switch BitAND($aInfo[0], $BASS_INPUT_OFF)
Case 0
ConsoleWrite("+" & @TAB & @TAB & @TAB & "Input is ON" & @CRLF)
Case Else
ConsoleWrite("!" & @TAB & @TAB & @TAB & "Input is OFF" & @CRLF)
EndSwitch
If BitAND($aInfo[0], $BASS_INPUT_TYPE_DIGITAL) Then ConsoleWrite("-" & @TAB & @TAB & @TAB & "Digital input source, for example, a DAT or audio CD." & @CRLF)
If BitAND($aInfo[0], $BASS_INPUT_TYPE_LINE) Then ConsoleWrite("-" & @TAB & @TAB & @TAB & "Line-in. On some devices, 'Line-in' may be combined with other analog sources into a single BASS_INPUT_TYPE_ANALOG input." & @CRLF)
If BitAND($aInfo[0], $BASS_INPUT_TYPE_MIC) Then ConsoleWrite("-" & @TAB & @TAB & @TAB & "Microphone." & @CRLF)
If BitAND($aInfo[0], $BASS_INPUT_TYPE_SYNTH) Then ConsoleWrite("-" & @TAB & @TAB & @TAB & "Internal MIDI synthesizer." & @CRLF)
If BitAND($aInfo[0], $BASS_INPUT_TYPE_CD) Then ConsoleWrite("-" & @TAB & @TAB & @TAB & "Analog audio CD." & @CRLF)
If BitAND($aInfo[0], $BASS_INPUT_TYPE_PHONE) Then ConsoleWrite("-" & @TAB & @TAB & @TAB & "Telephone." & @CRLF)
If BitAND($aInfo[0], $BASS_INPUT_TYPE_SPEAKER) Then ConsoleWrite("-" & @TAB & @TAB & @TAB & "PC speaker." & @CRLF)
If BitAND($aInfo[0], $BASS_INPUT_TYPE_WAVE) Then ConsoleWrite("-" & @TAB & @TAB & @TAB & "The device's WAVE/PCM output." & @CRLF)
If BitAND($aInfo[0], $BASS_INPUT_TYPE_AUX) Then ConsoleWrite("-" & @TAB & @TAB & @TAB & "Auxiliary. Like 'Line-in', 'Aux' may be combined with other analog sources into a single BASS_INPUT_TYPE_ANALOG input on some devices." & @CRLF)
If BitAND($aInfo[0], $BASS_INPUT_TYPE_ANALOG) Then ConsoleWrite("-" & @TAB & @TAB & @TAB & "Analog, typically a mix of all analog sources." & @CRLF)
If BitAND($aInfo[0], $BASS_INPUT_TYPE_UNDEF) Then ConsoleWrite("-" & @TAB & @TAB & @TAB & "Undefined" & @CRLF)$iInput += 1
[/autoit] [autoit][/autoit] [autoit]
WEnd_BASS_RecordFree()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$iDevice += 1
ConsoleWrite(@CRLF)
WEndFunc _FreeBass()
[/autoit]
If _BASS_RecordGetDevice() <> -1 Then _BASS_RecordFree()
EndFunc ;==>_FreeBassmfgE
-
Das gefällt mir
Ich möchte noch auf die Programmiersprache Ook! hinweisen:
-
Such mal im Forum nach _Bass_RecordSetInput
mfgE
-
Im Id3v2 Tag können große Datenmengen gespeichert sein (z.B.: Coverbilder)
Vielleicht liegt das Problem ja hier... -
Hi
Um 2 Lieder gleichzeitig abzuspielen brauchst du nur 2 Streams zu starten:
Spoiler anzeigen
[autoit]#include "Bass.au3"
[/autoit] [autoit][/autoit] [autoit]$hGui = GUICreate("", 150, 120)
[/autoit] [autoit][/autoit] [autoit]
$hSlider1 = GUICtrlCreateSlider(35, 10, 30, 100, 0x0006)
$hSlider2 = GUICtrlCreateSlider(85, 10, 30, 100, 0x0006)
GUISetState()_BASS_Startup()
[/autoit] [autoit][/autoit] [autoit]_BASS_Init(0, -1, 44100, 0, "")
[/autoit] [autoit][/autoit] [autoit]$sFile1 = FileOpenDialog("Open...", "", "playable formats (*.MP3;*.MP2;*.MP1;*.OGG;*.WAV;*.AIFF;*.AIF)")
[/autoit] [autoit][/autoit] [autoit]
$sFile2 = FileOpenDialog("Open...", "", "playable formats (*.MP3;*.MP2;*.MP1;*.OGG;*.WAV;*.AIFF;*.AIF)")$hStream1 = _BASS_StreamCreateFile(False, $sFile1, 0, 0, 0)
[/autoit] [autoit][/autoit] [autoit]
$hStream2 = _BASS_StreamCreateFile(False, $sFile2, 0, 0, 0)_BASS_ChannelPlay($hStream1, True)
[/autoit] [autoit][/autoit] [autoit]
_BASS_ChannelPlay($hStream2, True)While _BASS_ChannelIsActive($hStream1)
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
Switch $msg
Case -3
ExitLoop
Case $hSlider1
_BASS_ChannelSetAttribute($hStream1, $BASS_ATTRIB_VOL, (100 - GUICtrlRead($hSlider1)) / 100)
Case $hSlider2
_BASS_ChannelSetAttribute($hStream2, $BASS_ATTRIB_VOL, (100 - GUICtrlRead($hSlider2)) / 100)
EndSwitch
Sleep(20)
WEnd_BASS_StreamFree($hStream1)
[/autoit] [autoit][/autoit] [autoit]
_BASS_StreamFree($hStream2)_BASS_Free()
[/autoit]Wenn du mit dem zusammengemixten Signal noch was machen möchtest, z.B. Gesammtlautstärke abfragen, dann solltest du _BASS_Mixer_StreamCreate und _BASS_Mixer_StreamAddChannel verwenden.
Spoiler anzeigen
[autoit]#include "Bass.au3"
[/autoit] [autoit][/autoit] [autoit]
#include "BassMix.au3"$hGui = GUICreate("", 150, 120)
[/autoit] [autoit][/autoit] [autoit]
$hSlider1 = GUICtrlCreateSlider(35, 10, 30, 100, 0x0006)
$hSlider2 = GUICtrlCreateSlider(85, 10, 30, 100, 0x0006)
GUISetState()_BASS_Startup()
[/autoit] [autoit][/autoit] [autoit]
_BASS_MIX_Startup()_BASS_Init(0, -1, 44100, 0, "")
[/autoit] [autoit][/autoit] [autoit]$sFile1 = FileOpenDialog("Open...", "", "playable formats (*.MP3;*.MP2;*.MP1;*.OGG;*.WAV;*.AIFF;*.AIF)")
[/autoit] [autoit][/autoit] [autoit]
$sFile2 = FileOpenDialog("Open...", "", "playable formats (*.MP3;*.MP2;*.MP1;*.OGG;*.WAV;*.AIFF;*.AIF)")$hStream1 = _BASS_StreamCreateFile(False, $sFile1, 0, 0, $BASS_STREAM_DECODE)
[/autoit] [autoit][/autoit] [autoit]
$hStream2 = _BASS_StreamCreateFile(False, $sFile2, 0, 0, $BASS_STREAM_DECODE)$hMixer = _BASS_Mixer_StreamCreate(44100, 2, 0)
[/autoit] [autoit][/autoit] [autoit]
_BASS_Mixer_StreamAddChannel($hMixer, $hStream1, 0)
_BASS_Mixer_StreamAddChannel($hMixer, $hStream2, 0)_BASS_ChannelPlay($hMixer, True)
[/autoit] [autoit][/autoit] [autoit]While _BASS_ChannelIsActive($hMixer)
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
Switch $msg
Case -3
ExitLoop
Case $hSlider1
_BASS_ChannelSetAttribute($hStream1, $BASS_ATTRIB_VOL, (100 - GUICtrlRead($hSlider1)) / 100)
Case $hSlider2
_BASS_ChannelSetAttribute($hStream2, $BASS_ATTRIB_VOL, (100 - GUICtrlRead($hSlider2)) / 100)
EndSwitch
Sleep(20)
WEnd_BASS_StreamFree($hStream1)
[/autoit] [autoit][/autoit] [autoit]
_BASS_StreamFree($hStream2)_BASS_Free()
[/autoit]mfgE
-
Neue Version; siehe Post 1
-
Mittlerweile werden die Vuvuzelas von vielen Fernsehanstalten herausgefiltert (und auch teilw. Fangesänge mit dem Sampler eingespielt)
Vuvuzelas in action: http://www.youtube.com/watch?v=NXPPyjtw5WU
-
Oberösterreich, also auch Ausland
-
Hi
Das Aufnahmescript ist eigentlich ganz einfach:
Spoiler anzeigen
[autoit]#AutoIt3Wrapper_UseX64=n
[/autoit] [autoit][/autoit] [autoit]
#include "Bass.au3"
#include "BassEnc.au3"
#include "BassExt.au3"HotKeySet("{ESC}", "_Exit")
[/autoit] [autoit][/autoit] [autoit]OnAutoItExitRegister("_FreeBass")
[/autoit] [autoit][/autoit] [autoit]Global $hRecord, $hEncoder
[/autoit] [autoit][/autoit] [autoit]_BASS_Startup()
[/autoit] [autoit][/autoit] [autoit]
_BASS_ENCODE_Startup()
_BASS_EXT_Startup()_BASS_RecordInit(0)
[/autoit] [autoit][/autoit] [autoit]
_BASS_RecordSetInput(0, $BASS_INPUT_ON, -1)
$hRecord = _BASS_RecordStart(44100, 2, 0, $BASS_EXT_RecordProc)
$hEncoder = _BASS_Encode_Start($hRecord, @ScriptDir & "\BASS_EXAMPLE.wav", $BASS_ENCODE_PCM)While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(1000)
WEndFunc _FreeBass()
[/autoit] [autoit][/autoit] [autoit]
If $hEncoder Then _BASS_Encode_Stop($hEncoder)
If _BASS_RecordGetDevice() <> -1 Then _BASS_RecordFree()
EndFunc ;==>_FreeBassFunc _Exit()
[/autoit]
ShellExecute(@ScriptDir & "\BASS_EXAMPLE.wav")
Exit
EndFunc ;==>_ExitDieses Script nimmt von Device Nr.: 0 / Input Nr.: 0 auf
welcher Input jetzt der richtige ist, kannst du mit diesem Script ausprobieren:
Spoiler anzeigen
[autoit]#AutoIt3Wrapper_UseX64=n
[/autoit] [autoit][/autoit] [autoit]
#include "Bass.au3"Global $iDevice, $iInput, $aInfo, $sName
[/autoit] [autoit][/autoit] [autoit]_BASS_Startup()
[/autoit] [autoit][/autoit] [autoit]$iDevice = 0
[/autoit]
While 1
$aInfo = _BASS_RecordGetDeviceInfo($iDevice)
If @error Then ExitLoop
ConsoleWrite(@CRLF & "+---------------------------------" & @CRLF)
ConsoleWrite(">" & $aInfo[0] & @CRLF)
_BASS_RecordInit($iDevice)
$iInput = 0
While 1
$sName = _BASS_RecordGetInputName($iInput)
If @error Then ExitLoop
ConsoleWrite("-" & $sName & @CRLF & "+" & @TAB & $iDevice & "/" & $iInput & @CRLF)
$iInput += 1
WEnd
ConsoleWrite(@CRLF & "+---------------------------------" & @CRLF)
_BASS_RecordFree()
$iDevice += 1
WEndDas liefert bei mir unter WinXP:
Spoiler anzeigen
Code
Alles anzeigen+--------------------------------- >X-Fi Surround 5.1 What U Hear -Was Sie hören + 0/0 +--------------------------------- +--------------------------------- >Realtek HD Audio Input -Mikrofon + 1/0 -Stereomix + 1/1 +--------------------------------- +--------------------------------- >X-Fi Surround 5.1 Line/Mic-In -Eingang/Mikro + 2/0 +---------------------------------
und unter Win7:
Spoiler anzeigen
Code
Alles anzeigen+--------------------------------- >Eingang/Mikro (SB X-Fi Surround -Hauptlautstärke + 0/0 +--------------------------------- +--------------------------------- >Stereo Mix (Realtek High Defini -Hauptlautstärke + 1/0 +--------------------------------- +--------------------------------- >Microphone (Realtek High Defini -Hauptlautstärke + 2/0 +--------------------------------- +--------------------------------- >Was Sie hören (SB X-Fi Surround -Hauptlautstärke + 3/0 +---------------------------------
In meinem Fall kann ich den Ausgang der Realtek-Soundkarte über Stereomix und den Ausgang der Creative über "Was Sie hören" aufnehmen.
Diese beiden Hersteller bieten dieses Feature an - das ist quasi, als würde man ein Kabel vom Output wieder in den Input stecken...
Das können aber nicht alle SoundkartenWenn ich jetzt den Ausgang der Realteksoundkarte aufnehmen will (Stereomix), muß ich auf WinXP
[autoit]_BASS_RecordInit(1)
[/autoit]
_BASS_RecordSetInput(1, $BASS_INPUT_ON, -1)
[autoit]
und auf Win7_BASS_RecordInit(1)
[/autoit]
_BASS_RecordSetInput(0, $BASS_INPUT_ON, -1)schreiben
evtl. sind auf Win 7 / Vista manche Inputs deaktiviert und müssen erst in der Systemsteuerung aktiviert werden...
die benötigten bass-UDF´s sind im Anhang
-
Manche Hersteller haben eine Möglichkeit in ihre Soundkarte eingebaut, um den Ausgang aufzunehmen.
Bei Creative findet man z.B. neben dem Mikrofoneingang die Auswahlmöglichkeit "Was Sie hören"
Bei Realtek nennt sich das "Stereomix"Um das zu testen, kannst du ja mal meinen Rekorder ausprobieren (und evtl. auch den Code verwenden)
Falls ich morgen etwas Zeit finde, dann kann ich ja auch ein kurzes Beispiel scripten...mfgE
-
♪♫happy birthday to you ♪♬ happy birthday to you ♫ happy biiirthdaayyy liebe Aaliiinaaaaaa ☼ happy ♯♪ biiirthdayii toouuu ♪♬ youuuuuu ♫♪ *sing*
-
Scripte mit bass.dll müssen im X86 Modus laufen:
[autoit]#AutoIt3Wrapper_UseX64=n
[/autoit]mfgE
-
Auch von mir noch recht herzlichen Glückwunsch!
-
Bei mir klappt es auch ohne Probleme.
Danke, kann ich echt gut gebrauchen!
-
Hi
Wie man den Audiostream zwischen Player und Soundkarte verändert, weiß ich leider nicht!
Deine Soundkarte hat vielleicht ein Controlpanel mit einem EQ, den du mit AutoIt fernsteuern kannst?Falls nicht, dann würde ich das mal so probieren:
Möglicheit A) Das Motherboard hat einen Onboard Soundchip:
Diesen setzt du als Standartgerät in Windows und aktivierst im Windows-Mixer "StereoMix"
Dann erstellst du ein Script, welches den Stereomix dieses Soundchips aufnimmt, durch einen EQ schickt und dann über die "richtige" Soundkarte abspielt.Möglichkeit B) du verwendest einen virtuellen Audiotreiber, wie z.b.: http://software.muzychenko.net/eng/vac.html
evtl. findest du auch eine Free oder Opensource Variante.
Im Prinzip funktioniert das Routing dann genauso wie (A)Möglichkeit C wäre halt einen eigenen virtuellen WDM-Treiber zu schreiben
Edit: Ich kenn deine Soundkarte nicht, aber wenn du mehrere Outputs hast, dann könntest du einen Ausgang mit dem Line-In verbinden und hier das Signal abgreifen und an den zweiten Ausgang weiterleiten... Also: Player -> Output1 -> LineIn -> Script mit EQ -> Output2
mfgE