Bass.dll UDF Version_10 Download

  • Hier gibt es stets die neueste Version zum downloaden: Bass_udf.zip Audiofiles.zip

    Spoiler anzeigen

    This library is a wrapper for the powerful Bass.DLL and add-ons (which increase the functionality of Bass.DLL). Bass.DLL is ideal for use in your applications and scripts if you want an easy way to play a vast range of music and sound files formats while keeping dependency on just Bass.dll and it´s add-ons (which in turn maximizes compatibility and minimizes extra requirements for your software to run), while retaining a small file size.


    beinhaltet zur Zeit

    Spoiler anzeigen

    BASS.au3 BASS is an audio library for use in Windows software. Its purpose is to provide the most powerful and efficient (yet easy to use), sample, stream, MOD music, and recording functions. All in a tiny DLL, under 100KB in size.
    BASSASIO.au3 BASSASIO is basically a wrapper for ASIO drivers, with the addition of channel joining, format conversion and resampling.
    BASSCD.au3 BASSCD is an extension to the BASS audio library, enabling the streaming and ripping of CD audio tracks.
    BASSENC.au3 BASSenc is an extension that allows BASS channels to be encoded using command-line encoders with STDIN support (LAME/OGGENC/etc), or ACM codecs, optionally sending the data to clients via local servers or Shoutcast/Icecast servers.
    BASSEXT.au3 BassExt provides extended functions for bass.au3 like Callback routines, Peak & Loudness, Phasecorrelation, drawing Waveform, Binarybuffer & more
    BASSFX.au3 BassFX is an extension to the BASS audio library, providing a complete set of Real-time DSP functions to start developing your own DJ software ;) Developed to enable the simple and advanced developers/users to have in their applications sound effects without knowing any DSP at all!
    BASSINC.au3 BassINC provides the ability to include the bass dll´s into your compiled script, so your script consists of only one .exe file
    BASSMIDI.au3 BASSMIDI is an extension to the BASS audio library, enabling the playing of MIDI files and real-time events, using SF2 soundfonts to provide the sounds.
    BASSMIX.au3 BASSmix is an extension to the BASS audio library, providing the ability to mix together multiple BASS channels, with resampling and matrix mixing features. It also provides the ability to go the other way and split a BASS channel into multiple channels.
    BASSSFX.au3 BASS_SFX was created for use with BASS, providing a complete set of functions to program in support for winamp, sonique, bassbox, and Windows Media Player visualization plugins into your applications ;)
    BASSTAGS.au3 BassTAGS Provides a simple way to retrieve ID3 tags from stream handles.
    BASSVST.au3 BASS_VST allows the usage of VST plugins in BASS. BASS_VST was written to work with Silverjuke(R). Any other usage is for your own risk - but you're welcome and I'm sure it will work :)


    Funktionsliste

    Spoiler anzeigen


    ChangeLog:

    Spoiler anzeigen
    [autoit]

    ; =======================================================================================================; 07 Dec 2011; -------------------------------------------------------------------------------------------------------; Bass.au3: update to dll version 2.4.8.1; BugFix -> _BASS_ChannelGet3DPosition; add functions: _BASS_FXReset; add constants: $BASS_DATA_FFT16384; $BASS_DEVICE_DMIX; $BASS_ATTRIB_NOBUFFER; $BASS_ATTRIB_CPU; $BASS_DATA_FFT_REMOVEDC; $BASS_CONFIG_DEV_BUFFER; $BASS_CONFIG_DEV_DEFAULT; $BASS_CONFIG_NET_READTIMEOUT; $BASS_TAG_APE; $BASS_TAG_MP4; $BASS_TAG_CA_CODEC; $BASS_TAG_MF; $BASS_TAG_WAVEFORMAT; $BASS_TAG_RIFF_BEXT; $BASS_TAG_RIFF_CART; $BASS_TAG_RIFF_DISP; $BASS_TAG_APE_BINARY; $BASS_TAG_MUSIC_ORDERS; $BASS_POS_DECODE; $BASS_POS_DECODETO;; BassMix.au3: update to dll version 2.4.6.0; add functions: _BASS_Mixer_ChannelGetPositionEx; _BASS_Split_StreamGetAvailable; _BASS_Split_StreamGetSplits; _BASS_Split_StreamResetEx; add constants: $BASS_MIXER_POSEX; $BASS_MIXER_LIMIT; $BASS_SPLIT_SLAVE; $BASS_SYNC_MIXER_ENVELOPE_NODE;; BassCD.au3: BugFix -> _BASS_CD_GetTOC (wrong offset in LBA mode);; =======================================================================================================; =======================================================================================================; 10 July 2011; -------------------------------------------------------------------------------------------------------; Bass.au3: add functions:; _BASS_Hi4Bits; _BASS_Lo4Bits;; BassCD.au3: add functions & examples:; _BASS_CD_GetTOC; _BASS_CD_SetOffset; _BASS_CD_StreamCreateEx; _BASS_CD_StreamCreateFileEx;; BassCDConstants.au3: add: CD_TOC structures & constants;; =======================================================================================================; =======================================================================================================; 03 July 2011; -------------------------------------------------------------------------------------------------------; Bass.au3: new function: _BASS_SampleGetChannels; bugfix in _BASS_SampleGetInfo;; example update: _BASS_SampleGetInfo.au3; _BASS_SampleFree.au3; _BASS_SampleSetInfo.au3; _BASS_SampleGetChannel.au3; _BASS_SampleLoad.au3;; BassExt.au3: changed: _BASS_EXT_Note2Freq; new: _BASS_EXT_Freq2Note; _BASS_EXT_Note2Name; _BASS_EXT_Name2Note; (updated examples);; Dll update: BassCD.dll; BassMidi.dll; Bass_FX.dll;; =======================================================================================================; =======================================================================================================; 16 April 2011; -------------------------------------------------------------------------------------------------------; Bass.au3: new functions:; _BASS_ChannelSetSync; _BASS_ChannelRemoveSync; _BASS_LoByte; _BASS_HiByte; _BASS_MakeWord;; =======================================================================================================; =======================================================================================================; 15 April 2011; -------------------------------------------------------------------------------------------------------; changed directory structure;; BassFX: update to new dll version;; BassMidi: update to new dll version; add new functions & examples:; _BASS_MIDI_InFree; _BASS_MIDI_InGetDeviceInfo; _BASS_MIDI_InInit; _BASS_MIDI_InStart; _BASS_MIDI_InStop; _BASS_MIDI_StreamEvents; add $returntype parameter to _BASS_MIDI_StreamGetEvents; update BassMidiConstants.au3;; BassExt: new callback functions:; $BASS_EXT_MidiInProc;; BassInc: update to new dll versions;; =======================================================================================================; =======================================================================================================; 9 April 2011; -------------------------------------------------------------------------------------------------------; BassAsio: _BASS_ASIO_PtrStringRead removed and now uses _BASS_PtrStringRead from Bass.au3;; BassExt: new functions:; _BASS_EXT_MakeWave; _BASS_EXT_LoadWave; _BASS_EXT_SaveWave; _BASS_EXT_Generator; _BASS_EXT_Note2Freq;; BassInc: update to new BassExt.dll;; =======================================================================================================; #######################################################################################################; changelog since Bass UDF version 9 patch 2; #######################################################################################################;; NEW UDF´s:; BassEXT.au3; BassINC.au3; BassMIDI.au3; BassMIX.au3;; Bass.au3:; Update dll v2.4.5.0 => v2.4.7.1; Tidy source code; add 64bitCheck; add UDF/DLL VersionCheck; add _BASS_StreamCreateFileUser; add _BASS_ChannelSetDSP(); add _BASS_ChannelRemoveDSP(); fix $BASS_DWORD_ERR; fix _BASS_StreamCreate; fix _BASS_GetDevice; fix _BASS_RecordGetDevice; fix _BASS_RecordGetInputName; fix _BASS_RecordStart; fix _BASS_ChannelGetInfo; workaround for X64 _BASS_ChannelSeconds2Bytes; Renamed _LoWord => _BASS_LoWord; Renamed _HiWord => _BASS_HiWord; add _BASS_MakeLong (removed _MakeLong from BassEnc.au3);; BassASIO.au3:; Removed asiocb.dll => BassEXT; Removed _BASS_ASIO_CB_ChannelGetLevel; Removed _BASS_ASIO_CB_ChannelEnable; Removed _BASS_ASIO_CB_LinkInOut; Tidy source code; add 64bitCheck; add UDF/DLL VersionCheck; add Functionheaders; add _BASS_ASIO_ChannelEnable;; BassCD.au3:; Update dll v2.4.3.0 => v2.4.4.0; Tidy source code; add 64bitCheck; add UDF/DLL VersionCheck;; BassEnc.au3:; Update dll v2.4.6.0 => v2.4.8.1; Removed BassCD.dll => BassEXT; Moved Function _Makelong => Bass.au3 & renamed to _BASS_MakeLong; Tidy source code; add 64bitCheck; add UDF/DLL VersionCheck; Fix _BASS_Encode_Start; Fix Errorhandling; Fix _BASS_Encode_Write; Fix _BASS_Encode_SetNotify;; BassFX.au3:; Update dll v2.4.5.0 => v2.4.7.0; Tidy source code; add 64bitCheck; add UDF/DLL VersionCheck; Fix _BASS_FX_BPM_DecodeGet; Fix _BASS_FX_BPM_CallbackSet; Fix _BASS_FX_BPM_Free; Fix _BASS_FX_BPM_BeatCallbackSet; Fix _BASS_FX_BPM_BeatDecodeGet;; BassFXConstants.au3:; Add BiQuad filters; Tidy source code;; BassSFX.au3:; Tidy source code; add 64bitCheck; add UDF/DLL VersionCheck; changed functionheaders to work with helpgenerator;; BassTAGS.au3:; Tidy source code; add 64bitCheck; add UDF/DLL VersionCheck;; BassVST.au3:; Tidy source code; add 64bitCheck; add UDF/DLL VersionCheck;; #######################################################################################################

    [/autoit]

    Bugreports und Fragen zu der UDF bitte nicht hier, sondern in den anderen Themen posten.

    Das ZIP-Archiv enthält auch eine komplette Hilfe im CHM Format mit zahlreichen Beispielen.
    Die Hilfe wurde automatisch generiert, deshalb stimmen viele Sachen einfach noch nicht.

    Falls euch Fehler in der Hilfe auffallen (Rechtschreibfehler, Beispiel geht nicht, falsche Verlinkungen, oder what ever ...) dann bitte auch im entsprechenden Thread verlautbaren.
    Natürlich hätte ich auch gerne Verbesserungsvorschläge und sonstige Feedbacks von euch, um die UDF immer weiter zu verbessern.

    thx
    E

  • Hi eukalyptus,
    find ich super das du die BASS noch mal hier im Deutschen Forum hochlädst. Die CHM Hilfe war ja in der englischen Version nicht dabei. Ich hab mal die Hilfe mal kurz duchrgeguckt und gesehn das bei vielen Funktionen nur #AutoIt3Wrapper_UseX64=n als Beispiel steht, aber trotzdem ist die Hilfe ein sehr gutes Werkzeug, weil man endlich mal den vollen Funktionsumfang sieht.

    PS: Gibt es überhaubt eine Möglichkeit mit der BASS Dll selber Wave Dateien zu erstellen? Also einen Kanal öffnen und dann da Piep Töne nacheinander reinzuschreiben.

  • @Sprenger, hab mich damals damit beschäftigt .wav Dateien zu erstellen und dort in Form einer Sinuskurve Töne hineinzuschreiben.
    Hab das leider nicht ganz geschafft und hab Andy befragt, und das ist das Ergebnis gewesen (schon länger her):

    Spoiler anzeigen
    [autoit]

    ;WAV-Header, 16 Bit, 1 Kanal, 44100 Hz
    Global Const $pi = 4 * ATan(1) ;pi=3,1415926....
    $wavheader = "0x52494646CCBA060057415645666D7420100000000100010044AC0000885801000200100064617461";A8BA0600"

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

    $data = _createwavedata(400, 600, 60)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $data = ' & StringLen($data) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

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

    $size = Hex(StringLen($data) / 2, 8)
    $len = ""
    For $i = 7 To 1 Step -2 ;size in little endian
    $len &= StringMid($size, $i, 2)
    Next

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

    $bin = BinaryToString($wavheader & $len & $data)
    $wav = FileOpen("test1.wav", 18)
    $bindata = FileWrite($wav, $bin)
    ;ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $bindata = ' & $bindata & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    FileClose($wav)
    ShellExecute("test1.wav") ;wavedatei abspielen

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

    Func _createwavedata($freq1, $freq2, $seconds) ;von freq1 nach freq2 innerhalb seconds
    $wavstring = ""
    $f = $freq1
    $b = 0
    For $i = 1 To $seconds
    $f = $freq1 + Abs($freq1 - $freq2) / $seconds * $i ;jede Sekunde wird die frequenz erhöht
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $f = ' & $f & " " & $i & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    For $t = 0 To 1 Step 1 / 44100 ;jede Sekunde eine frequenz

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

    $yt = Int(32000 * Sin(2 * $pi * $f * $t)) ;unsere altbekannte formel
    ;ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $yt = ' & $yt &" "&hex($yt,4)& @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    $lowHighbyte = StringRight(Hex($yt, 4), 2) & StringLeft(Hex($yt, 4), 2)
    ;MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$lowHighbyte' & @lf & @lf & 'Return:' & @lf & $lowHighbyte) ;### Debug MSGBOX
    $wavstring &= $lowHighbyte
    Next
    Next
    Return $wavstring
    EndFunc ;==>_createwavedata

    [/autoit]
  • find ich super das du die BASS noch mal hier im Deutschen Forum hochlädst. Die CHM Hilfe war ja in der englischen Version nicht dabei. Ich hab mal die Hilfe mal kurz duchrgeguckt und gesehn das bei vielen Funktionen nur #AutoIt3Wrapper_UseX64=n als Beispiel steht, aber trotzdem ist die Hilfe ein sehr gutes Werkzeug, weil man endlich mal den vollen Funktionsumfang sieht.


    Das ist eine neue verbesserte Version und nicht die aus dem englichen Foum. Usex64=n ist inzwischen meistens unnötig, da es fast alle DLLs auch als x64 gibt.

  • Gibt es überhaubt eine Möglichkeit mit der BASS Dll selber Wave Dateien zu erstellen? Also einen Kanal öffnen und dann da Piep Töne nacheinander reinzuschreiben.

    Ja!

    Im Beispiel zu _BASS_Encode_Write wird genau das gemacht - allerdings nur 1s lang.
    Weitere Beispiele die zeigen wie man Sampledaten selber generiert sind z.B.:
    _BASS_EXT_StreamPutBufferData, $BASS_EXT_StreamProc und Draw_Sample_Synth in "Advanced Examples"

    E

  • Ein riesen Lob von mir für deine Bemühungen dieses super Packet zu erstellen!

    Klasse! :thumbup:

    Vielleicht könntest du die GDI+ Beispiele in ein separaten Ordner tun, damit man sie schneller finden kann! :whistling:

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Hi eukalyptus,
    find ich super das du die BASS noch mal hier im Deutschen Forum hochlädst. Die CHM Hilfe war ja in der englischen Version nicht dabei...

    Es handelt sich wie gesagt um eine neuere Version der UDF, welche es im englischen Forum noch nicht gibt.
    Natürlich wird´s auf autoitscript.com auch bald veröffentlicht, jedoch ist mir die Hilfe noch etwas zu "beta" ^^
    Außerdem muss ich das natürlich noch mit BrettF besprechen, der mit mir diese neue Version erstellt hat, jedoch seit Herbst nicht mehr viel Zeit für das Projekt hat..

    ...Ich hab mal die Hilfe mal kurz duchrgeguckt und gesehn das bei vielen Funktionen nur #AutoIt3Wrapper_UseX64=n als Beispiel steht...

    Die meisten meiner Beispiele entstanden quasi als Nebenprodukt aus Hilfethreads. Wenn eine Funktion noch kein Beispiel hat, dann wurde dazu noch keine Frage gestellt :D
    Und soviel Zeit hab ich auch nicht, um für alle Funktionen Beispiele zu schreiben (deshalb sind auch viele Beispielscripte gleich und umfassen mehrere Funktionen)
    #AutoIt3Wrapper_UseX64=n sollte in jedem Beispiel vorkommen, da die dll´s im example Ordner 32bit sind und nur so die Scripte auch auf 64bit OS direkt lauffähig sind.

    Vielleicht mach ich noch einen Thread auf, wo alle Funktionen ohne Beispiel gelistet sind und ihr aufgerufen werdet, welche zu erstellen...

  • hi,

    ich habe vor kurzem die Bass WADSP UDF geschrieben, da ich sie für eines meiner Projekte benötigte. Vielleicht kannst du ja was damit anfangen?

    Bass WADSP UDF

    Falls du sie mit in deine Sammlung aufnehmen möchtest, kann ich auch noch umschreiben und basteln usw. einfach PM oder sonstiges an mich :).

    mfg.

    Timtam

  • Danke eukalyptus! Werde es für mein online Radio verwenden!

    [Blockierte Grafik: http://stefan.blagojevic.at/loading.gif]

    Design, Modellbau, CAD <3
    AutoCAD, ArchiCAD, REVIT (ist ein Scheiss, habe aber das Zertifikat)

    Cinema 4D, RuckZuck Statik Programm

    Michael Bay als Architekt


    Da eine Glasfassade! Booom Sichtbeton! Laminiertes Bild auf Mosaiksteinchen! Granit! Granit! Granit! Sichtbetonwand mit 50° Neigung!
    Holzverkleidung erscheint da! Boooooom!

  • Hallo Eukalyptus
    Wunderbar diese BASS UDF!

    Gibt es allerdings eine Möglichkeit, bei _BASS_GetVolume (Windows 7) diesen Level in einen prozentualen Wert umzuwandeln? Die Levelwerte sind ja nicht linear.

    Aber nach welcher Formel / Algorithmus kann man diese umrechnen?
    Grüsse, Veronesi

    Edit
    Vielleicht als Erklärung, warum ich das möchte:
    - Ich spiele einen Ton (1kHz) ab.
    - Den Sound-Out habe ich mit einem direkten Kabel auf Sound-In verbunden.
    - Nun messe ich mit _BASS_ChannelGetLevel jeweils den Level beim Sound-Out ($hMusic) und den Level beim Sound-In ($hRecord)
    => Mit einem 1:1 Kabel sollte ich doch +/- dieselben Werte erhalten. Leider bekomme ich als Out den Wert 31999 und als In den Wert 6469.
    Deshalb dachte ich, dass der Out Wert möglicherweise immer das "maximum" darstellt, egal welche Lautstärke eingestellt ist. Und der In müsste mit der Lautstärke korrigiert werden!

    Hintergrund ist: Ich sollte die Dämpfung zwischen Aus- und Eingang bestimmen.

    3 Mal editiert, zuletzt von veronesi (8. März 2012 um 08:11)

  • hi,
    soweit ich das verstanden habe, gibt die Funktion _bass_getvolume 1 bei voller Lautstärke und 0 bei keiner Lautstärke (Ton aus) zurück. Ich habe es jetzt nicht selbst getestet, aber ich würde spontan sagen... wenn bei halber Lautstärke 0.5 rauskommt, dann rechne _bass_getvolume()*100 und du erhältst die Prozentzahl (1*100 =100%, 0,5*100 =50%, 0*100 =0%...). Ich hoffe ich konnte helfen.

  • Hi Timtam

    Leider stimmt das nicht.
    Bei 0% ist der Level 0. Bei 100% ist es 1. Bis dahin stimmt noch alles.

    Aber bei z.B. 50% ist der Level auf ca. 0.322477906942368 (die letzten Kommastellen weichen manchmal etwas ab..)
    Das bedeutet vermutlich, dass die Kurve an das logarithische Verhalten unseres Gehöres angepasst wurde.

    Aber wie kann ich das nun umrechnen?

  • zum Messen kannst du die Funktion _BASS_EXT_Level2dB verwenden.
    Kennst du dich mit dB aus?

    Kommt drauf an, was du messen willst. Bei der Lautstärke sind 6dB das doppelte. Bei Leistung 3dB das doppelte.
    Den Unterschied zwischen Out und In beim Kalibrieren in dB messen und bei den Messergebnissen mit einrechnen.

    z.B.: Kalibrieren: Out = -10 dB / In = -5 dB / Unterschied = 5dB
    Messen: Out = -10 dB / In = -20 dB / Dämpfung = 15dB

    Falls du wirklich den In und Out auf die gleiche Lautstärke bringen willst, dann kannst du das mit _BASS_RecordSetInput machen.

    E

  • Hallo Eukalyptus
    Vielen Dank für die Antwort. Ich werde die Funktion gleich mal anschauen und einbauen.

    Ja, mit dB rechnen kenne ich mich schon etwas aus.
    Vielen Dank!

    Gruss
    Veronesi