Tonhöhe veränderen (mit Bass.dll?)

  • Hey@All
    Da es im Internet viele Programm gibt, die von einer *.wav die Tonhöhe ändern, wollte ich fragen, ob man das auch mit AutoIt realisieren kann. Wahrscheinlich kann man dies mit der Bass.dll machen, aber bis jetzt habe ich darüber noch nichts nützliches gefunden. Währe nett wenn ihr mir helfen könntet.
    MfG AntiSpeed

    Nur keine Hektik - das Leben ist stressig genug

    Einmal editiert, zuletzt von Antispeed (23. Juli 2010 um 22:30)

  • Das brummt solange bis es geladen hat.
    Kann man das Brummen wegmachen?

    Ich möchte ja die "Tonhöhe" verändern, also das Lied höher oder tiefer machen. Vlt hast du mich ja falsch verstanden...

    Nur keine Hektik - das Leben ist stressig genug

  • Sprenger hats schon in seinem Vorpost richtig erkannt.

    Zitat

    Wenn nicht findet sich in der BassFX bestimmt etwas

    http://www.autoitscript.com/forum/index.php?showtopic=83481

    Zitat

    BassFX (By eukalyptus/BrettF)
    An extension providing several effects, including tempo & pitch control.

  • Normalerweise wird beim Pitchen eine Sounddatei mit einer anderen Samplerate abgespielt = Tonhöhe UND Geschwindigkeit verändern sich

    Bei der bassfx.dll gibt es 3 verschiedene Varianten:

    BASS_ATTRIB_TEMPO_FREQ = Verändert nur die Samplerate beim Abspielen = Ton wird langsamer und tiefer
    BASS_ATTRIB_TEMPO = Kombination aus Timestreching und Samplerate = Ton wird langsamer bei gleichbleibender Tonhöhe
    BASS_ATTRIB_TEMPO_PITCH = Kombination aus Timestreching und Samplerate = Tonhöhe verändert sich, Geschwindigkeit bleibt gleich

    Spoiler anzeigen
    [autoit]

    #include <Bass.au3>
    #include <BassConstants.au3>
    #include <BassFX.au3>
    #include <BassFXConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("{UP}", "_Pitch")
    HotKeySet("{DOWN}", "_Pitch")
    HotKeySet("{LEFT}", "_Pitch")
    HotKeySet("{RIGHT}", "_Pitch")

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("{ESC}", "_Exit")

    [/autoit] [autoit][/autoit] [autoit]

    Global $sFile = FileOpenDialog("Open...", "", "playable formats (*.MP3;*.MP2;*.MP1;*.OGG;*.WAV;*.AIFF;*.AIF)")
    Global $hStream, $hTempo
    Global $iPitch = 0
    Global $iTempo = 0

    [/autoit] [autoit][/autoit] [autoit]

    _BASS_STARTUP("BASS.dll")
    _BASS_FX_Startup("bass_fx.dll")

    [/autoit] [autoit][/autoit] [autoit]

    _BASS_Init(0, -1, 44100, 0, "")

    [/autoit] [autoit][/autoit] [autoit]

    $hStream = _BASS_StreamCreateFile(False, $sFile, 0, 0, $BASS_STREAM_DECODE)
    $hTempo = _BASS_FX_TempoCreate($hStream, $BASS_SAMPLE_LOOP)

    [/autoit] [autoit][/autoit] [autoit]

    _BASS_ChannelPlay($hTempo, 1)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While _BASS_ChannelIsActive($hTempo)
    ToolTip("Pitch: " & $iPitch & " semitones" & @CRLF & "Tempo: " & $iTempo & " percent")
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    _Exit()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    _BASS_StreamFree($hStream)
    _BASS_Free()
    Exit
    EndFunc ;==>_EXIT

    [/autoit] [autoit][/autoit] [autoit]

    Func _Pitch()
    Switch @HotKeyPressed
    Case "{UP}"
    $iPitch += 1
    _BASS_ChannelSetAttribute($hTempo, $BASS_ATTRIB_TEMPO_PITCH, $iPitch)
    Case "{DOWN}"
    $iPitch -= 1
    _BASS_ChannelSetAttribute($hTempo, $BASS_ATTRIB_TEMPO_PITCH, $iPitch)
    Case "{LEFT}"
    $iTempo -= 1
    _BASS_ChannelSetAttribute($hTempo, $BASS_ATTRIB_TEMPO, $iTempo)
    Case "{RIGHT}"
    $iTempo += 1
    _BASS_ChannelSetAttribute($hTempo, $BASS_ATTRIB_TEMPO, $iTempo)
    EndSwitch
    EndFunc ;==>_Pitch

    [/autoit]

    mfgE