From ca6a8192678e3d32eab3c0ff6364f5fa01dd7a90 Mon Sep 17 00:00:00 2001 From: Michael Zhang Date: Thu, 7 Jan 2021 21:37:50 -0600 Subject: [PATCH] Add linux bass --- bass-sys/linux/bass24/3dtest/3dtest.c | 315 +++ bass-sys/linux/bass24/3dtest/3dtest.glade | 334 +++ bass-sys/linux/bass24/3dtest/makefile | 9 + bass-sys/{ => linux}/bass24/bass.chm | Bin bass-sys/{bass24/c => linux/bass24}/bass.h | 0 bass-sys/{ => linux}/bass24/bass.txt | 0 bass-sys/linux/bass24/basstest/basstest.c | 294 +++ bass-sys/linux/bass24/basstest/basstest.glade | 580 +++++ bass-sys/linux/bass24/basstest/makefile | 9 + .../c => linux/bass24}/contest/contest.c | 0 bass-sys/linux/bass24/contest/makefile | 8 + bass-sys/linux/bass24/custloop/custloop.c | 271 +++ bass-sys/linux/bass24/custloop/makefile | 9 + .../c => linux/bass24}/devlist/devlist.c | 0 bass-sys/linux/bass24/devlist/makefile | 8 + bass-sys/linux/bass24/dsptest/dsptest.c | 250 ++ bass-sys/linux/bass24/dsptest/dsptest.glade | 82 + bass-sys/linux/bass24/dsptest/makefile | 9 + bass-sys/linux/bass24/fxtest/fxtest.c | 191 ++ bass-sys/linux/bass24/fxtest/fxtest.glade | 194 ++ bass-sys/linux/bass24/fxtest/makefile | 9 + bass-sys/linux/bass24/libbass.so | Bin 0 -> 235348 bytes bass-sys/linux/bass24/livespec/livespec.c | 229 ++ bass-sys/linux/bass24/livespec/makefile | 9 + bass-sys/linux/bass24/makefile | 11 + bass-sys/linux/bass24/makefile.in | 12 + bass-sys/linux/bass24/modtest/makefile | 9 + bass-sys/linux/bass24/modtest/modtest.c | 208 ++ bass-sys/linux/bass24/modtest/modtest.glade | 183 ++ bass-sys/linux/bass24/mp3-free/libbass.so | Bin 0 -> 214868 bytes bass-sys/linux/bass24/multi/makefile | 9 + bass-sys/linux/bass24/multi/multi.c | 255 ++ bass-sys/linux/bass24/multi/multi.glade | 203 ++ bass-sys/linux/bass24/netradio/makefile | 9 + bass-sys/linux/bass24/netradio/netradio.c | 283 +++ bass-sys/linux/bass24/netradio/netradio.glade | 432 ++++ bass-sys/linux/bass24/pascal/bass.pas | 1043 ++++++++ bass-sys/linux/bass24/plugins/makefile | 9 + bass-sys/linux/bass24/plugins/plugins.c | 225 ++ bass-sys/linux/bass24/plugins/plugins.glade | 89 + bass-sys/linux/bass24/rectest/makefile | 9 + bass-sys/linux/bass24/rectest/rectest.c | 276 +++ bass-sys/linux/bass24/rectest/rectest.glade | 128 + bass-sys/linux/bass24/speakers/makefile | 9 + bass-sys/linux/bass24/speakers/speakers.c | 158 ++ bass-sys/linux/bass24/speakers/speakers.glade | 282 +++ bass-sys/linux/bass24/spectrum/makefile | 9 + bass-sys/linux/bass24/spectrum/spectrum.c | 241 ++ bass-sys/linux/bass24/synth/makefile | 9 + bass-sys/linux/bass24/synth/synth.c | 146 ++ bass-sys/linux/bass24/synth/synth.glade | 174 ++ bass-sys/linux/bass24/writewav/makefile | 8 + .../c => linux/bass24}/writewav/writewav.c | 0 bass-sys/linux/bass24/x64/libbass.so | Bin 0 -> 240656 bytes bass-sys/linux/bass24/x64/mp3-free/libbass.so | Bin 0 -> 216064 bytes bass-sys/win/bass24/bass.chm | Bin 0 -> 280258 bytes bass-sys/{ => win}/bass24/bass.dll | Bin bass-sys/win/bass24/bass.txt | 2127 +++++++++++++++++ bass-sys/{ => win}/bass24/c/3dtest/3dtest.c | 0 bass-sys/{ => win}/bass24/c/3dtest/3dtest.dsp | 0 bass-sys/{ => win}/bass24/c/3dtest/3dtest.rc | 0 .../{ => win}/bass24/c/3dtest/3dtest.vcproj | 0 .../{ => win}/bass24/c/3dtest/3dtest.vcxproj | 0 bass-sys/{ => win}/bass24/c/3dtest/makefile | 0 bass-sys/{ => win}/bass24/c/bass.dsw | 0 bass-sys/win/bass24/c/bass.h | 1160 +++++++++ bass-sys/{ => win}/bass24/c/bass.lib | Bin bass-sys/{ => win}/bass24/c/bass.sln | 0 .../{ => win}/bass24/c/basstest/basstest.c | 0 .../{ => win}/bass24/c/basstest/basstest.dsp | 0 .../{ => win}/bass24/c/basstest/basstest.rc | 0 .../bass24/c/basstest/basstest.vcproj | 0 .../bass24/c/basstest/basstest.vcxproj | 0 bass-sys/{ => win}/bass24/c/basstest/makefile | 0 bass-sys/{ => win}/bass24/c/bin/3dtest.exe | Bin bass-sys/{ => win}/bass24/c/bin/basstest.exe | Bin bass-sys/{ => win}/bass24/c/bin/contest.exe | Bin bass-sys/{ => win}/bass24/c/bin/custloop.exe | Bin bass-sys/{ => win}/bass24/c/bin/devlist.exe | Bin bass-sys/{ => win}/bass24/c/bin/dsptest.exe | Bin bass-sys/{ => win}/bass24/c/bin/fxtest.exe | Bin bass-sys/{ => win}/bass24/c/bin/livefx.exe | Bin bass-sys/{ => win}/bass24/c/bin/livespec.exe | Bin bass-sys/{ => win}/bass24/c/bin/modtest.exe | Bin bass-sys/{ => win}/bass24/c/bin/multi.exe | Bin bass-sys/{ => win}/bass24/c/bin/netradio.exe | Bin bass-sys/{ => win}/bass24/c/bin/plugins.exe | Bin bass-sys/{ => win}/bass24/c/bin/rectest.exe | Bin bass-sys/{ => win}/bass24/c/bin/speakers.exe | Bin bass-sys/{ => win}/bass24/c/bin/spectrum.exe | Bin bass-sys/{ => win}/bass24/c/bin/synth.exe | Bin bass-sys/{ => win}/bass24/c/bin/writewav.exe | Bin bass-sys/win/bass24/c/contest/contest.c | 163 ++ .../{ => win}/bass24/c/contest/contest.dsp | 0 .../{ => win}/bass24/c/contest/contest.vcproj | 0 .../bass24/c/contest/contest.vcxproj | 0 bass-sys/{ => win}/bass24/c/contest/makefile | 0 .../{ => win}/bass24/c/custloop/custloop.c | 0 .../{ => win}/bass24/c/custloop/custloop.dsp | 0 .../bass24/c/custloop/custloop.vcproj | 0 .../bass24/c/custloop/custloop.vcxproj | 0 bass-sys/{ => win}/bass24/c/custloop/makefile | 0 bass-sys/win/bass24/c/devlist/devlist.c | 76 + .../{ => win}/bass24/c/devlist/devlist.dsp | 0 .../{ => win}/bass24/c/devlist/devlist.vcproj | 0 .../bass24/c/devlist/devlist.vcxproj | 0 bass-sys/{ => win}/bass24/c/devlist/makefile | 0 bass-sys/{ => win}/bass24/c/dsptest/dsptest.c | 0 .../{ => win}/bass24/c/dsptest/dsptest.dsp | 0 .../{ => win}/bass24/c/dsptest/dsptest.rc | 0 .../{ => win}/bass24/c/dsptest/dsptest.vcproj | 0 .../bass24/c/dsptest/dsptest.vcxproj | 0 bass-sys/{ => win}/bass24/c/dsptest/makefile | 0 bass-sys/{ => win}/bass24/c/fxtest/fxtest.c | 0 bass-sys/{ => win}/bass24/c/fxtest/fxtest.dsp | 0 bass-sys/{ => win}/bass24/c/fxtest/fxtest.rc | 0 .../{ => win}/bass24/c/fxtest/fxtest.vcproj | 0 .../{ => win}/bass24/c/fxtest/fxtest.vcxproj | 0 bass-sys/{ => win}/bass24/c/fxtest/makefile | 0 bass-sys/{ => win}/bass24/c/livefx/livefx.c | 0 bass-sys/{ => win}/bass24/c/livefx/livefx.dsp | 0 bass-sys/{ => win}/bass24/c/livefx/livefx.rc | 0 .../{ => win}/bass24/c/livefx/livefx.vcproj | 0 .../{ => win}/bass24/c/livefx/livefx.vcxproj | 0 bass-sys/{ => win}/bass24/c/livefx/makefile | 0 .../{ => win}/bass24/c/livespec/livespec.c | 0 .../{ => win}/bass24/c/livespec/livespec.dsp | 0 .../bass24/c/livespec/livespec.vcproj | 0 .../bass24/c/livespec/livespec.vcxproj | 0 bass-sys/{ => win}/bass24/c/livespec/makefile | 0 bass-sys/{ => win}/bass24/c/makefile | 0 bass-sys/{ => win}/bass24/c/makefile.in | 0 bass-sys/{ => win}/bass24/c/modtest/makefile | 0 bass-sys/{ => win}/bass24/c/modtest/modtest.c | 0 .../{ => win}/bass24/c/modtest/modtest.dsp | 0 .../{ => win}/bass24/c/modtest/modtest.rc | 0 .../{ => win}/bass24/c/modtest/modtest.vcproj | 0 .../bass24/c/modtest/modtest.vcxproj | 0 bass-sys/{ => win}/bass24/c/multi/makefile | 0 bass-sys/{ => win}/bass24/c/multi/multi.c | 0 bass-sys/{ => win}/bass24/c/multi/multi.dsp | 0 bass-sys/{ => win}/bass24/c/multi/multi.rc | 0 .../{ => win}/bass24/c/multi/multi.vcproj | 0 .../{ => win}/bass24/c/multi/multi.vcxproj | 0 bass-sys/{ => win}/bass24/c/netradio/makefile | 0 .../{ => win}/bass24/c/netradio/netradio.c | 0 .../{ => win}/bass24/c/netradio/netradio.dsp | 0 .../{ => win}/bass24/c/netradio/netradio.rc | 0 .../bass24/c/netradio/netradio.vcproj | 0 .../bass24/c/netradio/netradio.vcxproj | 0 bass-sys/{ => win}/bass24/c/plugins/makefile | 0 bass-sys/{ => win}/bass24/c/plugins/plugins.c | 0 .../{ => win}/bass24/c/plugins/plugins.dsp | 0 .../{ => win}/bass24/c/plugins/plugins.rc | 0 .../{ => win}/bass24/c/plugins/plugins.vcproj | 0 .../bass24/c/plugins/plugins.vcxproj | 0 bass-sys/{ => win}/bass24/c/rectest/makefile | 0 bass-sys/{ => win}/bass24/c/rectest/rectest.c | 0 .../{ => win}/bass24/c/rectest/rectest.dsp | 0 .../{ => win}/bass24/c/rectest/rectest.rc | 0 .../{ => win}/bass24/c/rectest/rectest.vcproj | 0 .../bass24/c/rectest/rectest.vcxproj | 0 bass-sys/{ => win}/bass24/c/speakers/makefile | 0 .../{ => win}/bass24/c/speakers/speakers.c | 0 .../{ => win}/bass24/c/speakers/speakers.dsp | 0 .../{ => win}/bass24/c/speakers/speakers.rc | 0 .../bass24/c/speakers/speakers.vcproj | 0 .../bass24/c/speakers/speakers.vcxproj | 0 bass-sys/{ => win}/bass24/c/spectrum/makefile | 0 .../{ => win}/bass24/c/spectrum/spectrum.c | 0 .../{ => win}/bass24/c/spectrum/spectrum.dsp | 0 .../bass24/c/spectrum/spectrum.vcproj | 0 .../bass24/c/spectrum/spectrum.vcxproj | 0 bass-sys/{ => win}/bass24/c/synth/makefile | 0 bass-sys/{ => win}/bass24/c/synth/synth.c | 0 bass-sys/{ => win}/bass24/c/synth/synth.dsp | 0 .../{ => win}/bass24/c/synth/synth.vcproj | 0 .../{ => win}/bass24/c/synth/synth.vcxproj | 0 bass-sys/{ => win}/bass24/c/writewav/makefile | 0 bass-sys/win/bass24/c/writewav/writewav.c | 168 ++ .../{ => win}/bass24/c/writewav/writewav.dsp | 0 .../bass24/c/writewav/writewav.vcproj | 0 .../bass24/c/writewav/writewav.vcxproj | 0 bass-sys/{ => win}/bass24/c/x64/bass.lib | Bin .../{ => win}/bass24/delphi/3dTest/D3Test.dpr | 0 .../{ => win}/bass24/delphi/3dTest/DTMain.dfm | Bin .../{ => win}/bass24/delphi/3dTest/DTMain.pas | 0 .../bass24/delphi/BassTest/BTMain.dfm | Bin .../bass24/delphi/BassTest/BTMain.pas | 0 .../bass24/delphi/BassTest/BassTest.dpr | 0 .../bass24/delphi/ConTest/ConTest.dpr | 0 .../bass24/delphi/DspTest/DTMain.dfm | Bin .../bass24/delphi/DspTest/DTMain.pas | 0 .../bass24/delphi/DspTest/DspTest.dpr | 0 .../bass24/delphi/RecordTest/RecordTest.dpr | 0 .../bass24/delphi/RecordTest/Unit1.dfm | 0 .../bass24/delphi/RecordTest/Unit1.pas | 0 .../bass24/delphi/SampleVis/CommonTypes.pas | 0 .../bass24/delphi/SampleVis/circle_vis.pas | 0 .../bass24/delphi/SampleVis/main.dfm | Bin .../bass24/delphi/SampleVis/main.pas | 0 .../bass24/delphi/SampleVis/osc_vis.pas | 0 .../bass24/delphi/SampleVis/samplevis.dpr | 0 .../bass24/delphi/SampleVis/spectrum_vis.pas | 0 .../bass24/delphi/Speakers/Speakers.dpr | 0 .../bass24/delphi/Speakers/Unit1.dfm | 0 .../bass24/delphi/Speakers/Unit1.pas | 0 .../bass24/delphi/StreamTest/STMain.dfm | Bin .../bass24/delphi/StreamTest/STMain.pas | 0 .../bass24/delphi/StreamTest/StreamTest.dpr | 0 bass-sys/{ => win}/bass24/delphi/bass.bpg | 0 bass-sys/{ => win}/bass24/delphi/bass.pas | 0 .../bass24/delphi/custloop/Unit1.dfm | 0 .../bass24/delphi/custloop/Unit1.pas | 0 .../bass24/delphi/custloop/custloop.dpr | 0 .../bass24/delphi/devlist/devlist.dpr | 0 .../{ => win}/bass24/delphi/fxtest/FXtest.dpr | 0 .../{ => win}/bass24/delphi/fxtest/test.dfm | 0 .../{ => win}/bass24/delphi/fxtest/test.pas | 0 .../{ => win}/bass24/delphi/livefx/Unit1.dfm | 0 .../{ => win}/bass24/delphi/livefx/Unit1.pas | 0 .../{ => win}/bass24/delphi/livefx/livefx.dpr | 0 .../bass24/delphi/livespec/livespec.dpr | 0 .../bass24/delphi/modtest/modtest.dpr | 0 .../bass24/delphi/modtest/modtest.rc | 0 .../{ => win}/bass24/delphi/multi/Multi.dpr | 0 .../{ => win}/bass24/delphi/multi/multi.rc | 0 .../bass24/delphi/netradio/Unit1.dfm | 0 .../bass24/delphi/netradio/Unit1.pas | 0 .../bass24/delphi/netradio/netradio.dpr | 0 .../{ => win}/bass24/delphi/plugins/Unit1.dfm | 0 .../{ => win}/bass24/delphi/plugins/Unit1.pas | 0 .../bass24/delphi/plugins/plugins.dpr | 0 .../bass24/delphi/spectrum/COMMON.INC | 0 .../bass24/delphi/spectrum/Unit1.pas | 0 .../bass24/delphi/spectrum/spectrum.dpr | 0 .../{ => win}/bass24/delphi/synth/synth.dpr | 0 .../bass24/delphi/writewav/UnitMain.dfm | Bin .../bass24/delphi/writewav/UnitMain.pas | 0 .../bass24/delphi/writewav/writewav.dpr | 0 bass-sys/{ => win}/bass24/mp3-free/bass.dll | Bin .../{ => win}/bass24/vb/3Dtest/frm3Dtest.frm | 0 .../{ => win}/bass24/vb/3Dtest/prj3Dtest.vbp | 0 .../bass24/vb/BASStest/frmBassTest.frm | 0 .../bass24/vb/BASStest/prjBassTest.vbp | 0 .../bass24/vb/CustLoop/frmCustLoop.frm | 0 .../bass24/vb/CustLoop/modCustLoop.bas | 0 .../bass24/vb/CustLoop/prjCustLoop.vbp | 0 .../bass24/vb/DSPtest/frmDSPtest.frm | 0 .../bass24/vb/DSPtest/modDSPtest.bas | 0 .../bass24/vb/DSPtest/prjDSPtest.vbp | 0 .../{ => win}/bass24/vb/FXtest/frmFXtest.frm | 0 .../{ => win}/bass24/vb/FXtest/prjFXtest.vbp | 0 .../{ => win}/bass24/vb/LiveFX/frmLiveFX.frm | 0 .../{ => win}/bass24/vb/LiveFX/modLiveFX.bas | 0 .../{ => win}/bass24/vb/LiveFX/prjLiveFX.vbp | 0 .../bass24/vb/LiveSpec/frmLiveSpec.frm | 0 .../bass24/vb/LiveSpec/modLiveSpec.bas | 0 .../bass24/vb/LiveSpec/prjLiveSpec.vbp | 0 .../{ => win}/bass24/vb/Memory/SYNCtest.bas | 0 .../{ => win}/bass24/vb/Memory/cbass_time.cls | 0 .../{ => win}/bass24/vb/Memory/frmMemory.frm | 0 .../{ => win}/bass24/vb/Memory/prjMemory.vbp | 0 .../{ => win}/bass24/vb/Multi/frmDevice.frm | 0 .../{ => win}/bass24/vb/Multi/frmMulti.frm | 0 .../{ => win}/bass24/vb/Multi/modMulti.bas | 0 .../{ => win}/bass24/vb/Multi/prjMulti.vbp | 0 .../bass24/vb/NetRadio/clsFileIo.cls | 0 .../bass24/vb/NetRadio/frmNetRadio.frm | 0 .../bass24/vb/NetRadio/modNetRadio.bas | 0 .../bass24/vb/NetRadio/prjNetRadio.vbp | 0 .../bass24/vb/Plugins/frmPlugins.frm | 0 .../bass24/vb/Plugins/prjPlugins.vbp | 0 .../bass24/vb/RecTest/frmRecTest.frm | 0 .../bass24/vb/RecTest/modRecTest.bas | 0 .../bass24/vb/RecTest/prjRecTest.vbp | 0 .../bass24/vb/Speakers/frmSpeakers.frm | 0 .../bass24/vb/Speakers/prjSpeakers.vbp | 0 .../bass24/vb/Spectrum/frmSpectrum.frm | 0 .../bass24/vb/Spectrum/modSpectrum.bas | 0 .../bass24/vb/Spectrum/prjSpectrum.vbp | 0 .../{ => win}/bass24/vb/Synth/frmSynth.frm | 0 .../{ => win}/bass24/vb/Synth/modSynth.bas | 0 .../{ => win}/bass24/vb/Synth/prjSynth.vbp | 0 .../bass24/vb/WriteWav/frmWriteWave.frm | 0 .../bass24/vb/WriteWav/prjWriteWave.vbp | 0 bass-sys/{ => win}/bass24/vb/bass.bas | 0 bass-sys/{ => win}/bass24/x64/bass.dll | Bin .../{ => win}/bass24/x64/mp3-free/bass.dll | Bin 289 files changed, 10933 insertions(+) create mode 100644 bass-sys/linux/bass24/3dtest/3dtest.c create mode 100644 bass-sys/linux/bass24/3dtest/3dtest.glade create mode 100644 bass-sys/linux/bass24/3dtest/makefile rename bass-sys/{ => linux}/bass24/bass.chm (100%) rename bass-sys/{bass24/c => linux/bass24}/bass.h (100%) rename bass-sys/{ => linux}/bass24/bass.txt (100%) create mode 100644 bass-sys/linux/bass24/basstest/basstest.c create mode 100644 bass-sys/linux/bass24/basstest/basstest.glade create mode 100644 bass-sys/linux/bass24/basstest/makefile rename bass-sys/{bass24/c => linux/bass24}/contest/contest.c (100%) create mode 100644 bass-sys/linux/bass24/contest/makefile create mode 100644 bass-sys/linux/bass24/custloop/custloop.c create mode 100644 bass-sys/linux/bass24/custloop/makefile rename bass-sys/{bass24/c => linux/bass24}/devlist/devlist.c (100%) create mode 100644 bass-sys/linux/bass24/devlist/makefile create mode 100644 bass-sys/linux/bass24/dsptest/dsptest.c create mode 100644 bass-sys/linux/bass24/dsptest/dsptest.glade create mode 100644 bass-sys/linux/bass24/dsptest/makefile create mode 100644 bass-sys/linux/bass24/fxtest/fxtest.c create mode 100644 bass-sys/linux/bass24/fxtest/fxtest.glade create mode 100644 bass-sys/linux/bass24/fxtest/makefile create mode 100644 bass-sys/linux/bass24/libbass.so create mode 100644 bass-sys/linux/bass24/livespec/livespec.c create mode 100644 bass-sys/linux/bass24/livespec/makefile create mode 100644 bass-sys/linux/bass24/makefile create mode 100644 bass-sys/linux/bass24/makefile.in create mode 100644 bass-sys/linux/bass24/modtest/makefile create mode 100644 bass-sys/linux/bass24/modtest/modtest.c create mode 100644 bass-sys/linux/bass24/modtest/modtest.glade create mode 100644 bass-sys/linux/bass24/mp3-free/libbass.so create mode 100644 bass-sys/linux/bass24/multi/makefile create mode 100644 bass-sys/linux/bass24/multi/multi.c create mode 100644 bass-sys/linux/bass24/multi/multi.glade create mode 100644 bass-sys/linux/bass24/netradio/makefile create mode 100644 bass-sys/linux/bass24/netradio/netradio.c create mode 100644 bass-sys/linux/bass24/netradio/netradio.glade create mode 100644 bass-sys/linux/bass24/pascal/bass.pas create mode 100644 bass-sys/linux/bass24/plugins/makefile create mode 100644 bass-sys/linux/bass24/plugins/plugins.c create mode 100644 bass-sys/linux/bass24/plugins/plugins.glade create mode 100644 bass-sys/linux/bass24/rectest/makefile create mode 100644 bass-sys/linux/bass24/rectest/rectest.c create mode 100644 bass-sys/linux/bass24/rectest/rectest.glade create mode 100644 bass-sys/linux/bass24/speakers/makefile create mode 100644 bass-sys/linux/bass24/speakers/speakers.c create mode 100644 bass-sys/linux/bass24/speakers/speakers.glade create mode 100644 bass-sys/linux/bass24/spectrum/makefile create mode 100644 bass-sys/linux/bass24/spectrum/spectrum.c create mode 100644 bass-sys/linux/bass24/synth/makefile create mode 100644 bass-sys/linux/bass24/synth/synth.c create mode 100644 bass-sys/linux/bass24/synth/synth.glade create mode 100644 bass-sys/linux/bass24/writewav/makefile rename bass-sys/{bass24/c => linux/bass24}/writewav/writewav.c (100%) create mode 100644 bass-sys/linux/bass24/x64/libbass.so create mode 100644 bass-sys/linux/bass24/x64/mp3-free/libbass.so create mode 100644 bass-sys/win/bass24/bass.chm rename bass-sys/{ => win}/bass24/bass.dll (100%) create mode 100644 bass-sys/win/bass24/bass.txt rename bass-sys/{ => win}/bass24/c/3dtest/3dtest.c (100%) rename bass-sys/{ => win}/bass24/c/3dtest/3dtest.dsp (100%) rename bass-sys/{ => win}/bass24/c/3dtest/3dtest.rc (100%) rename bass-sys/{ => win}/bass24/c/3dtest/3dtest.vcproj (100%) rename bass-sys/{ => win}/bass24/c/3dtest/3dtest.vcxproj (100%) rename bass-sys/{ => win}/bass24/c/3dtest/makefile (100%) rename bass-sys/{ => win}/bass24/c/bass.dsw (100%) create mode 100644 bass-sys/win/bass24/c/bass.h rename bass-sys/{ => win}/bass24/c/bass.lib (100%) rename bass-sys/{ => win}/bass24/c/bass.sln (100%) rename bass-sys/{ => win}/bass24/c/basstest/basstest.c (100%) rename bass-sys/{ => win}/bass24/c/basstest/basstest.dsp (100%) rename bass-sys/{ => win}/bass24/c/basstest/basstest.rc (100%) rename bass-sys/{ => win}/bass24/c/basstest/basstest.vcproj (100%) rename bass-sys/{ => win}/bass24/c/basstest/basstest.vcxproj (100%) rename bass-sys/{ => win}/bass24/c/basstest/makefile (100%) rename bass-sys/{ => win}/bass24/c/bin/3dtest.exe (100%) rename bass-sys/{ => win}/bass24/c/bin/basstest.exe (100%) rename bass-sys/{ => win}/bass24/c/bin/contest.exe (100%) rename bass-sys/{ => win}/bass24/c/bin/custloop.exe (100%) rename bass-sys/{ => win}/bass24/c/bin/devlist.exe (100%) rename bass-sys/{ => win}/bass24/c/bin/dsptest.exe (100%) rename bass-sys/{ => win}/bass24/c/bin/fxtest.exe (100%) rename bass-sys/{ => win}/bass24/c/bin/livefx.exe (100%) rename bass-sys/{ => win}/bass24/c/bin/livespec.exe (100%) rename bass-sys/{ => win}/bass24/c/bin/modtest.exe (100%) rename bass-sys/{ => win}/bass24/c/bin/multi.exe (100%) rename bass-sys/{ => win}/bass24/c/bin/netradio.exe (100%) rename bass-sys/{ => win}/bass24/c/bin/plugins.exe (100%) rename bass-sys/{ => win}/bass24/c/bin/rectest.exe (100%) rename bass-sys/{ => win}/bass24/c/bin/speakers.exe (100%) rename bass-sys/{ => win}/bass24/c/bin/spectrum.exe (100%) rename bass-sys/{ => win}/bass24/c/bin/synth.exe (100%) rename bass-sys/{ => win}/bass24/c/bin/writewav.exe (100%) create mode 100644 bass-sys/win/bass24/c/contest/contest.c rename bass-sys/{ => win}/bass24/c/contest/contest.dsp (100%) rename bass-sys/{ => win}/bass24/c/contest/contest.vcproj (100%) rename bass-sys/{ => win}/bass24/c/contest/contest.vcxproj (100%) rename bass-sys/{ => win}/bass24/c/contest/makefile (100%) rename bass-sys/{ => win}/bass24/c/custloop/custloop.c (100%) rename bass-sys/{ => win}/bass24/c/custloop/custloop.dsp (100%) rename bass-sys/{ => win}/bass24/c/custloop/custloop.vcproj (100%) rename bass-sys/{ => win}/bass24/c/custloop/custloop.vcxproj (100%) rename bass-sys/{ => win}/bass24/c/custloop/makefile (100%) create mode 100644 bass-sys/win/bass24/c/devlist/devlist.c rename bass-sys/{ => win}/bass24/c/devlist/devlist.dsp (100%) rename bass-sys/{ => win}/bass24/c/devlist/devlist.vcproj (100%) rename bass-sys/{ => win}/bass24/c/devlist/devlist.vcxproj (100%) rename bass-sys/{ => win}/bass24/c/devlist/makefile (100%) rename bass-sys/{ => win}/bass24/c/dsptest/dsptest.c (100%) rename bass-sys/{ => win}/bass24/c/dsptest/dsptest.dsp (100%) rename bass-sys/{ => win}/bass24/c/dsptest/dsptest.rc (100%) rename bass-sys/{ => win}/bass24/c/dsptest/dsptest.vcproj (100%) rename bass-sys/{ => win}/bass24/c/dsptest/dsptest.vcxproj (100%) rename bass-sys/{ => win}/bass24/c/dsptest/makefile (100%) rename bass-sys/{ => win}/bass24/c/fxtest/fxtest.c (100%) rename bass-sys/{ => win}/bass24/c/fxtest/fxtest.dsp (100%) rename bass-sys/{ => win}/bass24/c/fxtest/fxtest.rc (100%) rename bass-sys/{ => win}/bass24/c/fxtest/fxtest.vcproj (100%) rename bass-sys/{ => win}/bass24/c/fxtest/fxtest.vcxproj (100%) rename bass-sys/{ => win}/bass24/c/fxtest/makefile (100%) rename bass-sys/{ => win}/bass24/c/livefx/livefx.c (100%) rename bass-sys/{ => win}/bass24/c/livefx/livefx.dsp (100%) rename bass-sys/{ => win}/bass24/c/livefx/livefx.rc (100%) rename bass-sys/{ => win}/bass24/c/livefx/livefx.vcproj (100%) rename bass-sys/{ => win}/bass24/c/livefx/livefx.vcxproj (100%) rename bass-sys/{ => win}/bass24/c/livefx/makefile (100%) rename bass-sys/{ => win}/bass24/c/livespec/livespec.c (100%) rename bass-sys/{ => win}/bass24/c/livespec/livespec.dsp (100%) rename bass-sys/{ => win}/bass24/c/livespec/livespec.vcproj (100%) rename bass-sys/{ => win}/bass24/c/livespec/livespec.vcxproj (100%) rename bass-sys/{ => win}/bass24/c/livespec/makefile (100%) rename bass-sys/{ => win}/bass24/c/makefile (100%) rename bass-sys/{ => win}/bass24/c/makefile.in (100%) rename bass-sys/{ => win}/bass24/c/modtest/makefile (100%) rename bass-sys/{ => win}/bass24/c/modtest/modtest.c (100%) rename bass-sys/{ => win}/bass24/c/modtest/modtest.dsp (100%) rename bass-sys/{ => win}/bass24/c/modtest/modtest.rc (100%) rename bass-sys/{ => win}/bass24/c/modtest/modtest.vcproj (100%) rename bass-sys/{ => win}/bass24/c/modtest/modtest.vcxproj (100%) rename bass-sys/{ => win}/bass24/c/multi/makefile (100%) rename bass-sys/{ => win}/bass24/c/multi/multi.c (100%) rename bass-sys/{ => win}/bass24/c/multi/multi.dsp (100%) rename bass-sys/{ => win}/bass24/c/multi/multi.rc (100%) rename bass-sys/{ => win}/bass24/c/multi/multi.vcproj (100%) rename bass-sys/{ => win}/bass24/c/multi/multi.vcxproj (100%) rename bass-sys/{ => win}/bass24/c/netradio/makefile (100%) rename bass-sys/{ => win}/bass24/c/netradio/netradio.c (100%) rename bass-sys/{ => win}/bass24/c/netradio/netradio.dsp (100%) rename bass-sys/{ => win}/bass24/c/netradio/netradio.rc (100%) rename bass-sys/{ => win}/bass24/c/netradio/netradio.vcproj (100%) rename bass-sys/{ => win}/bass24/c/netradio/netradio.vcxproj (100%) rename bass-sys/{ => win}/bass24/c/plugins/makefile (100%) rename bass-sys/{ => win}/bass24/c/plugins/plugins.c (100%) rename bass-sys/{ => win}/bass24/c/plugins/plugins.dsp (100%) rename bass-sys/{ => win}/bass24/c/plugins/plugins.rc (100%) rename bass-sys/{ => win}/bass24/c/plugins/plugins.vcproj (100%) rename bass-sys/{ => win}/bass24/c/plugins/plugins.vcxproj (100%) rename bass-sys/{ => win}/bass24/c/rectest/makefile (100%) rename bass-sys/{ => win}/bass24/c/rectest/rectest.c (100%) rename bass-sys/{ => win}/bass24/c/rectest/rectest.dsp (100%) rename bass-sys/{ => win}/bass24/c/rectest/rectest.rc (100%) rename bass-sys/{ => win}/bass24/c/rectest/rectest.vcproj (100%) rename bass-sys/{ => win}/bass24/c/rectest/rectest.vcxproj (100%) rename bass-sys/{ => win}/bass24/c/speakers/makefile (100%) rename bass-sys/{ => win}/bass24/c/speakers/speakers.c (100%) rename bass-sys/{ => win}/bass24/c/speakers/speakers.dsp (100%) rename bass-sys/{ => win}/bass24/c/speakers/speakers.rc (100%) rename bass-sys/{ => win}/bass24/c/speakers/speakers.vcproj (100%) rename bass-sys/{ => win}/bass24/c/speakers/speakers.vcxproj (100%) rename bass-sys/{ => win}/bass24/c/spectrum/makefile (100%) rename bass-sys/{ => win}/bass24/c/spectrum/spectrum.c (100%) rename bass-sys/{ => win}/bass24/c/spectrum/spectrum.dsp (100%) rename bass-sys/{ => win}/bass24/c/spectrum/spectrum.vcproj (100%) rename bass-sys/{ => win}/bass24/c/spectrum/spectrum.vcxproj (100%) rename bass-sys/{ => win}/bass24/c/synth/makefile (100%) rename bass-sys/{ => win}/bass24/c/synth/synth.c (100%) rename bass-sys/{ => win}/bass24/c/synth/synth.dsp (100%) rename bass-sys/{ => win}/bass24/c/synth/synth.vcproj (100%) rename bass-sys/{ => win}/bass24/c/synth/synth.vcxproj (100%) rename bass-sys/{ => win}/bass24/c/writewav/makefile (100%) create mode 100644 bass-sys/win/bass24/c/writewav/writewav.c rename bass-sys/{ => win}/bass24/c/writewav/writewav.dsp (100%) rename bass-sys/{ => win}/bass24/c/writewav/writewav.vcproj (100%) rename bass-sys/{ => win}/bass24/c/writewav/writewav.vcxproj (100%) rename bass-sys/{ => win}/bass24/c/x64/bass.lib (100%) rename bass-sys/{ => win}/bass24/delphi/3dTest/D3Test.dpr (100%) rename bass-sys/{ => win}/bass24/delphi/3dTest/DTMain.dfm (100%) rename bass-sys/{ => win}/bass24/delphi/3dTest/DTMain.pas (100%) rename bass-sys/{ => win}/bass24/delphi/BassTest/BTMain.dfm (100%) rename bass-sys/{ => win}/bass24/delphi/BassTest/BTMain.pas (100%) rename bass-sys/{ => win}/bass24/delphi/BassTest/BassTest.dpr (100%) rename bass-sys/{ => win}/bass24/delphi/ConTest/ConTest.dpr (100%) rename bass-sys/{ => win}/bass24/delphi/DspTest/DTMain.dfm (100%) rename bass-sys/{ => win}/bass24/delphi/DspTest/DTMain.pas (100%) rename bass-sys/{ => win}/bass24/delphi/DspTest/DspTest.dpr (100%) rename bass-sys/{ => win}/bass24/delphi/RecordTest/RecordTest.dpr (100%) rename bass-sys/{ => win}/bass24/delphi/RecordTest/Unit1.dfm (100%) rename bass-sys/{ => win}/bass24/delphi/RecordTest/Unit1.pas (100%) rename bass-sys/{ => win}/bass24/delphi/SampleVis/CommonTypes.pas (100%) rename bass-sys/{ => win}/bass24/delphi/SampleVis/circle_vis.pas (100%) rename bass-sys/{ => win}/bass24/delphi/SampleVis/main.dfm (100%) rename bass-sys/{ => win}/bass24/delphi/SampleVis/main.pas (100%) rename bass-sys/{ => win}/bass24/delphi/SampleVis/osc_vis.pas (100%) rename bass-sys/{ => win}/bass24/delphi/SampleVis/samplevis.dpr (100%) rename bass-sys/{ => win}/bass24/delphi/SampleVis/spectrum_vis.pas (100%) rename bass-sys/{ => win}/bass24/delphi/Speakers/Speakers.dpr (100%) rename bass-sys/{ => win}/bass24/delphi/Speakers/Unit1.dfm (100%) rename bass-sys/{ => win}/bass24/delphi/Speakers/Unit1.pas (100%) rename bass-sys/{ => win}/bass24/delphi/StreamTest/STMain.dfm (100%) rename bass-sys/{ => win}/bass24/delphi/StreamTest/STMain.pas (100%) rename bass-sys/{ => win}/bass24/delphi/StreamTest/StreamTest.dpr (100%) rename bass-sys/{ => win}/bass24/delphi/bass.bpg (100%) rename bass-sys/{ => win}/bass24/delphi/bass.pas (100%) rename bass-sys/{ => win}/bass24/delphi/custloop/Unit1.dfm (100%) rename bass-sys/{ => win}/bass24/delphi/custloop/Unit1.pas (100%) rename bass-sys/{ => win}/bass24/delphi/custloop/custloop.dpr (100%) rename bass-sys/{ => win}/bass24/delphi/devlist/devlist.dpr (100%) rename bass-sys/{ => win}/bass24/delphi/fxtest/FXtest.dpr (100%) rename bass-sys/{ => win}/bass24/delphi/fxtest/test.dfm (100%) rename bass-sys/{ => win}/bass24/delphi/fxtest/test.pas (100%) rename bass-sys/{ => win}/bass24/delphi/livefx/Unit1.dfm (100%) rename bass-sys/{ => win}/bass24/delphi/livefx/Unit1.pas (100%) rename bass-sys/{ => win}/bass24/delphi/livefx/livefx.dpr (100%) rename bass-sys/{ => win}/bass24/delphi/livespec/livespec.dpr (100%) rename bass-sys/{ => win}/bass24/delphi/modtest/modtest.dpr (100%) rename bass-sys/{ => win}/bass24/delphi/modtest/modtest.rc (100%) rename bass-sys/{ => win}/bass24/delphi/multi/Multi.dpr (100%) rename bass-sys/{ => win}/bass24/delphi/multi/multi.rc (100%) rename bass-sys/{ => win}/bass24/delphi/netradio/Unit1.dfm (100%) rename bass-sys/{ => win}/bass24/delphi/netradio/Unit1.pas (100%) rename bass-sys/{ => win}/bass24/delphi/netradio/netradio.dpr (100%) rename bass-sys/{ => win}/bass24/delphi/plugins/Unit1.dfm (100%) rename bass-sys/{ => win}/bass24/delphi/plugins/Unit1.pas (100%) rename bass-sys/{ => win}/bass24/delphi/plugins/plugins.dpr (100%) rename bass-sys/{ => win}/bass24/delphi/spectrum/COMMON.INC (100%) rename bass-sys/{ => win}/bass24/delphi/spectrum/Unit1.pas (100%) rename bass-sys/{ => win}/bass24/delphi/spectrum/spectrum.dpr (100%) rename bass-sys/{ => win}/bass24/delphi/synth/synth.dpr (100%) rename bass-sys/{ => win}/bass24/delphi/writewav/UnitMain.dfm (100%) rename bass-sys/{ => win}/bass24/delphi/writewav/UnitMain.pas (100%) rename bass-sys/{ => win}/bass24/delphi/writewav/writewav.dpr (100%) rename bass-sys/{ => win}/bass24/mp3-free/bass.dll (100%) rename bass-sys/{ => win}/bass24/vb/3Dtest/frm3Dtest.frm (100%) rename bass-sys/{ => win}/bass24/vb/3Dtest/prj3Dtest.vbp (100%) rename bass-sys/{ => win}/bass24/vb/BASStest/frmBassTest.frm (100%) rename bass-sys/{ => win}/bass24/vb/BASStest/prjBassTest.vbp (100%) rename bass-sys/{ => win}/bass24/vb/CustLoop/frmCustLoop.frm (100%) rename bass-sys/{ => win}/bass24/vb/CustLoop/modCustLoop.bas (100%) rename bass-sys/{ => win}/bass24/vb/CustLoop/prjCustLoop.vbp (100%) rename bass-sys/{ => win}/bass24/vb/DSPtest/frmDSPtest.frm (100%) rename bass-sys/{ => win}/bass24/vb/DSPtest/modDSPtest.bas (100%) rename bass-sys/{ => win}/bass24/vb/DSPtest/prjDSPtest.vbp (100%) rename bass-sys/{ => win}/bass24/vb/FXtest/frmFXtest.frm (100%) rename bass-sys/{ => win}/bass24/vb/FXtest/prjFXtest.vbp (100%) rename bass-sys/{ => win}/bass24/vb/LiveFX/frmLiveFX.frm (100%) rename bass-sys/{ => win}/bass24/vb/LiveFX/modLiveFX.bas (100%) rename bass-sys/{ => win}/bass24/vb/LiveFX/prjLiveFX.vbp (100%) rename bass-sys/{ => win}/bass24/vb/LiveSpec/frmLiveSpec.frm (100%) rename bass-sys/{ => win}/bass24/vb/LiveSpec/modLiveSpec.bas (100%) rename bass-sys/{ => win}/bass24/vb/LiveSpec/prjLiveSpec.vbp (100%) rename bass-sys/{ => win}/bass24/vb/Memory/SYNCtest.bas (100%) rename bass-sys/{ => win}/bass24/vb/Memory/cbass_time.cls (100%) rename bass-sys/{ => win}/bass24/vb/Memory/frmMemory.frm (100%) rename bass-sys/{ => win}/bass24/vb/Memory/prjMemory.vbp (100%) rename bass-sys/{ => win}/bass24/vb/Multi/frmDevice.frm (100%) rename bass-sys/{ => win}/bass24/vb/Multi/frmMulti.frm (100%) rename bass-sys/{ => win}/bass24/vb/Multi/modMulti.bas (100%) rename bass-sys/{ => win}/bass24/vb/Multi/prjMulti.vbp (100%) rename bass-sys/{ => win}/bass24/vb/NetRadio/clsFileIo.cls (100%) rename bass-sys/{ => win}/bass24/vb/NetRadio/frmNetRadio.frm (100%) rename bass-sys/{ => win}/bass24/vb/NetRadio/modNetRadio.bas (100%) rename bass-sys/{ => win}/bass24/vb/NetRadio/prjNetRadio.vbp (100%) rename bass-sys/{ => win}/bass24/vb/Plugins/frmPlugins.frm (100%) rename bass-sys/{ => win}/bass24/vb/Plugins/prjPlugins.vbp (100%) rename bass-sys/{ => win}/bass24/vb/RecTest/frmRecTest.frm (100%) rename bass-sys/{ => win}/bass24/vb/RecTest/modRecTest.bas (100%) rename bass-sys/{ => win}/bass24/vb/RecTest/prjRecTest.vbp (100%) rename bass-sys/{ => win}/bass24/vb/Speakers/frmSpeakers.frm (100%) rename bass-sys/{ => win}/bass24/vb/Speakers/prjSpeakers.vbp (100%) rename bass-sys/{ => win}/bass24/vb/Spectrum/frmSpectrum.frm (100%) rename bass-sys/{ => win}/bass24/vb/Spectrum/modSpectrum.bas (100%) rename bass-sys/{ => win}/bass24/vb/Spectrum/prjSpectrum.vbp (100%) rename bass-sys/{ => win}/bass24/vb/Synth/frmSynth.frm (100%) rename bass-sys/{ => win}/bass24/vb/Synth/modSynth.bas (100%) rename bass-sys/{ => win}/bass24/vb/Synth/prjSynth.vbp (100%) rename bass-sys/{ => win}/bass24/vb/WriteWav/frmWriteWave.frm (100%) rename bass-sys/{ => win}/bass24/vb/WriteWav/prjWriteWave.vbp (100%) rename bass-sys/{ => win}/bass24/vb/bass.bas (100%) rename bass-sys/{ => win}/bass24/x64/bass.dll (100%) rename bass-sys/{ => win}/bass24/x64/mp3-free/bass.dll (100%) diff --git a/bass-sys/linux/bass24/3dtest/3dtest.c b/bass-sys/linux/bass24/3dtest/3dtest.c new file mode 100644 index 0000000..fd58084 --- /dev/null +++ b/bass-sys/linux/bass24/3dtest/3dtest.c @@ -0,0 +1,315 @@ +/* + BASS 3D test + Copyright (c) 1999-2012 Un4seen Developments Ltd. +*/ + +#include +#include +#include +#include +#include +#include +#include "bass.h" + +// path to glade file +#ifndef GLADE_PATH +#define GLADE_PATH "" +#endif + +GladeXML *glade; +GtkWidget *win = 0; +GtkWidget *filesel; + +// channel (sample/music) info structure +typedef struct { + DWORD channel; // the channel + BASS_3DVECTOR pos, vel; // position,velocity +} Channel; + +Channel *chans = NULL; // the channels +int chanc = 0, chan = -1; // number of channels, current channel + +#define TIMERPERIOD 50 // timer period (ms) +#define MAXDIST 50 // maximum distance of the channels (m) +#define SPEED 12 // speed of the channels' movement (m/s) + +// display error messages +void Error(const char *es) +{ + GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(win), GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s\n(error code: %d)", es, BASS_ErrorGetCode()); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); +} + +#define GetWidget(id) glade_xml_get_widget(glade,id) + +void WindowDestroy(GtkObject *obj, gpointer data) +{ + gtk_main_quit(); +} + +// Update the button states +void UpdateButtons() +{ + gtk_widget_set_sensitive(GetWidget("remove"), chan == -1 ? FALSE : TRUE); + gtk_widget_set_sensitive(GetWidget("play"), chan == -1 ? FALSE : TRUE); + gtk_widget_set_sensitive(GetWidget("stop"), chan == -1 ? FALSE : TRUE); + gtk_widget_set_sensitive(GetWidget("movex"), chan == -1 ? FALSE : TRUE); + gtk_widget_set_sensitive(GetWidget("movez"), chan == -1 ? FALSE : TRUE); + gtk_widget_set_sensitive(GetWidget("movereset"), chan == -1 ? FALSE : TRUE); + if (chan != -1) { + gtk_spin_button_set_value(GTK_SPIN_BUTTON(GetWidget("movex")), fabs(chans[chan].vel.x)); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(GetWidget("movez")), fabs(chans[chan].vel.z)); + } +} + +gboolean ListSelectionChange(GtkTreeView *treeview, gpointer data) +{ // the selected channel has (probably) changed + GtkTreeSelection *ts; + GtkTreeModel *tm; + GtkTreeIter it; + ts = gtk_tree_view_get_selection(GTK_TREE_VIEW(GetWidget("channels"))); + if (gtk_tree_selection_get_selected(ts, &tm, &it)) { + char *rows = gtk_tree_model_get_string_from_iter(tm, &it); + chan = atoi(rows); + g_free(rows); + } else + chan = -1; + UpdateButtons(); + return TRUE; +} + +gboolean FileExtensionFilter(const GtkFileFilterInfo *info, gpointer data) +{ + return !regexec((regex_t*)data, info->filename, 0, NULL, 0); +} + +void AddClicked(GtkButton *obj, gpointer data) +{ // add a channel + int resp = gtk_dialog_run(GTK_DIALOG(filesel)); + gtk_widget_hide(filesel); + if (resp == GTK_RESPONSE_ACCEPT) { + char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filesel)); + DWORD newchan; + // Load a music or sample from "file" + if ((newchan = BASS_MusicLoad(FALSE, file, 0, 0, BASS_MUSIC_RAMP | BASS_SAMPLE_LOOP | BASS_SAMPLE_3D, 1)) + || (newchan = BASS_SampleLoad(FALSE, file, 0, 0, 1, BASS_SAMPLE_LOOP | BASS_SAMPLE_3D | BASS_SAMPLE_MONO))) { + Channel *c; + chanc++; + chans = (Channel*)realloc((void*)chans, chanc * sizeof(Channel)); + c = chans + chanc - 1; + memset(c, 0, sizeof(Channel)); + c->channel = newchan; + BASS_SampleGetChannel(newchan, FALSE); // initialize sample channel + { // add it to the list + GtkTreeView *tree = GTK_TREE_VIEW(GetWidget("channels")); + GtkListStore *tm = GTK_LIST_STORE(gtk_tree_view_get_model(tree)); + GtkTreeIter it; + gtk_list_store_append(tm, &it); + gtk_list_store_set(tm, &it, 0, strrchr(file, '/') + 1, -1); + } + } else + Error("Can't load file (note samples must be mono)"); + g_free(file); + } +} + +void RemoveClicked(GtkButton *obj, gpointer data) +{ // remove a channel + GtkTreeModel *tm = gtk_tree_view_get_model(GTK_TREE_VIEW(GetWidget("channels"))); + GtkTreeIter it; + if (gtk_tree_model_iter_nth_child(tm, &it, NULL, chan)) { + Channel *c = chans + chan; + // free both MOD and stream, it must be one of them! :) + BASS_SampleFree(c->channel); + BASS_MusicFree(c->channel); + chanc--; + memmove(c, c + 1, (chanc - chan) * sizeof(Channel)); + gtk_list_store_remove(GTK_LIST_STORE(tm), &it); + } +} + +void PlayClicked(GtkButton *obj, gpointer data) +{ + BASS_ChannelPlay(chans[chan].channel, FALSE); +} + +void StopClicked(GtkButton *obj, gpointer data) +{ + BASS_ChannelPause(chans[chan].channel); +} + +void MoveXChanged(GtkSpinButton *spinbutton, gpointer data) +{ // X velocity + float value = gtk_spin_button_get_value(GTK_SPIN_BUTTON(GetWidget("movex"))); + if (fabs(chans[chan].vel.x) != value) chans[chan].vel.x = value; +} + +void MoveZChanged(GtkSpinButton *spinbutton, gpointer data) +{ // Y velocity + float value = gtk_spin_button_get_value(GTK_SPIN_BUTTON(GetWidget("movez"))); + if (fabs(chans[chan].vel.z) != value) chans[chan].vel.z = value; +} + +void MoveResetClicked(GtkButton *obj, gpointer data) +{ // reset the position and velocity to 0 + memset(&chans[chan].pos, 0, sizeof(chans[chan].pos)); + memset(&chans[chan].vel, 0, sizeof(chans[chan].vel)); + UpdateButtons(); +} + +void RolloffChanged(GtkRange *range, gpointer data) +{ + // change the rolloff factor + double value = gtk_range_get_value(range); + BASS_Set3DFactors(-1, pow(2, (value - 10) / 5.0), -1); +} + +void DopplerChanged(GtkRange *range, gpointer data) +{ + // change the doppler factor + double value = gtk_range_get_value(range); + BASS_Set3DFactors(-1, -1, pow(2, (value - 10) / 5.0)); +} + +gboolean Update(gpointer data) +{ + int c, x, y, cx, cy; + GtkWidget *dc = GetWidget("drawingarea1"); + GdkGC *gc = dc->style->fg_gc[GTK_WIDGET_STATE(dc)]; + GdkGCValues gcsave; + + gdk_gc_get_values(gc, &gcsave); + + cx = dc->allocation.width / 2; + cy = dc->allocation.height / 2; + + { // clear the display + GdkColor c = { 0,0xffff,0xffff,0xffff }; + gdk_gc_set_rgb_fg_color(gc, &c); + gdk_draw_rectangle(dc->window, gc, TRUE, 0, 0, dc->allocation.width, dc->allocation.height); + } + + { // Draw the listener + GdkColor c = { 0,0x8000,0x8000,0x8000 }; + gdk_gc_set_rgb_fg_color(gc, &c); + gdk_draw_arc(dc->window, gc, TRUE, cx - 4, cy - 4, 8, 8, 0, 360 * 64); + } + + for (c = 0; c < chanc; c++) { + // If the channel's playing then update it's position + if (BASS_ChannelIsActive(chans[c].channel) == BASS_ACTIVE_PLAYING) { + // Check if channel has reached the max distance + if (chans[c].pos.z >= MAXDIST || chans[c].pos.z <= -MAXDIST) + chans[c].vel.z = -chans[c].vel.z; + if (chans[c].pos.x >= MAXDIST || chans[c].pos.x <= -MAXDIST) + chans[c].vel.x = -chans[c].vel.x; + // Update channel position + chans[c].pos.z += chans[c].vel.z * TIMERPERIOD / 1000; + chans[c].pos.x += chans[c].vel.x * TIMERPERIOD / 1000; + BASS_ChannelSet3DPosition(chans[c].channel, &chans[c].pos, NULL, &chans[c].vel); + } + { // Draw the channel position indicator + static GdkColor cols[2] = { {0,0xffff,0xc000,0xc000},{0,0xffff,0,0} }; + gdk_gc_set_rgb_fg_color(gc, &cols[chan == c]); + x = cx + (int)((cx - 10) * chans[c].pos.x / MAXDIST); + y = cy - (int)((cy - 10) * chans[c].pos.z / MAXDIST); + gdk_draw_arc(dc->window, gc, TRUE, x - 4, y - 4, 8, 8, 0, 360 * 64); + } + } + // Apply the 3D changes + BASS_Apply3D(); + + gdk_gc_set_values(gc, &gcsave, GDK_GC_FOREGROUND); + + return TRUE; +} + +int main(int argc, char* argv[]) +{ + regex_t fregex[2]; + + gtk_init(&argc, &argv); + + // check the correct BASS was loaded + if (HIWORD(BASS_GetVersion()) != BASSVERSION) { + Error("An incorrect version of BASS was loaded"); + return 0; + } + + // Initialize the output device with 3D support + if (!BASS_Init(-1, 44100, BASS_DEVICE_3D, NULL, NULL)) { + Error("Can't initialize device"); + return 0; + } + + { + BASS_INFO i; + BASS_GetInfo(&i); + if (i.speakers > 2) { + GtkWidget *dialog = gtk_message_dialog_new(NULL, 0, + GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "Multiple speakers were detected. Would you like to use them?"); + if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_NO) + BASS_SetConfig(BASS_CONFIG_3DALGORITHM, BASS_3DALG_OFF); + gtk_widget_destroy(dialog); + } + } + + // Use meters as distance unit, real world rolloff, real doppler effect + BASS_Set3DFactors(1, 1, 1); + + // initialize GUI + glade = glade_xml_new(GLADE_PATH"3dtest.glade", NULL, NULL); + if (!glade) return 0; + win = GetWidget("window1"); + if (!win) return 0; + glade_xml_signal_autoconnect(glade); + g_signal_connect(gtk_tree_view_get_selection(GTK_TREE_VIEW(GetWidget("channels"))), "changed", G_CALLBACK(ListSelectionChange), NULL); + + { // setup list + GtkTreeView *list = GTK_TREE_VIEW(GetWidget("channels")); + GtkTreeViewColumn *col = gtk_tree_view_column_new(); + gtk_tree_view_append_column(list, col); + GtkCellRenderer *renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(col, renderer, TRUE); + gtk_tree_view_column_add_attribute(col, renderer, "text", 0); + GtkListStore *liststore = gtk_list_store_new(1, G_TYPE_STRING); + gtk_tree_view_set_model(list, GTK_TREE_MODEL(liststore)); + g_object_unref(liststore); + } + + { // initialize file selector + GtkFileFilter *filter; + filesel = gtk_file_chooser_dialog_new("Open File", GTK_WINDOW(win), GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "Streamable files (wav/aif/mp3/mp2/mp1/ogg)"); + regcomp(&fregex[0], "\\.(mp[1-3]|ogg|wav|aif)$", REG_ICASE | REG_NOSUB | REG_EXTENDED); + gtk_file_filter_add_custom(filter, GTK_FILE_FILTER_FILENAME, FileExtensionFilter, &fregex[0], NULL); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "MOD music files (mo3/xm/mod/s3m/it/mtm/umx)"); + regcomp(&fregex[1], "\\.(mo3|xm|mod|s3m|it|umx)$", REG_ICASE | REG_NOSUB | REG_EXTENDED); + gtk_file_filter_add_custom(filter, GTK_FILE_FILTER_FILENAME, FileExtensionFilter, &fregex[1], NULL); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "All files"); + gtk_file_filter_add_pattern(filter, "*"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + } + + g_timeout_add(TIMERPERIOD, Update, NULL); + + UpdateButtons(); + + gtk_main(); + + gtk_widget_destroy(filesel); + regfree(&fregex[0]); + regfree(&fregex[1]); + + BASS_Free(); // close output + + return 0; +} diff --git a/bass-sys/linux/bass24/3dtest/3dtest.glade b/bass-sys/linux/bass24/3dtest/3dtest.glade new file mode 100644 index 0000000..9cb02f1 --- /dev/null +++ b/bass-sys/linux/bass24/3dtest/3dtest.glade @@ -0,0 +1,334 @@ + + + + + True + 5 + BASS - 3D test + False + GTK_WIN_POS_CENTER + + + + True + 5 + + + True + 5 + + + True + 0 + GTK_SHADOW_OUT + + + True + 5 + 5 + 5 + + + True + 5 + + + 200 + True + True + False + True + + + + + True + 5 + True + + + True + True + True + Add... + 0 + + + + + + True + True + True + Remove + 0 + + + + 1 + + + + + False + False + 1 + + + + + True + 5 + True + + + True + True + True + Play + 0 + + + + + + True + True + True + Stop + 0 + + + + 1 + + + + + False + False + 2 + + + + + + + + + True + Channels + True + + + label_item + + + + + + + True + 0 + GTK_SHADOW_OUT + + + True + 5 + 5 + 5 + + + True + 5 + + + True + x: + + + + + True + True + 0 0 100 1 10 0 + True + + + + 1 + + + + + True + z: + + + 2 + + + + + True + True + 0 0 100 1 10 0 + True + + + + 3 + + + + + True + True + True + Reset + 0 + + + + 4 + + + + + + + + + True + Movement + True + + + label_item + + + + + 1 + + + + + + + True + 5 + + + True + 0 + GTK_SHADOW_OUT + + + True + 5 + 5 + 5 + + + 200 + 200 + True + + + + + + + True + True + + + label_item + + + + + + + True + 0 + GTK_SHADOW_OUT + + + True + 5 + 5 + 5 + + + True + True + 10 0 20 1 10 0 + False + + + + + + + + True + Rolloff factor + True + + + label_item + + + + + 1 + + + + + True + 0 + GTK_SHADOW_OUT + + + True + 5 + 5 + 5 + + + True + True + 10 0 20 1 10 0 + False + + + + + + + + True + Doppler factor + True + + + label_item + + + + + 2 + + + + + 1 + + + + + + diff --git a/bass-sys/linux/bass24/3dtest/makefile b/bass-sys/linux/bass24/3dtest/makefile new file mode 100644 index 0000000..9f1b4cd --- /dev/null +++ b/bass-sys/linux/bass24/3dtest/makefile @@ -0,0 +1,9 @@ +TARGET = 3dtest +PACKAGES = gtk+-2.0 libglade-2.0 + +include ../makefile.in + +all: $(TARGET) + +clean: + $(RM) $(TARGET) diff --git a/bass-sys/bass24/bass.chm b/bass-sys/linux/bass24/bass.chm similarity index 100% rename from bass-sys/bass24/bass.chm rename to bass-sys/linux/bass24/bass.chm diff --git a/bass-sys/bass24/c/bass.h b/bass-sys/linux/bass24/bass.h similarity index 100% rename from bass-sys/bass24/c/bass.h rename to bass-sys/linux/bass24/bass.h diff --git a/bass-sys/bass24/bass.txt b/bass-sys/linux/bass24/bass.txt similarity index 100% rename from bass-sys/bass24/bass.txt rename to bass-sys/linux/bass24/bass.txt diff --git a/bass-sys/linux/bass24/basstest/basstest.c b/bass-sys/linux/bass24/basstest/basstest.c new file mode 100644 index 0000000..66f66d4 --- /dev/null +++ b/bass-sys/linux/bass24/basstest/basstest.c @@ -0,0 +1,294 @@ +/* + BASS simple playback test + Copyright (c) 1999-2012 Un4seen Developments Ltd. +*/ + +#include +#include +#include +#include +#include +#include "bass.h" + +// path to glade file +#ifndef GLADE_PATH +#define GLADE_PATH "" +#endif + +GladeXML *glade; +GtkWidget *win = 0; +GtkWidget *filesel; + +// display error messages +void Error(const char *es) +{ + GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(win), GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s\n(error code: %d)", es, BASS_ErrorGetCode()); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); +} + +#define GetWidget(id) glade_xml_get_widget(glade,id) + +void AddListEntry(const char *list, DWORD handle, const char *text) +{ + GtkTreeView *tree = GTK_TREE_VIEW(GetWidget(list)); + GtkListStore *tm = GTK_LIST_STORE(gtk_tree_view_get_model(tree)); + GtkTreeIter it; + gtk_list_store_append(tm, &it); + gtk_list_store_set(tm, &it, 0, text, 1, handle, -1); +} + +DWORD GetSelectedHandle(int mode) +{ + DWORD handle; + char list[10]; + GtkTreeSelection *ts; + GtkTreeModel *tm; + GtkTreeIter it; + sprintf(list, "list%d", mode); + ts = gtk_tree_view_get_selection(GTK_TREE_VIEW(GetWidget(list))); + if (!gtk_tree_selection_get_selected(ts, &tm, &it)) return 0; + gtk_tree_model_get(tm, &it, 1, &handle, -1); + return handle; +} + +void WindowDestroy(GtkObject *obj, gpointer data) +{ + gtk_main_quit(); +} + +gboolean FileExtensionFilter(const GtkFileFilterInfo *info, gpointer data) +{ + return !regexec((regex_t*)data, info->filename, 0, NULL, 0); +} + +void AddClicked(GtkButton *obj, gpointer data) +{ + int resp = gtk_dialog_run(GTK_DIALOG(filesel)); + gtk_widget_hide(filesel); + if (resp == GTK_RESPONSE_ACCEPT) { + char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filesel)); + const gchar *objname = gtk_widget_get_name(GTK_WIDGET(obj)); + int mode = atoi(objname + 3); // get mode from button name ("addX") + switch (mode) { + case 1: // add a stream + { + HSTREAM handle; + if (handle = BASS_StreamCreateFile(FALSE, file, 0, 0, 0)) + AddListEntry("list1", handle, strrchr(file, '/') + 1); + else + Error("Can't open stream"); + } + break; + case 2: // add a music + { + HMUSIC handle; + if (handle = BASS_MusicLoad(FALSE, file, 0, 0, BASS_MUSIC_RAMP, 1)) + AddListEntry("list2", handle, strrchr(file, '/') + 1); + else + Error("Can't load music"); + } + break; + case 3: // add a sample + { + HSAMPLE sam; + /* load a sample from "file" and give it a max of 3 simultaneous + playings using playback position as override decider */ + if (sam = BASS_SampleLoad(FALSE, file, 0, 0, 3, BASS_SAMPLE_OVER_POS)) + AddListEntry("list3", sam, strrchr(file, '/') + 1); + else + Error("Can't load sample"); + } + break; + } + g_free(file); + } +} + +void RemoveClicked(GtkButton *obj, gpointer data) +{ + const gchar *objname = gtk_widget_get_name(GTK_WIDGET(obj)); + int mode = atoi(objname + 6); // get mode from button name ("removeX") + char list[10]; + sprintf(list, "list%d", mode); // associated list name + GtkTreeView *tree = GTK_TREE_VIEW(GetWidget(list)); + GtkTreeSelection *ts = gtk_tree_view_get_selection(tree); + GtkTreeModel *tm; + GtkTreeIter it; + if (gtk_tree_selection_get_selected(ts, &tm, &it)) { + DWORD handle; + gtk_tree_model_get(tm, &it, 1, &handle, -1); + switch (mode) { + case 1: + BASS_StreamFree(handle); // free stream + break; + case 2: + BASS_MusicFree(handle); // free MOD music + break; + case 3: + BASS_SampleFree(handle); // free sample + break; + } + gtk_list_store_remove(GTK_LIST_STORE(tm), &it); // remove list entry + } +} + +void PlayClicked(GtkButton *obj, gpointer data) +{ + DWORD handle; + const gchar *objname = gtk_widget_get_name(GTK_WIDGET(obj)); + int mode = atoi(objname + 4); // get mode from button name ("playX") + handle = GetSelectedHandle(mode); // get selected stream/music/sample handle + if (mode == 3) { // sample: get a channel and set volume=50% and pan=random + handle = BASS_SampleGetChannel(handle, FALSE); + BASS_ChannelSetAttribute(handle, BASS_ATTRIB_VOL, 0.5f); + BASS_ChannelSetAttribute(handle, BASS_ATTRIB_PAN, ((rand() % 201) - 100) / 100.f); + } + if (!BASS_ChannelPlay(handle, FALSE)) // play it + Error("Can't play channel"); +} + +void StopClicked(GtkButton *obj, gpointer data) +{ + DWORD handle; + const gchar *objname = gtk_widget_get_name(GTK_WIDGET(obj)); + int mode = atoi(objname + 4); // get mode from button name ("playX") + handle = GetSelectedHandle(mode); // get selected stream/music/sample handle + BASS_ChannelStop(handle); // stop it +} + +void RestartClicked(GtkButton *obj, gpointer data) +{ + DWORD handle; + const gchar *objname = gtk_widget_get_name(GTK_WIDGET(obj)); + int mode = atoi(objname + 7); // get mode from button name ("restartX") + handle = GetSelectedHandle(mode); // get selected stream/music/sample handle + if (!BASS_ChannelPlay(handle, TRUE)) // restart it + Error("Can't play channel"); +} + +void GVolumeChanged(GtkRange *range, gpointer data) +{ + const gchar *objname = gtk_widget_get_name(GTK_WIDGET(range)); + int mode = atoi(objname + 7); // get mode from name ("gvolumeX") + double value = gtk_range_get_value(range); + switch (mode) { + case 1: + BASS_SetConfig(BASS_CONFIG_GVOL_STREAM, value * 100); // global stream volume (0-10000) + break; + case 2: + BASS_SetConfig(BASS_CONFIG_GVOL_MUSIC, value * 100); // global MOD volume (0-10000) + break; + case 3: + BASS_SetConfig(BASS_CONFIG_GVOL_SAMPLE, value * 100); // global sample volume (0-10000) + break; + } +} + +void VolumeChanged(GtkRange *range, gpointer data) +{ + double value = gtk_range_get_value(range); + BASS_SetVolume(value / 100.f); // output volume (0-1) +} + +void StopAllClicked(GtkButton *obj, gpointer data) +{ + BASS_Pause(); // pause output +} + +void ResumeAllClicked(GtkButton *obj, gpointer data) +{ + BASS_Start(); // resume output +} + +void ThreadsToggled(GtkToggleButton *obj, gpointer data) +{ + BASS_SetConfig(BASS_CONFIG_UPDATETHREADS, obj->active ? 2 : 1); // set 1 or 2 update threads +} + +gboolean TimerProc(gpointer data) +{ // update the CPU usage % display + char text[16]; + sprintf(text, "CPU%% %.2f", BASS_GetCPU()); + gtk_label_set_text(GTK_LABEL(GetWidget("cpu")), text); + return TRUE; +} + +int main(int argc, char* argv[]) +{ + regex_t fregex[2]; + + gtk_init(&argc, &argv); + + // check the correct BASS was loaded + if (HIWORD(BASS_GetVersion()) != BASSVERSION) { + Error("An incorrect version of BASS was loaded"); + return 0; + } + + // initialize default output device + if (!BASS_Init(-1, 44100, 0, NULL, NULL)) { + Error("Can't initialize device"); + return 0; + } + + // initialize GUI + glade = glade_xml_new(GLADE_PATH"basstest.glade", NULL, NULL); + if (!glade) return 0; + win = GetWidget("window1"); + if (!win) return 0; + glade_xml_signal_autoconnect(glade); + + { // setup lists + int a; + for (a = 1; a <= 3; a++) { + char name[8]; + sprintf(name, "list%d", a); + GtkTreeView *list = GTK_TREE_VIEW(GetWidget(name)); + GtkTreeViewColumn *col = gtk_tree_view_column_new(); + gtk_tree_view_append_column(list, col); + GtkCellRenderer *renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(col, renderer, TRUE); + gtk_tree_view_column_add_attribute(col, renderer, "text", 0); + GtkListStore *liststore = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_INT); + gtk_tree_view_set_model(list, GTK_TREE_MODEL(liststore)); + g_object_unref(liststore); + } + } + + // initialize volume slider + gtk_range_set_value(GTK_RANGE(GetWidget("volume")), BASS_GetVolume() * 100); + + { // initialize file selector + GtkFileFilter *filter; + filesel = gtk_file_chooser_dialog_new("Open File", GTK_WINDOW(win), GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "Streamable files (wav/aif/mp3/mp2/mp1/ogg)"); + regcomp(&fregex[0], "\\.(mp[1-3]|ogg|wav|aif)$", REG_ICASE | REG_NOSUB | REG_EXTENDED); + gtk_file_filter_add_custom(filter, GTK_FILE_FILTER_FILENAME, FileExtensionFilter, &fregex[0], NULL); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "MOD music files (mo3/xm/mod/s3m/it/mtm/umx)"); + regcomp(&fregex[1], "\\.(mo3|xm|mod|s3m|it|umx)$", REG_ICASE | REG_NOSUB | REG_EXTENDED); + gtk_file_filter_add_custom(filter, GTK_FILE_FILTER_FILENAME, FileExtensionFilter, &fregex[1], NULL); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "All files"); + gtk_file_filter_add_pattern(filter, "*"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + } + + g_timeout_add(500, TimerProc, NULL); + + gtk_main(); + + gtk_widget_destroy(filesel); + regfree(&fregex[0]); + regfree(&fregex[1]); + + BASS_Free(); // close output + + return 0; +} diff --git a/bass-sys/linux/bass24/basstest/basstest.glade b/bass-sys/linux/bass24/basstest/basstest.glade new file mode 100644 index 0000000..5d3397b --- /dev/null +++ b/bass-sys/linux/bass24/basstest/basstest.glade @@ -0,0 +1,580 @@ + + + + + True + 5 + BASS - simple playback test + False + GTK_WIN_POS_CENTER + + + + True + 5 + + + True + 5 + True + + + True + 0 + GTK_SHADOW_OUT + + + True + 5 + 5 + 5 + + + True + 5 + + + 200 + True + True + False + True + + + + + True + 5 + True + + + True + True + True + Play + 0 + + + + + + True + True + True + Stop + 0 + + + + 1 + + + + + True + True + True + Restart + 0 + + + + 2 + + + + + False + False + 1 + + + + + True + 5 + True + + + True + True + True + Add.. + 0 + + + + + + True + True + True + Remove + 0 + + + + 1 + + + + + False + False + 2 + + + + + True + + + True + 0 + global volume: + + + + + True + True + 100 0 100 1 10 0 + False + + + + 1 + + + + + False + False + 3 + + + + + + + + + True + Stream + True + + + label_item + + + + + + + True + 0 + GTK_SHADOW_OUT + + + True + 5 + 5 + 5 + + + True + 5 + + + 200 + True + True + False + True + + + + + True + 5 + True + + + True + True + True + Play + 0 + + + + + + True + True + True + Stop + 0 + + + + 1 + + + + + True + True + True + Restart + 0 + + + + 2 + + + + + False + False + 1 + + + + + True + 5 + True + + + True + True + True + Add.. + 0 + + + + + + True + True + True + Remove + 0 + + + + 1 + + + + + False + False + 2 + + + + + True + + + True + 0 + global volume: + + + + + True + True + 100 0 100 1 10 0 + False + + + + 1 + + + + + False + False + 3 + + + + + + + + + True + MOD Music + True + + + label_item + + + + + 1 + + + + + True + 0 + GTK_SHADOW_OUT + + + True + 5 + 5 + 5 + + + True + 5 + + + 200 + True + True + False + True + + + + + True + 5 + True + + + True + True + True + Play + 0 + + + + + + False + False + 1 + + + + + True + 5 + True + + + True + True + True + Add.. + 0 + + + + + + True + True + True + Remove + 0 + + + + 1 + + + + + False + False + 2 + + + + + True + + + True + 0 + global volume: + + + + + True + True + 100 0 100 1 10 0 + False + + + + 1 + + + + + False + False + 3 + + + + + + + + + True + Sample + True + + + label_item + + + + + 2 + + + + + + + True + 10 + + + True + 10 + True + + + True + True + True + Stop Output + 0 + + + + False + + + + + True + True + True + Resume + 0 + + + + False + 1 + + + + + False + False + + + + + True + + + True + 0 + volume: + + + False + False + + + + + True + True + 0 0 100 1 10 0 + False + + + + False + False + 1 + + + + + 1 + + + + + True + 5 + + + True + True + 2 update threads + 0 + True + + + + False + False + + + + + True + PANGO_WRAP_WORD_CHAR + PANGO_ELLIPSIZE_END + + + False + False + 1 + + + + + False + False + 2 + + + + + False + False + 1 + + + + + + diff --git a/bass-sys/linux/bass24/basstest/makefile b/bass-sys/linux/bass24/basstest/makefile new file mode 100644 index 0000000..996bde7 --- /dev/null +++ b/bass-sys/linux/bass24/basstest/makefile @@ -0,0 +1,9 @@ +TARGET = basstest +PACKAGES = gtk+-2.0 libglade-2.0 + +include ../makefile.in + +all: $(TARGET) + +clean: + $(RM) $(TARGET) diff --git a/bass-sys/bass24/c/contest/contest.c b/bass-sys/linux/bass24/contest/contest.c similarity index 100% rename from bass-sys/bass24/c/contest/contest.c rename to bass-sys/linux/bass24/contest/contest.c diff --git a/bass-sys/linux/bass24/contest/makefile b/bass-sys/linux/bass24/contest/makefile new file mode 100644 index 0000000..72ed37c --- /dev/null +++ b/bass-sys/linux/bass24/contest/makefile @@ -0,0 +1,8 @@ +TARGET = contest + +include ../makefile.in + +all: $(TARGET) + +clean: + $(RM) $(TARGET) diff --git a/bass-sys/linux/bass24/custloop/custloop.c b/bass-sys/linux/bass24/custloop/custloop.c new file mode 100644 index 0000000..0069917 --- /dev/null +++ b/bass-sys/linux/bass24/custloop/custloop.c @@ -0,0 +1,271 @@ +/* + BASS custom looping example + Copyright (c) 2004-2014 Un4seen Developments Ltd. +*/ + +#include +#include +#include +#include +#include +#include +#include "bass.h" + +#define WIDTH 600 // display width +#define HEIGHT 201 // height (odd number for centre line) + +#pragma pack(1) +typedef struct { + BYTE rgbRed, rgbGreen, rgbBlue; +} RGB; +#pragma pack() + +GtkWidget *win = 0; +GThread *scanthread = 0; +BOOL killscan = FALSE; + +DWORD chan; +DWORD bpp; // bytes per pixel +QWORD loop[2] = { 0 }; // loop start & end +HSYNC lsync; // looping sync + +GtkWidget *waveda; +GdkPixbuf *wavepb; +RGB palette[HEIGHT / 2 + 1]; + +// display error messages +void Error(const char *es) +{ + GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(win), GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s\n(error code: %d)", es, BASS_ErrorGetCode()); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); +} + +void WindowDestroy(GtkObject *obj, gpointer data) +{ + gtk_main_quit(); +} + +void CALLBACK LoopSyncProc(HSYNC handle, DWORD channel, DWORD data, void *user) +{ + if (!BASS_ChannelSetPosition(channel, loop[0], BASS_POS_BYTE)) // try seeking to loop start + BASS_ChannelSetPosition(channel, 0, BASS_POS_BYTE); // failed, go to start of file instead +} + +void SetLoopStart(QWORD pos) +{ + loop[0] = pos; +} + +void SetLoopEnd(QWORD pos) +{ + loop[1] = pos; + BASS_ChannelRemoveSync(chan, lsync); // remove old sync + lsync = BASS_ChannelSetSync(chan, BASS_SYNC_POS | BASS_SYNC_MIXTIME, loop[1], LoopSyncProc, 0); // set new sync +} + +// scan the peaks +void *ScanPeaks(void *p) +{ + DWORD decoder = (uintptr_t)p; + RGB *wavebuf = (RGB*)gdk_pixbuf_get_pixels(wavepb); + DWORD pos = 0; + float spp = BASS_ChannelBytes2Seconds(decoder, bpp); // seconds per pixel + while (!killscan) { + float peak[2]; + if (spp > 1) { // more than 1 second per pixel, break it down... + float todo = spp; + peak[1] = peak[0] = 0; + do { + float level[2], step = (todo < 1 ? todo : 1); + BASS_ChannelGetLevelEx(decoder, level, step, BASS_LEVEL_STEREO); // scan peaks + if (peak[0] < level[0]) peak[0] = level[0]; + if (peak[1] < level[1]) peak[1] = level[1]; + todo -= step; + } while (todo > 0); + } else + BASS_ChannelGetLevelEx(decoder, peak, spp, BASS_LEVEL_STEREO); // scan peaks + { + DWORD a; + for (a = 0; a < peak[0] * (HEIGHT / 2); a++) + wavebuf[(HEIGHT / 2 - 1 - a) * WIDTH + pos] = palette[1 + a]; // draw left peak + for (a = 0; a < peak[1] * (HEIGHT / 2); a++) + wavebuf[(HEIGHT / 2 + 1 + a) * WIDTH + pos] = palette[1 + a]; // draw right peak + } + pos++; + if (pos >= WIDTH) break; // reached end of display + if (!BASS_ChannelIsActive(decoder)) break; // reached end of channel + } + if (!killscan) { + DWORD size; + BASS_ChannelSetPosition(decoder, (QWORD)-1, BASS_POS_BYTE | BASS_POS_SCAN); // build seek table (scan to end) + size = BASS_ChannelGetAttributeEx(decoder, BASS_ATTRIB_SCANINFO, 0, 0); // get seek table size + if (size) { // got it + void *info = malloc(size); // allocate a buffer + BASS_ChannelGetAttributeEx(decoder, BASS_ATTRIB_SCANINFO, info, size); // get the seek table + BASS_ChannelSetAttributeEx(chan, BASS_ATTRIB_SCANINFO, info, size); // apply it to the playback channel + free(info); + } + } + BASS_StreamFree(decoder); // free the decoder + return NULL; +} + +gboolean FileExtensionFilter(const GtkFileFilterInfo *info, gpointer data) +{ + return !regexec((regex_t*)data, info->filename, 0, NULL, 0); +} + +// select a file to play, and start scanning it +BOOL PlayFile() +{ + BOOL ret = FALSE; + regex_t fregex; + GtkWidget *filesel; // file selector + GtkFileFilter *filter; + filesel = gtk_file_chooser_dialog_new("Open File", GTK_WINDOW(win), GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "Playable files"); + regcomp(&fregex, "\\.(mo3|xm|mod|s3m|it|umx|mp[1-3]|ogg|wav|aif)$", REG_ICASE | REG_NOSUB | REG_EXTENDED); + gtk_file_filter_add_custom(filter, GTK_FILE_FILTER_FILENAME, FileExtensionFilter, &fregex, NULL); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "All files"); + gtk_file_filter_add_pattern(filter, "*"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + if (gtk_dialog_run(GTK_DIALOG(filesel)) == GTK_RESPONSE_ACCEPT) { + char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filesel)); + gtk_widget_hide(filesel); + if (!(chan = BASS_StreamCreateFile(FALSE, file, 0, 0, 0)) + && !(chan = BASS_MusicLoad(FALSE, file, 0, 0, BASS_MUSIC_RAMP | BASS_MUSIC_POSRESET | BASS_MUSIC_PRESCAN, 1))) { + Error("Can't play file"); + } else { + // create the bitmap + wavepb = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, WIDTH, HEIGHT); + { // setup palette + RGB *pal = (RGB*)palette; + int a; + memset(palette, 0, sizeof(palette)); + for (a = 1; a <= HEIGHT / 2; a++) { + pal[a].rgbRed = (255 * a) / (HEIGHT / 2); + pal[a].rgbGreen = 255 - pal[a].rgbRed; + } + } + bpp = BASS_ChannelGetLength(chan, BASS_POS_BYTE) / WIDTH; // bytes per pixel + { + DWORD bpp1 = BASS_ChannelSeconds2Bytes(chan, 0.001); // minimum 1ms per pixel + if (bpp < bpp1) bpp = bpp1; + } + BASS_ChannelSetSync(chan, BASS_SYNC_END | BASS_SYNC_MIXTIME, 0, LoopSyncProc, 0); // set sync to loop at end + BASS_ChannelPlay(chan, FALSE); // start playing + { // create another channel to scan + DWORD chan2 = BASS_StreamCreateFile(FALSE, file, 0, 0, BASS_STREAM_DECODE); + if (!chan2) chan2 = BASS_MusicLoad(FALSE, file, 0, 0, BASS_MUSIC_DECODE, 1); +#if GLIB_CHECK_VERSION(2,32,0) + scanthread = g_thread_new(NULL, ScanPeaks, (void*)(uintptr_t)chan2); // start scanning in a new thread +#else + scanthread = g_thread_create(ScanPeaks, (void*)(uintptr_t)chan2, TRUE, NULL); // start scanning in a new thread +#endif + } + ret = TRUE; + } + g_free(file); + } + gtk_widget_destroy(filesel); + return ret; +} + +void WindowButtonRelease(GtkWidget *obj, GdkEventButton *event, gpointer data) +{ + if (event->type == GDK_BUTTON_RELEASE) { + if (event->button == 1) // set loop start + SetLoopStart(event->x * bpp); + else if (event->button == 3) // set loop end + SetLoopEnd(event->x * bpp); + } +} + +void DrawTimeLine(QWORD pos, DWORD col, DWORD y) +{ + GdkGC *gc = waveda->style->fg_gc[GTK_WIDGET_STATE(waveda)]; + DWORD wpos = pos / bpp; + GdkColor c = { 0,(col & 0xff) << 8,col & 0xff00,(col >> 8) & 0xff00 }; + gdk_gc_set_rgb_fg_color(gc, &c); + gdk_draw_line(waveda->window, gc, wpos, 0, wpos, HEIGHT); +} + +gboolean AreaExpose(GtkWidget *widget, GdkEventExpose *event, gpointer user) +{ + GdkGC *gc = widget->style->fg_gc[GTK_WIDGET_STATE(waveda)]; + GdkGCValues gcsave; + gdk_gc_get_values(gc, &gcsave); + gdk_draw_pixbuf(widget->window, gc, wavepb, 0, 0, 0, 0, -1, -1, GDK_RGB_DITHER_NONE, 0, 0); + DrawTimeLine(loop[0], 0xffff00, 12); // loop start + DrawTimeLine(loop[1], 0x00ffff, 24); // loop end + DrawTimeLine(BASS_ChannelGetPosition(chan, BASS_POS_BYTE), 0xffffff, 0); // current pos + gdk_gc_set_values(gc, &gcsave, GDK_GC_FOREGROUND); + return FALSE; +} + +gboolean TimerProc(gpointer data) +{ + // refresh window + gtk_widget_queue_draw(waveda); + return TRUE; +} + +int main(int argc, char* argv[]) +{ +#if !GLIB_CHECK_VERSION(2,32,0) + g_thread_init(NULL); +#endif + gtk_init(&argc, &argv); + + // check the correct BASS was loaded + if (HIWORD(BASS_GetVersion()) != BASSVERSION) { + Error("An incorrect version of BASS was loaded"); + return 0; + } + + // initialize BASS + if (!BASS_Init(-1, 44100, 0, win, NULL)) { + Error("Can't initialize device"); + return 0; + } + if (!PlayFile()) { // start a file playing + BASS_Free(); + return 0; + } + + // create the window + win = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_position(GTK_WINDOW(win), GTK_WIN_POS_CENTER); + gtk_window_set_resizable(GTK_WINDOW(win), FALSE); + gtk_window_set_title(GTK_WINDOW(win), "BASS custom looping example (left-click to set loop start, right-click to set end)"); + g_signal_connect(win, "destroy", GTK_SIGNAL_FUNC(WindowDestroy), NULL); + + GtkWidget *ebox = gtk_event_box_new(); + gtk_container_add(GTK_CONTAINER(win), ebox); + g_signal_connect(ebox, "button-release-event", GTK_SIGNAL_FUNC(WindowButtonRelease), NULL); + + waveda = gtk_drawing_area_new(); + gtk_widget_set_size_request(waveda, WIDTH, HEIGHT); + gtk_container_add(GTK_CONTAINER(ebox), waveda); + g_signal_connect(waveda, "expose-event", GTK_SIGNAL_FUNC(AreaExpose), NULL); + + // setup update timer (10hz) + g_timeout_add(100, TimerProc, NULL); + + gtk_widget_show_all(win); + gtk_main(); + + killscan = TRUE; + g_thread_join(scanthread); // wait for the scan thread + + g_object_unref(wavepb); + + BASS_Free(); + return 0; +} diff --git a/bass-sys/linux/bass24/custloop/makefile b/bass-sys/linux/bass24/custloop/makefile new file mode 100644 index 0000000..afbd218 --- /dev/null +++ b/bass-sys/linux/bass24/custloop/makefile @@ -0,0 +1,9 @@ +TARGET = custloop +PACKAGES = gtk+-2.0 gthread-2.0 + +include ../makefile.in + +all: $(TARGET) + +clean: + $(RM) $(TARGET) diff --git a/bass-sys/bass24/c/devlist/devlist.c b/bass-sys/linux/bass24/devlist/devlist.c similarity index 100% rename from bass-sys/bass24/c/devlist/devlist.c rename to bass-sys/linux/bass24/devlist/devlist.c diff --git a/bass-sys/linux/bass24/devlist/makefile b/bass-sys/linux/bass24/devlist/makefile new file mode 100644 index 0000000..a2a5cb7 --- /dev/null +++ b/bass-sys/linux/bass24/devlist/makefile @@ -0,0 +1,8 @@ +TARGET = devlist + +include ../makefile.in + +all: $(TARGET) + +clean: + $(RM) $(TARGET) diff --git a/bass-sys/linux/bass24/dsptest/dsptest.c b/bass-sys/linux/bass24/dsptest/dsptest.c new file mode 100644 index 0000000..7c006e0 --- /dev/null +++ b/bass-sys/linux/bass24/dsptest/dsptest.c @@ -0,0 +1,250 @@ +/* + BASS simple DSP test + Copyright (c) 2000-2017 Un4seen Developments Ltd. +*/ + +#include +#include +#include +#include +#include +#include "bass.h" + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +// path to glade file +#ifndef GLADE_PATH +#define GLADE_PATH "" +#endif + +GladeXML *glade; +GtkWidget *win = 0; +GtkWidget *filesel; + +DWORD chan; // the channel... HMUSIC or HSTREAM + +// display error messages +void Error(const char *es) +{ + GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(win), GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s\n(error code: %d)", es, BASS_ErrorGetCode()); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); +} + +// "rotate" +HDSP rotdsp = 0; // DSP handle +float rotpos; // cur.pos +void CALLBACK Rotate(HDSP handle, DWORD channel, void *buffer, DWORD length, void *user) +{ + float *d = (float*)buffer; + DWORD a; + + for (a = 0; a < length / 4; a += 2) { + d[a] *= fabs(sin(rotpos)); + d[a + 1] *= fabs(cos(rotpos)); + rotpos += 0.00003; + } + rotpos = fmod(rotpos, 2 * M_PI); +} + +// "echo" +HDSP echdsp = 0; // DSP handle +#define ECHBUFLEN 1200 // buffer length +float echbuf[ECHBUFLEN][2]; // buffer +int echpos; // cur.pos +void CALLBACK Echo(HDSP handle, DWORD channel, void *buffer, DWORD length, void *user) +{ + float *d = (float*)buffer; + DWORD a; + + for (a = 0; a < length / 4; a += 2) { + float l = d[a] + (echbuf[echpos][1] / 2); + float r = d[a + 1] + (echbuf[echpos][0] / 2); +#if 1 // 0=echo, 1=basic "bathroom" reverb + echbuf[echpos][0] = d[a] = l; + echbuf[echpos][1] = d[a + 1] = r; +#else + echbuf[echpos][0] = d[a]; + echbuf[echpos][1] = d[a + 1]; + d[a] = l; + d[a + 1] = r; +#endif + echpos++; + if (echpos == ECHBUFLEN) echpos = 0; + } +} + +// "flanger" +HDSP fladsp = 0; // DSP handle +#define FLABUFLEN 350 // buffer length +float flabuf[FLABUFLEN][2]; // buffer +int flapos; // cur.pos +float flas, flasinc; // sweep pos/increment +void CALLBACK Flange(HDSP handle, DWORD channel, void *buffer, DWORD length, void *user) +{ + float *d = (float*)buffer; + DWORD a; + + for (a = 0; a < length / 4; a += 2) { + int p1 = (flapos + (int)flas) % FLABUFLEN; + int p2 = (p1 + 1) % FLABUFLEN; + float f = flas - (int)flas; + float s; + + s = (d[a] + ((flabuf[p1][0] * (1 - f)) + (flabuf[p2][0] * f))) * 0.7; + flabuf[flapos][0] = d[a]; + d[a] = s; + + s = (d[a + 1] + ((flabuf[p1][1] * (1 - f)) + (flabuf[p2][1] * f))) * 0.7; + flabuf[flapos][1] = d[a + 1]; + d[a + 1] = s; + + flapos++; + if (flapos == FLABUFLEN) flapos = 0; + flas += flasinc; + if (flas<0 || flas>FLABUFLEN - 1) { + flasinc = -flasinc; + flas += flasinc; + } + } +} + +#define GetWidget(id) glade_xml_get_widget(glade,id) + +void WindowDestroy(GtkObject *obj, gpointer data) +{ + gtk_main_quit(); +} + +void RotateToggled(GtkToggleButton *obj, gpointer data) +{ // toggle "rotate" + if (obj->active) { + rotpos = M_PI / 4; + rotdsp = BASS_ChannelSetDSP(chan, &Rotate, 0, 2); + } else + BASS_ChannelRemoveDSP(chan, rotdsp); +} + +void EchoToggled(GtkToggleButton *obj, gpointer data) +{ // toggle "echo" + if (obj->active) { + memset(echbuf, 0, sizeof(echbuf)); + echpos = 0; + echdsp = BASS_ChannelSetDSP(chan, &Echo, 0, 1); + } else + BASS_ChannelRemoveDSP(chan, echdsp); +} + +void FlangerToggled(GtkToggleButton *obj, gpointer data) +{ // toggle "flanger" + if (obj->active) { + memset(flabuf, 0, sizeof(flabuf)); + flapos = 0; + flas = FLABUFLEN / 2; + flasinc = 0.002f; + fladsp = BASS_ChannelSetDSP(chan, &Flange, 0, 0); + } else + BASS_ChannelRemoveDSP(chan, fladsp); +} + +gboolean FileExtensionFilter(const GtkFileFilterInfo *info, gpointer data) +{ + return !regexec((regex_t*)data, info->filename, 0, NULL, 0); +} + +void OpenClicked(GtkButton *obj, gpointer data) +{ + int resp = gtk_dialog_run(GTK_DIALOG(filesel)); + gtk_widget_hide(filesel); + if (resp == GTK_RESPONSE_ACCEPT) { + char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filesel)); + // free both MOD and stream, it must be one of them! :) + BASS_MusicFree(chan); + BASS_StreamFree(chan); + if (!(chan = BASS_StreamCreateFile(FALSE, file, 0, 0, BASS_SAMPLE_LOOP | BASS_SAMPLE_FLOAT)) + && !(chan = BASS_MusicLoad(FALSE, file, 0, 0, BASS_MUSIC_RAMPS | BASS_SAMPLE_LOOP | BASS_SAMPLE_FLOAT, 1))) { + // whatever it is, it ain't playable + gtk_button_set_label(obj, "click here to open a file..."); + Error("Can't play the file"); + } else { + BASS_CHANNELINFO info; + BASS_ChannelGetInfo(chan, &info); + if (info.chans != 2) { // the DSP expects stereo + gtk_button_set_label(obj, "click here to open a file..."); + BASS_MusicFree(chan); + BASS_StreamFree(chan); + Error("only stereo sources are supported"); + } else { + gtk_button_set_label(obj, file); + // setup DSPs on new channel and play it + RotateToggled(GTK_TOGGLE_BUTTON(GetWidget("rotate")), 0); + EchoToggled(GTK_TOGGLE_BUTTON(GetWidget("echo")), 0); + FlangerToggled(GTK_TOGGLE_BUTTON(GetWidget("flanger")), 0); + BASS_ChannelPlay(chan, FALSE); + } + } + g_free(file); + } +} + +int main(int argc, char* argv[]) +{ + regex_t fregex; + + gtk_init(&argc, &argv); + + // check the correct BASS was loaded + if (HIWORD(BASS_GetVersion()) != BASSVERSION) { + Error("An incorrect version of BASS was loaded"); + return 0; + } + + // check for floating-point capability + if (!BASS_GetConfig(BASS_CONFIG_FLOAT)) { + Error("This example requires floating-point support"); + return 0; + } + + // enable floating-point DSP (not really necessary as the channels will be floating-point anyway) + BASS_SetConfig(BASS_CONFIG_FLOATDSP, TRUE); + + // initialize default device + if (!BASS_Init(-1, 44100, 0, NULL, NULL)) { + Error("Can't initialize device"); + return 0; + } + + // initialize GUI + glade = glade_xml_new(GLADE_PATH"dsptest.glade", NULL, NULL); + if (!glade) return 0; + win = GetWidget("window1"); + if (!win) return 0; + glade_xml_signal_autoconnect(glade); + + { // initialize file selector + GtkFileFilter *filter; + filesel = gtk_file_chooser_dialog_new("Open File", GTK_WINDOW(win), GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "Playable files"); + regcomp(&fregex, "\\.(mo3|xm|mod|s3m|it|umx|mp[1-3]|ogg|wav|aif)$", REG_ICASE | REG_NOSUB | REG_EXTENDED); + gtk_file_filter_add_custom(filter, GTK_FILE_FILTER_FILENAME, FileExtensionFilter, &fregex, NULL); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "All files"); + gtk_file_filter_add_pattern(filter, "*"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + } + + gtk_main(); + + gtk_widget_destroy(filesel); + regfree(&fregex); + + BASS_Free(); + + return 0; +} diff --git a/bass-sys/linux/bass24/dsptest/dsptest.glade b/bass-sys/linux/bass24/dsptest/dsptest.glade new file mode 100644 index 0000000..5df81b1 --- /dev/null +++ b/bass-sys/linux/bass24/dsptest/dsptest.glade @@ -0,0 +1,82 @@ + + + + + 400 + True + 5 + BASS simple DSP test + False + GTK_WIN_POS_CENTER + + + + True + 10 + + + True + True + True + click here to open a file... + 0 + + + + False + + + + + True + + + True + True + rotate + 0 + True + + + + False + + + + + True + True + echo + 0 + True + + + + False + 1 + + + + + True + True + flanger + 0 + True + + + + False + 2 + + + + + False + 1 + + + + + + diff --git a/bass-sys/linux/bass24/dsptest/makefile b/bass-sys/linux/bass24/dsptest/makefile new file mode 100644 index 0000000..6a27a69 --- /dev/null +++ b/bass-sys/linux/bass24/dsptest/makefile @@ -0,0 +1,9 @@ +TARGET = dsptest +PACKAGES = gtk+-2.0 libglade-2.0 + +include ../makefile.in + +all: $(TARGET) + +clean: + $(RM) $(TARGET) diff --git a/bass-sys/linux/bass24/fxtest/fxtest.c b/bass-sys/linux/bass24/fxtest/fxtest.c new file mode 100644 index 0000000..a1bbb68 --- /dev/null +++ b/bass-sys/linux/bass24/fxtest/fxtest.c @@ -0,0 +1,191 @@ +/* + BASS DX8 effects test + Copyright (c) 2001-2017 Un4seen Developments Ltd. +*/ + +#include +#include +#include +#include +#include +#include +#include "bass.h" + +// path to glade file +#ifndef GLADE_PATH +#define GLADE_PATH "" +#endif + +GladeXML *glade; +GtkWidget *win = 0; +GtkWidget *filesel; + +DWORD floatable = BASS_SAMPLE_FLOAT; // floating-point channel support? + +DWORD chan; // channel handle +DWORD fxchan = 0; // output stream handle +HFX fx[4]; // 3 eq bands + reverb + +// display error messages +void Error(const char *es) +{ + GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(win), GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s\n(error code: %d)", es, BASS_ErrorGetCode()); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); +} + +#define GetWidget(id) glade_xml_get_widget(glade,id) + +void WindowDestroy(GtkObject *obj, gpointer data) +{ + gtk_main_quit(); +} + +void UpdateFX(const char *id) +{ + GtkRange *obj = GTK_RANGE(GetWidget(id)); + double v = gtk_range_get_value(obj); + int b = atoi(id + 2) - 1; + if (b < 3) { + BASS_DX8_PARAMEQ p; + BASS_FXGetParameters(fx[b], &p); + p.fGain = v; + BASS_FXSetParameters(fx[b], &p); + } else { + BASS_DX8_REVERB p; + BASS_FXGetParameters(fx[3], &p); + p.fReverbMix = (v ? log(v / 20.0) * 20 : -96); + BASS_FXSetParameters(fx[3], &p); + } +} + +void SetupFX() +{ + // setup the effects + BASS_DX8_PARAMEQ p; + DWORD ch = fxchan ? fxchan : chan; // set on output stream if enabled, else file stream + fx[0] = BASS_ChannelSetFX(ch, BASS_FX_DX8_PARAMEQ, 0); + fx[1] = BASS_ChannelSetFX(ch, BASS_FX_DX8_PARAMEQ, 0); + fx[2] = BASS_ChannelSetFX(ch, BASS_FX_DX8_PARAMEQ, 0); + fx[3] = BASS_ChannelSetFX(ch, BASS_FX_DX8_REVERB, 0); + p.fGain = 0; + p.fBandwidth = 18; + p.fCenter = 125; + BASS_FXSetParameters(fx[0], &p); + p.fCenter = 1000; + BASS_FXSetParameters(fx[1], &p); + p.fCenter = 8000; + BASS_FXSetParameters(fx[2], &p); + UpdateFX("fx1"); + UpdateFX("fx2"); + UpdateFX("fx3"); + UpdateFX("fx4"); +} + +gboolean FileExtensionFilter(const GtkFileFilterInfo *info, gpointer data) +{ + return !regexec((regex_t*)data, info->filename, 0, NULL, 0); +} + +void OpenClicked(GtkButton *obj, gpointer data) +{ + int resp = gtk_dialog_run(GTK_DIALOG(filesel)); + gtk_widget_hide(filesel); + if (resp == GTK_RESPONSE_ACCEPT) { + char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filesel)); + // free both MOD and stream, it must be one of them! :) + BASS_MusicFree(chan); + BASS_StreamFree(chan); + if (!(chan = BASS_StreamCreateFile(FALSE, file, 0, 0, BASS_SAMPLE_LOOP | floatable)) + && !(chan = BASS_MusicLoad(FALSE, file, 0, 0, BASS_MUSIC_RAMPS | BASS_SAMPLE_LOOP | floatable, 1))) { + // whatever it is, it ain't playable + gtk_button_set_label(obj, "click here to open a file..."); + Error("Can't play the file"); + } else { + gtk_button_set_label(obj, file); + if (!fxchan) SetupFX(); // set effects on file if not using output stream + BASS_ChannelPlay(chan, FALSE); + } + g_free(file); + } +} + +gboolean FXChange(GtkRange *range, GtkScrollType scroll, gdouble value, gpointer data) +{ + UpdateFX(gtk_widget_get_name(GTK_WIDGET(range))); + return FALSE; +} + +void OutputToggled(GtkToggleButton *obj, gpointer data) +{ + // remove current effects + DWORD ch = fxchan ? fxchan : chan; + BASS_ChannelRemoveFX(ch, fx[0]); + BASS_ChannelRemoveFX(ch, fx[1]); + BASS_ChannelRemoveFX(ch, fx[2]); + BASS_ChannelRemoveFX(ch, fx[3]); + if (obj->active) + fxchan = BASS_StreamCreate(0, 0, 0, STREAMPROC_DEVICE, 0); // get device output stream + else + fxchan = 0; // stop using device output stream + SetupFX(); +} + +int main(int argc, char* argv[]) +{ + regex_t fregex; + + gtk_init(&argc, &argv); + + // check the correct BASS was loaded + if (HIWORD(BASS_GetVersion()) != BASSVERSION) { + Error("An incorrect version of BASS was loaded"); + return 0; + } + + // check for floating-point capability + if (!BASS_GetConfig(BASS_CONFIG_FLOAT)) { + // no floating-point channel support + floatable = 0; + // enable floating-point (8.24 fixed-point in this case) DSP instead + BASS_SetConfig(BASS_CONFIG_FLOATDSP, TRUE); + } + + // initialize default device + if (!BASS_Init(-1, 44100, 0, NULL, NULL)) { + Error("Can't initialize device"); + return 0; + } + + // initialize GUI + glade = glade_xml_new(GLADE_PATH"fxtest.glade", NULL, NULL); + if (!glade) return 0; + win = GetWidget("window1"); + if (!win) return 0; + glade_xml_signal_autoconnect(glade); + + { // initialize file selector + GtkFileFilter *filter; + filesel = gtk_file_chooser_dialog_new("Open File", GTK_WINDOW(win), GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "Playable files"); + regcomp(&fregex, "\\.(mo3|xm|mod|s3m|it|umx|mp[1-3]|ogg|wav|aif)$", REG_ICASE | REG_NOSUB | REG_EXTENDED); + gtk_file_filter_add_custom(filter, GTK_FILE_FILTER_FILENAME, FileExtensionFilter, &fregex, NULL); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "All files"); + gtk_file_filter_add_pattern(filter, "*"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + } + + gtk_main(); + + gtk_widget_destroy(filesel); + regfree(&fregex); + + BASS_Free(); + + return 0; +} diff --git a/bass-sys/linux/bass24/fxtest/fxtest.glade b/bass-sys/linux/bass24/fxtest/fxtest.glade new file mode 100644 index 0000000..6b76234 --- /dev/null +++ b/bass-sys/linux/bass24/fxtest/fxtest.glade @@ -0,0 +1,194 @@ + + + + + + 400 + True + 5 + BASS "DX8" effects test + False + center + + + + True + vertical + 10 + + + click here to open a file... + True + True + True + + + + False + 0 + + + + + True + + + True + vertical + + + 100 + True + True + vertical + 0 -10 10 1 10 0 + True + False + 0 + False + + + + 0 + + + + + True + 125 hz + + + 1 + + + + + 0 + + + + + True + vertical + + + 100 + True + True + vertical + 0 -10 10 1 10 0 + True + False + 0 + False + + + + 0 + + + + + True + 1 khz + + + 1 + + + + + 1 + + + + + True + vertical + + + 100 + True + True + vertical + 0 -10 10 1 10 0 + True + False + False + + + + 0 + + + + + True + 8 khz + + + 1 + + + + + 2 + + + + + True + vertical + + + 100 + True + True + vertical + 0 0 20 1 10 0 + True + False + False + + + + 0 + + + + + True + reverb + + + 1 + + + + + 3 + + + + + False + 1 + + + + + Apply effects to final output instead of file + True + True + False + True + + + + 2 + + + + + + diff --git a/bass-sys/linux/bass24/fxtest/makefile b/bass-sys/linux/bass24/fxtest/makefile new file mode 100644 index 0000000..e0459a6 --- /dev/null +++ b/bass-sys/linux/bass24/fxtest/makefile @@ -0,0 +1,9 @@ +TARGET = fxtest +PACKAGES = gtk+-2.0 libglade-2.0 + +include ../makefile.in + +all: $(TARGET) + +clean: + $(RM) $(TARGET) diff --git a/bass-sys/linux/bass24/libbass.so b/bass-sys/linux/bass24/libbass.so new file mode 100644 index 0000000000000000000000000000000000000000..bf516e98152f731ca572923f9dabf3ada94a0620 GIT binary patch literal 235348 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 z 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 +#include +#include +#include +#include "bass.h" + +#define SPECWIDTH 368 // display width (should be multiple of 4) +#define SPECHEIGHT 127 // height (changing requires palette adjustments too) + +#pragma pack(1) +typedef struct { + BYTE rgbRed, rgbGreen, rgbBlue; +} RGB; +#pragma pack() + +GtkWidget *win = 0; + +HRECORD chan; + +GtkWidget *speci, *textarea; +GdkPixbuf *specpb; +RGB palette[256]; + +int specmode = 0, specpos = 0; // spectrum mode (and marker pos for 2nd mode) + +// display error messages +void Error(const char *es) +{ + GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(win), GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s\n(error code: %d)", es, BASS_ErrorGetCode()); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); +} + +void WindowDestroy(GtkObject *obj, gpointer data) +{ + gtk_main_quit(); +} + +void WindowButtonRelease(GtkWidget *obj, GdkEventButton *event, gpointer data) +{ + if (event->type == GDK_BUTTON_RELEASE) { + RGB *specbuf = (RGB*)gdk_pixbuf_get_pixels(specpb); + specmode = (specmode + 1) % 4; // next spectrum mode + memset(specbuf, 0, SPECWIDTH * SPECHEIGHT * sizeof(*specbuf)); // clear display + } +} + +gboolean FileExtensionFilter(const GtkFileFilterInfo *info, gpointer data) +{ + return !regexec((regex_t*)data, info->filename, 0, NULL, 0); +} + +// update the spectrum display - the interesting bit :) +gboolean UpdateSpectrum(gpointer data) +{ + static DWORD quietcount = 0; + int x, y, y1; + RGB *specbuf = (RGB*)gdk_pixbuf_get_pixels(specpb); + + if (specmode == 3) { // waveform + int c; + float *buf; + BASS_CHANNELINFO ci; + memset(specbuf, 0, SPECWIDTH * SPECHEIGHT * sizeof(*specbuf)); + BASS_ChannelGetInfo(chan, &ci); // get number of channels + buf = alloca(ci.chans * SPECWIDTH * sizeof(float)); // allocate buffer for data + BASS_ChannelGetData(chan, buf, (ci.chans * SPECWIDTH * sizeof(float)) | BASS_DATA_FLOAT); // get the sample data (floating-point to avoid 8 & 16 bit processing) + for (c = 0; c < ci.chans; c++) { + for (x = 0; x < SPECWIDTH; x++) { + int v = (1 - buf[x * ci.chans + c]) * SPECHEIGHT / 2; // invert and scale to fit display + if (v < 0) v = 0; + else if (v >= SPECHEIGHT) v = SPECHEIGHT - 1; + if (!x) y = v; + do { // draw line from previous sample... + if (y < v) y++; + else if (y > v) y--; + specbuf[y * SPECWIDTH + x] = palette[c & 1 ? 127 : 1]; // left=green, right=red (could add more colours to palette for more chans) + } while (y != v); + } + } + } else { + float fft[1024]; + BASS_ChannelGetData(chan, fft, BASS_DATA_FFT2048); // get the FFT data + + if (!specmode) { // "normal" FFT + memset(specbuf, 0, SPECWIDTH * SPECHEIGHT * sizeof(*specbuf)); + for (x = 0; x < SPECWIDTH / 2; x++) { +#if 1 + y = sqrt(fft[x + 1]) * 3 * SPECHEIGHT - 4; // scale it (sqrt to make low values more visible) +#else + y = fft[x + 1] * 10 * SPECHEIGHT; // scale it (linearly) +#endif + if (y > SPECHEIGHT) y = SPECHEIGHT; // cap it + if (x && (y1 = (y + y1) / 2)) // interpolate from previous to make the display smoother + while (--y1 >= 0) specbuf[(SPECHEIGHT - 1 - y1) * SPECWIDTH + x * 2 - 1] = palette[y1 + 1]; + y1 = y; + while (--y >= 0) specbuf[(SPECHEIGHT - 1 - y) * SPECWIDTH + x * 2] = palette[y + 1]; // draw level + } + } else if (specmode == 1) { // logarithmic, acumulate & average bins + int b0 = 0; + memset(specbuf, 0, SPECWIDTH * SPECHEIGHT * sizeof(*specbuf)); +#define BANDS 28 + for (x = 0; x < BANDS; x++) { + float peak = 0; + int b1 = pow(2, x * 10.0 / (BANDS - 1)); + if (b1 > 1023) b1 = 1023; + if (b1 <= b0) b1 = b0 + 1; // make sure it uses at least 1 FFT bin + for (; b0 < b1; b0++) + if (peak < fft[1 + b0]) peak = fft[1 + b0]; + y = sqrt(peak) * 3 * SPECHEIGHT - 4; // scale it (sqrt to make low values more visible) + if (y > SPECHEIGHT) y = SPECHEIGHT; // cap it + while (--y >= 0) + for (y1 = 0; y1 < SPECWIDTH / BANDS - 2; y1++) + specbuf[(SPECHEIGHT - 1 - y) * SPECWIDTH + x * (SPECWIDTH / BANDS) + y1] = palette[y + 1]; // draw bar + } + } else { // "3D" + for (x = 0; x < SPECHEIGHT; x++) { + y = sqrt(fft[x + 1]) * 3 * 127; // scale it (sqrt to make low values more visible) + if (y > 127) y = 127; // cap it + specbuf[(SPECHEIGHT - 1 - x) * SPECWIDTH + specpos] = palette[128 + y]; // plot it + } + // move marker onto next position + specpos = (specpos + 1) % SPECWIDTH; + for (x = 0; x < SPECHEIGHT; x++) specbuf[x * SPECWIDTH + specpos] = palette[255]; + } + } + + if (LOWORD(BASS_ChannelGetLevel(chan)) < 500) { // check if it's quiet + quietcount++; + if (quietcount > 40) // it's been quiet for over a second + gtk_label_set(GTK_LABEL(textarea), quietcount & 16 ? "make some noise!" : ""); + } else { // not quiet + quietcount = 0; + gtk_label_set(GTK_LABEL(textarea), "click to toggle mode"); + } + + gtk_image_set_from_pixbuf(GTK_IMAGE(speci), specpb); // update the display + + return TRUE; +} + +// Recording callback - not doing anything with the data +BOOL CALLBACK DuffRecording(HRECORD handle, const void *buffer, DWORD length, void *user) +{ + return TRUE; // continue recording +} + +int main(int argc, char* argv[]) +{ + gtk_init(&argc, &argv); + + // check the correct BASS was loaded + if (HIWORD(BASS_GetVersion()) != BASSVERSION) { + Error("An incorrect version of BASS was loaded"); + return 0; + } + + // initialize BASS recording (default device) + if (!BASS_RecordInit(-1)) { + Error("Can't initialize device"); + return -1; + } + // start recording (44100hz mono 16-bit) + if (!(chan = BASS_RecordStart(44100, 1, 0, &DuffRecording, 0))) { + Error("Can't start recording"); + return -1; + } + + // create the window + win = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_position(GTK_WINDOW(win), GTK_WIN_POS_CENTER); + gtk_window_set_resizable(GTK_WINDOW(win), FALSE); + gtk_window_set_title(GTK_WINDOW(win), "BASS \"live\" spectrum"); + g_signal_connect(GTK_WINDOW(win), "destroy", GTK_SIGNAL_FUNC(WindowDestroy), NULL); + + GtkWidget *ebox = gtk_event_box_new(); + gtk_container_add(GTK_CONTAINER(win), ebox); + g_signal_connect(ebox, "button-release-event", GTK_SIGNAL_FUNC(WindowButtonRelease), NULL); + + GtkWidget *box = gtk_vbox_new(FALSE, 2); + gtk_container_add(GTK_CONTAINER(ebox), box); + + // create the bitmap + specpb = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, SPECWIDTH, SPECHEIGHT); + speci = gtk_image_new_from_pixbuf(specpb); + gtk_container_add(GTK_CONTAINER(box), speci); + + textarea = gtk_label_new("click to toggle mode"); + gtk_container_add(GTK_CONTAINER(box), textarea); + + { // setup palette + RGB *pal = palette; + int a; + memset(palette, 0, sizeof(palette)); + for (a = 1; a < 128; a++) { + pal[a].rgbGreen = 256 - 2 * a; + pal[a].rgbRed = 2 * a; + } + for (a = 0; a < 32; a++) { + pal[128 + a].rgbBlue = 8 * a; + pal[128 + 32 + a].rgbBlue = 255; + pal[128 + 32 + a].rgbRed = 8 * a; + pal[128 + 64 + a].rgbRed = 255; + pal[128 + 64 + a].rgbBlue = 8 * (31 - a); + pal[128 + 64 + a].rgbGreen = 8 * a; + pal[128 + 96 + a].rgbRed = 255; + pal[128 + 96 + a].rgbGreen = 255; + pal[128 + 96 + a].rgbBlue = 8 * a; + } + } + + // setup update timer (40hz) + g_timeout_add(25, UpdateSpectrum, NULL); + + gtk_widget_show_all(win); + gtk_main(); + + g_object_unref(specpb); + + BASS_RecordFree(); + + return 0; +} diff --git a/bass-sys/linux/bass24/livespec/makefile b/bass-sys/linux/bass24/livespec/makefile new file mode 100644 index 0000000..e599ed4 --- /dev/null +++ b/bass-sys/linux/bass24/livespec/makefile @@ -0,0 +1,9 @@ +TARGET = livespec +PACKAGES = gtk+-2.0 + +include ../makefile.in + +all: $(TARGET) + +clean: + $(RM) $(TARGET) diff --git a/bass-sys/linux/bass24/makefile b/bass-sys/linux/bass24/makefile new file mode 100644 index 0000000..2d569ec --- /dev/null +++ b/bass-sys/linux/bass24/makefile @@ -0,0 +1,11 @@ +EXAMPLES = 3dtest basstest contest custloop devlist dsptest fxtest livespec modtest multi netradio plugins rectest speakers spectrum synth writewav + +.PHONY: all clean $(EXAMPLES) + +all: $(EXAMPLES) + +clean: + @$(foreach x,$(EXAMPLES),$(MAKE) -C $(x) clean;) + +$(EXAMPLES): + $(MAKE) -C $@ diff --git a/bass-sys/linux/bass24/makefile.in b/bass-sys/linux/bass24/makefile.in new file mode 100644 index 0000000..440fe5d --- /dev/null +++ b/bass-sys/linux/bass24/makefile.in @@ -0,0 +1,12 @@ +FLAGS = -Os -I.. -L.. -L../x64 -lbass -lm -Wl,--no-warn-search-mismatch,-rpath,'$$ORIGIN/..:$$ORIGIN/../x64' +FLAGS += $(foreach pkg,$(PACKAGES),`pkg-config $(pkg) --cflags --libs`) +ifneq (,$(findstring libglade,$(PACKAGES))) +FLAGS += -export-dynamic +# path to glade file +FLAGS += -D'GLADE_PATH="$(shell pwd)/"' +endif + +.PHONY: all clean + +%: %.c + $(CC) $*.c $(FLAGS) -o $@ diff --git a/bass-sys/linux/bass24/modtest/makefile b/bass-sys/linux/bass24/modtest/makefile new file mode 100644 index 0000000..450b9c7 --- /dev/null +++ b/bass-sys/linux/bass24/modtest/makefile @@ -0,0 +1,9 @@ +TARGET = modtest +PACKAGES = gtk+-2.0 libglade-2.0 + +include ../makefile.in + +all: $(TARGET) + +clean: + $(RM) $(TARGET) diff --git a/bass-sys/linux/bass24/modtest/modtest.c b/bass-sys/linux/bass24/modtest/modtest.c new file mode 100644 index 0000000..99c8f18 --- /dev/null +++ b/bass-sys/linux/bass24/modtest/modtest.c @@ -0,0 +1,208 @@ +/* + BASS MOD music test + Copyright (c) 1999-2014 Un4seen Developments Ltd. +*/ + +#include +#include +#include +#include +#include "bass.h" + +// path to glade file +#ifndef GLADE_PATH +#define GLADE_PATH "" +#endif + +GladeXML *glade; +GtkWidget *win = 0; +GtkWidget *filesel; + +DWORD music; // the HMUSIC channel + +// display error messages +void Error(const char *es) +{ + GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(win), GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s\n(error code: %d)", es, BASS_ErrorGetCode()); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); +} + +#define GetWidget(id) glade_xml_get_widget(glade,id) + +void WindowDestroy(GtkObject *obj, gpointer data) +{ + gtk_main_quit(); +} + +gboolean FileExtensionFilter(const GtkFileFilterInfo *info, gpointer data) +{ + return !regexec((regex_t*)data, info->filename, 0, NULL, 0); +} + +DWORD GetFlags() +{ + DWORD flags = BASS_MUSIC_POSRESET; // stop notes when seeking + switch (gtk_combo_box_get_active(GTK_COMBO_BOX(GetWidget("interpolation")))) { + case 0: + flags |= BASS_MUSIC_NONINTER; // no interpolation + break; + case 2: + flags |= BASS_MUSIC_SINCINTER; // sinc interpolation + break; + } + switch (gtk_combo_box_get_active(GTK_COMBO_BOX(GetWidget("ramping")))) { + case 1: + flags |= BASS_MUSIC_RAMP; // ramping + break; + case 2: + flags |= BASS_MUSIC_RAMPS; // "sensitive" ramping + break; + } + switch (gtk_combo_box_get_active(GTK_COMBO_BOX(GetWidget("surround")))) { + case 1: + flags |= BASS_MUSIC_SURROUND; // surround + break; + case 2: + flags |= BASS_MUSIC_SURROUND2; // "mode2" + break; + } + return flags; +} + +void OpenClicked(GtkButton *obj, gpointer data) +{ + int resp = gtk_dialog_run(GTK_DIALOG(filesel)); + gtk_widget_hide(filesel); + if (resp == GTK_RESPONSE_ACCEPT) { + char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filesel)); + BASS_MusicFree(music); // free the current music + music = BASS_MusicLoad(FALSE, file, 0, 0, GetFlags(), 1); // load the new music + if (music) { // success + DWORD length = BASS_ChannelGetLength(music, BASS_POS_MUSIC_ORDER); // get the order length + gtk_button_set_label(obj, file); + { + char text[100], *ctype = ""; + BASS_CHANNELINFO info; + int channels = 0; + while (BASS_ChannelGetAttributeEx(music, BASS_ATTRIB_MUSIC_VOL_CHAN + channels, 0, 0)) channels++; // count channels + BASS_ChannelGetInfo(music, &info); + switch (info.ctype & ~BASS_CTYPE_MUSIC_MO3) { + case BASS_CTYPE_MUSIC_MOD: + ctype = "MOD"; + break; + case BASS_CTYPE_MUSIC_MTM: + ctype = "MTM"; + break; + case BASS_CTYPE_MUSIC_S3M: + ctype = "S3M"; + break; + case BASS_CTYPE_MUSIC_XM: + ctype = "XM"; + break; + case BASS_CTYPE_MUSIC_IT: + ctype = "IT"; + break; + } + snprintf(text, sizeof(text), "name: %s, format: %dch %s%s", BASS_ChannelGetTags(music, BASS_TAG_MUSIC_NAME), channels, ctype, info.ctype & BASS_CTYPE_MUSIC_MO3 ? " (MO3)" : ""); + gtk_label_set_text(GTK_LABEL(GetWidget("info")), text); + } + gtk_range_set_range(GTK_RANGE(GetWidget("position")), 0, length - 1); // update scroller range + BASS_ChannelPlay(music, FALSE); // start it + } else { // failed + gtk_button_set_label(obj, "click here to open a file..."); + gtk_label_set_text(GTK_LABEL(GetWidget("info")), ""); + gtk_label_set_text(GTK_LABEL(GetWidget("posdisplay")), ""); + Error("Can't play the file"); + } + g_free(file); + } +} + +void PlayClicked(GtkButton *obj, gpointer data) +{ + if (BASS_ChannelIsActive(music) == BASS_ACTIVE_PLAYING) + BASS_ChannelPause(music); + else + BASS_ChannelPlay(music, FALSE); +} + +gboolean PositionChange(GtkRange *range, GtkScrollType scroll, gdouble value, gpointer data) +{ + BASS_ChannelSetPosition(music, value, BASS_POS_MUSIC_ORDER); // set the position + return FALSE; +} + +void FlagChanged(GtkComboBox *obj, gpointer data) +{ + BASS_ChannelFlags(music, GetFlags(), -1); // update flags +} + +gboolean TimerProc(gpointer data) +{ + char text[16]; + QWORD pos = BASS_ChannelGetPosition(music, BASS_POS_MUSIC_ORDER); + if (pos != (QWORD)-1) { + gtk_range_set_value(GTK_RANGE(GetWidget("position")), LOWORD(pos)); + sprintf(text, "%03d.%03d", LOWORD(pos), HIWORD(pos)); + gtk_label_set_text(GTK_LABEL(GetWidget("posdisplay")), text); + } + return TRUE; +} + +int main(int argc, char* argv[]) +{ + regex_t fregex; + + gtk_init(&argc, &argv); + + // check the correct BASS was loaded + if (HIWORD(BASS_GetVersion()) != BASSVERSION) { + Error("An incorrect version of BASS was loaded"); + return 0; + } + + // initialize default output device + if (!BASS_Init(-1, 44100, 0, NULL, NULL)) { + Error("Can't initialize device"); + return 0; + } + + // initialize GUI + glade = glade_xml_new(GLADE_PATH"modtest.glade", NULL, NULL); + if (!glade) return 0; + win = GetWidget("window1"); + if (!win) return 0; + glade_xml_signal_autoconnect(glade); + + gtk_combo_box_set_active(GTK_COMBO_BOX(GetWidget("interpolation")), 1); + gtk_combo_box_set_active(GTK_COMBO_BOX(GetWidget("ramping")), 2); + gtk_combo_box_set_active(GTK_COMBO_BOX(GetWidget("surround")), 0); + + { // initialize file selector + GtkFileFilter *filter; + filesel = gtk_file_chooser_dialog_new("Open File", GTK_WINDOW(win), GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "mo3/it/xm/s3m/mtm/mod/umx"); + regcomp(&fregex, "\\.(mo3|it|xm|s3m|mtm|mod|umx)$", REG_ICASE | REG_NOSUB | REG_EXTENDED); + gtk_file_filter_add_custom(filter, GTK_FILE_FILTER_FILENAME, FileExtensionFilter, &fregex, NULL); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "All files"); + gtk_file_filter_add_pattern(filter, "*"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + } + + g_timeout_add(100, TimerProc, NULL); + + gtk_main(); + + gtk_widget_destroy(filesel); + regfree(&fregex); + + BASS_Free(); + + return 0; +} diff --git a/bass-sys/linux/bass24/modtest/modtest.glade b/bass-sys/linux/bass24/modtest/modtest.glade new file mode 100644 index 0000000..f087954 --- /dev/null +++ b/bass-sys/linux/bass24/modtest/modtest.glade @@ -0,0 +1,183 @@ + + + + + + 400 + True + 5 + BASS MOD music test + False + center + + + + True + vertical + 10 + + + click here to open a file... + True + True + True + + + + False + 0 + + + + + True + + + 1 + + + + + True + 100 + True + + + True + + + 0 + + + + + Play / Pause + True + True + True + + + + 1 + + + + + 2 + + + + + True + True + 0 0 0 1 10 0 + False + + + + 3 + + + + + True + 10 + True + + + True + vertical + + + True + Interpolation + + + 0 + + + + + True + off +linear +sinc + + + + 1 + + + + + 0 + + + + + True + vertical + + + True + Ramping + + + 0 + + + + + True + off +normal +sensitive + + + 1 + + + + + 1 + + + + + True + vertical + + + True + Surround + + + 0 + + + + + True + off +mode 1 +mode 2 + + + + 1 + + + + + 2 + + + + + 4 + + + + + + diff --git a/bass-sys/linux/bass24/mp3-free/libbass.so b/bass-sys/linux/bass24/mp3-free/libbass.so new file mode 100644 index 0000000000000000000000000000000000000000..1befde8646721f96cfdba5cde2eba4a61f542e96 GIT binary patch literal 214868 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 wHnS_JK@h?}!IR$sK++d_(rF*lGh?-ZgCzy?7m literal 0 HcmV?d00001 diff --git a/bass-sys/linux/bass24/multi/makefile b/bass-sys/linux/bass24/multi/makefile new file mode 100644 index 0000000..2ca73e7 --- /dev/null +++ b/bass-sys/linux/bass24/multi/makefile @@ -0,0 +1,9 @@ +TARGET = multi +PACKAGES = gtk+-2.0 libglade-2.0 + +include ../makefile.in + +all: $(TARGET) + +clean: + $(RM) $(TARGET) diff --git a/bass-sys/linux/bass24/multi/multi.c b/bass-sys/linux/bass24/multi/multi.c new file mode 100644 index 0000000..47d9a56 --- /dev/null +++ b/bass-sys/linux/bass24/multi/multi.c @@ -0,0 +1,255 @@ +/* + BASS multiple output example + Copyright (c) 2001-2008 Un4seen Developments Ltd. +*/ + +#include +#include +#include +#include +#include +#include +#include "bass.h" + +// path to glade file +#ifndef GLADE_PATH +#define GLADE_PATH "" +#endif + +GladeXML *glade; +GtkWidget *win = 0; +GtkWidget *filesel; + +DWORD outdev[2]; // output devices +DWORD latency[2]; // latencies +HSTREAM chan[2]; // the streams + +// display error messages +void Error(const char *es) +{ + GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(win), GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s\n(error code: %d)", es, BASS_ErrorGetCode()); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); +} + +#define GetWidget(id) glade_xml_get_widget(glade,id) + +void WindowDestroy(GtkObject *obj, gpointer data) +{ + gtk_main_quit(); +} + +gboolean FileExtensionFilter(const GtkFileFilterInfo *info, gpointer data) +{ + return !regexec((regex_t*)data, info->filename, 0, NULL, 0); +} + +void OpenClicked(GtkButton *obj, gpointer data) +{ + int resp = gtk_dialog_run(GTK_DIALOG(filesel)); + gtk_widget_hide(filesel); + if (resp == GTK_RESPONSE_ACCEPT) { + char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filesel)); + const gchar *objname = gtk_widget_get_name(GTK_WIDGET(obj)); + int devn = atoi(objname + 4) - 1; // get device number from button name ("openX") + BASS_StreamFree(chan[devn]); // free old stream before opening new + BASS_SetDevice(outdev[devn]); // set the device to create stream on + if (!(chan[devn] = BASS_StreamCreateFile(FALSE, file, 0, 0, BASS_SAMPLE_LOOP))) { + gtk_button_set_label(obj, "click here to open a file..."); + Error("Can't play the file"); + } else { + gtk_button_set_label(obj, file); + BASS_ChannelPlay(chan[devn], FALSE); + } + g_free(file); + } +} + +// Cloning DSP function +void CALLBACK CloneDSP(HDSP handle, DWORD channel, void *buffer, DWORD length, void *user) +{ + BASS_StreamPutData((uintptr_t)user, buffer, length); // user = clone +} + +void CloneClicked(GtkButton *obj, gpointer data) +{ + const gchar *objname = gtk_widget_get_name(GTK_WIDGET(obj)); + int devn = atoi(objname + 5) - 1; // get device number from button name ("cloneX") + BASS_CHANNELINFO i; + if (!BASS_ChannelGetInfo(chan[devn ^ 1], &i)) { + Error("Nothing to clone"); + } else { + BASS_StreamFree(chan[devn]); // free old stream + BASS_SetDevice(outdev[devn]); // set the device to create stream on + if (!(chan[devn] = BASS_StreamCreate(i.freq, i.chans, i.flags, STREAMPROC_PUSH, 0))) { // create a "push" stream + char oname[10]; + sprintf(oname, "open%d", devn + 1); + gtk_button_set_label(GTK_BUTTON(GetWidget(oname)), "click here to open a file..."); + Error("Can't create clone"); + } else { + BASS_ChannelLock(chan[devn ^ 1], TRUE); // lock source stream to synchonise buffer contents + BASS_ChannelSetDSP(chan[devn ^ 1], CloneDSP, (void*)(uintptr_t)chan[devn], 0); // set DSP to feed data to clone + { // copy buffered data to clone + DWORD d = BASS_ChannelSeconds2Bytes(chan[devn], latency[devn] / 1000.f); // playback delay + DWORD c = BASS_ChannelGetData(chan[devn ^ 1], 0, BASS_DATA_AVAILABLE); + BYTE *buf = (BYTE*)malloc(c); + c = BASS_ChannelGetData(chan[devn ^ 1], buf, c); + if (c > d) BASS_StreamPutData(chan[devn], buf + d, c - d); + free(buf); + } + BASS_ChannelLock(chan[devn ^ 1], FALSE); // unlock source stream + BASS_ChannelPlay(chan[devn], FALSE); // play clone + { + char oname[10]; + sprintf(oname, "open%d", devn + 1); + gtk_button_set_label(GTK_BUTTON(GetWidget(oname)), "clone"); + } + } + } +} + +void SwapClicked(GtkButton *obj, gpointer data) +{ + { // swap handles + HSTREAM temp = chan[0]; + chan[0] = chan[1]; + chan[1] = temp; + } + { // swap text + GtkButton *open1 = GTK_BUTTON(GetWidget("open1")), *open2 = GTK_BUTTON(GetWidget("open2")); + char *temp = strdup(gtk_button_get_label(open1)); + gtk_button_set_label(open1, gtk_button_get_label(open2)); + gtk_button_set_label(open2, temp); + free(temp); + } + // update the channel devices + BASS_ChannelSetDevice(chan[0], outdev[0]); + BASS_ChannelSetDevice(chan[1], outdev[1]); +} + +// Simple device selector dialog stuff begins here +void ListRowActivated(GtkTreeView *obj, GtkTreePath *path, GtkTreeViewColumn *column, gpointer data) +{ + int sel = 1 + *gtk_tree_path_get_indices(path); // get selection + gtk_dialog_response(GTK_DIALOG(GetWidget("dialog1")), sel); +} + +int SelectDevice(const char *title) +{ + int sel = 0; + GtkWidget *win = GetWidget("dialog1"); + gtk_window_set_title(GTK_WINDOW(win), title); + + GtkTreeView *list = GTK_TREE_VIEW(GetWidget("list")); + if (!gtk_tree_view_get_column(list, 0)) { // no column yet, so add one... + GtkTreeViewColumn *col = gtk_tree_view_column_new(); + gtk_tree_view_append_column(list, col); + GtkCellRenderer *renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(col, renderer, TRUE); + gtk_tree_view_column_add_attribute(col, renderer, "text", 0); + } + + GtkListStore *liststore = gtk_list_store_new(1, G_TYPE_STRING); + { + BASS_DEVICEINFO i; + int c; + for (c = 1; BASS_GetDeviceInfo(c, &i); c++) { // device 1 = 1st real device + if (i.flags & BASS_DEVICE_ENABLED) { // enabled, so add it... + GtkTreeIter it; + gtk_list_store_append(liststore, &it); + gtk_list_store_set(liststore, &it, 0, i.name, -1); + } + } + } + gtk_tree_view_set_model(list, GTK_TREE_MODEL(liststore)); + g_object_unref(liststore); + { // pre-select 1st entry + GtkTreeSelection *tsel = gtk_tree_view_get_selection(list); + GtkTreePath *tpath = gtk_tree_path_new_first(); + gtk_tree_selection_select_path(tsel, tpath); + gtk_tree_path_free(tpath); + } + + sel = gtk_dialog_run(GTK_DIALOG(win)); + gtk_widget_hide(win); + + return sel; +} +// Simple device selector dialog stuff ends here + +int main(int argc, char* argv[]) +{ + regex_t fregex; + + gtk_init(&argc, &argv); + + // check the correct BASS was loaded + if (HIWORD(BASS_GetVersion()) != BASSVERSION) { + Error("An incorrect version of BASS was loaded"); + return 0; + } + + // initialize GUI + glade = glade_xml_new(GLADE_PATH"multi.glade", NULL, NULL); + if (!glade) return 0; + win = GetWidget("window1"); + if (!win) return 0; + glade_xml_signal_autoconnect(glade); + + // Let the user choose the output devices + outdev[0] = SelectDevice("Select output device #1"); + outdev[1] = SelectDevice("Select output device #2"); + + { // setup output devices + BASS_INFO info; + if (!BASS_Init(outdev[0], 44100, 0, NULL, NULL)) { + Error("Can't initialize device 1"); + return 0; + } + BASS_GetInfo(&info); + latency[0] = info.latency; + if (!BASS_Init(outdev[1], 44100, 0, NULL, NULL)) { + Error("Can't initialize device 2"); + return 0; + } + BASS_GetInfo(&info); + latency[1] = info.latency; + } + { + BASS_DEVICEINFO i; + BASS_GetDeviceInfo(outdev[0], &i); + gtk_frame_set_label(GTK_FRAME(GetWidget("device1")), i.name); + BASS_GetDeviceInfo(outdev[1], &i); + gtk_frame_set_label(GTK_FRAME(GetWidget("device2")), i.name); + } + + { // initialize file selector + GtkFileFilter *filter; + filesel = gtk_file_chooser_dialog_new("Open File", GTK_WINDOW(win), GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "Playable files"); + regcomp(&fregex, "\\.(mo3|xm|mod|s3m|it|umx|mp[1-3]|ogg|wav|aif)$", REG_ICASE | REG_NOSUB | REG_EXTENDED); + gtk_file_filter_add_custom(filter, GTK_FILE_FILTER_FILENAME, FileExtensionFilter, &fregex, NULL); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "All files"); + gtk_file_filter_add_pattern(filter, "*"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + } + + gtk_widget_show(win); + gtk_main(); + + gtk_widget_destroy(filesel); + regfree(&fregex); + + // release both devices + BASS_SetDevice(outdev[0]); + BASS_Free(); + BASS_SetDevice(outdev[1]); + BASS_Free(); + + return 0; +} diff --git a/bass-sys/linux/bass24/multi/multi.glade b/bass-sys/linux/bass24/multi/multi.glade new file mode 100644 index 0000000..45cc71d --- /dev/null +++ b/bass-sys/linux/bass24/multi/multi.glade @@ -0,0 +1,203 @@ + + + + + 450 + 5 + BASS multiple output example + False + GTK_WIN_POS_CENTER + + + + True + 5 + + + True + 0 + GTK_SHADOW_OUT + + + True + 6 + 10 + 10 + 10 + + + True + 5 + + + True + True + True + click here to open a file... + 0 + + + + + + True + True + True + clone #2 + 0 + + + + False + 1 + + + + + + + + + True + True + + + label_item + + + + + False + + + + + True + + + + + + True + True + True + swap + 0 + + + + False + 10 + GTK_PACK_END + 1 + + + + + 1 + + + + + True + 0 + GTK_SHADOW_OUT + + + True + 6 + 10 + 10 + 10 + + + True + 5 + + + True + True + True + click here to open a file... + 0 + + + + + + True + True + True + clone #1 + 0 + + + + False + 1 + + + + + + + + + True + True + + + label_item + + + + + False + 2 + + + + + + + 300 + 5 + GTK_WIN_POS_CENTER_ON_PARENT + GDK_WINDOW_TYPE_HINT_DIALOG + False + + + True + 2 + + + True + True + False + True + + + + 1 + + + + + True + GTK_BUTTONBOX_END + + + + + + + + + False + GTK_PACK_END + + + + + + diff --git a/bass-sys/linux/bass24/netradio/makefile b/bass-sys/linux/bass24/netradio/makefile new file mode 100644 index 0000000..3380a85 --- /dev/null +++ b/bass-sys/linux/bass24/netradio/makefile @@ -0,0 +1,9 @@ +TARGET = netradio +PACKAGES = gtk+-2.0 libglade-2.0 gthread-2.0 + +include ../makefile.in + +all: $(TARGET) + +clean: + $(RM) $(TARGET) diff --git a/bass-sys/linux/bass24/netradio/netradio.c b/bass-sys/linux/bass24/netradio/netradio.c new file mode 100644 index 0000000..b670d52 --- /dev/null +++ b/bass-sys/linux/bass24/netradio/netradio.c @@ -0,0 +1,283 @@ +/* + BASS internet radio example + Copyright (c) 2002-2019 Un4seen Developments Ltd. +*/ + +#include +#include +#include +#include +#include +#include "bass.h" + +// HLS definitions (copied from BASSHLS.H) +#define BASS_SYNC_HLS_SEGMENT 0x10300 +#define BASS_TAG_HLS_EXTINF 0x14000 + +// path to glade file +#ifndef GLADE_PATH +#define GLADE_PATH "" +#endif + +GladeXML *glade; +GtkWidget *win = 0; +DWORD req = 0; // request number/counter +HSTREAM chan; +guint buftimer = 0; + +const char *urls[10] = { // preset stream URLs + "http://stream-dc1.radioparadise.com/rp_192m.ogg", "http://www.radioparadise.com/m3u/mp3-32.m3u", + "http://network.absoluteradio.co.uk/core/audio/mp3/live.pls?service=a8bb", "http://network.absoluteradio.co.uk/core/audio/aacplus/live.pls?service=a8", + "http://somafm.com/secretagent.pls", "http://somafm.com/secretagent32.pls", + "http://somafm.com/suburbsofgoa.pls", "http://somafm.com/suburbsofgoa32.pls", + "http://ai-radio.org/256.ogg", "http://ai-radio.org/48.aacp" +}; + +// display error messages +void Error(const char *es) +{ + GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(win), GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s\n(error code: %d)", es, BASS_ErrorGetCode()); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); +} + +#define GetWidget(id) glade_xml_get_widget(glade,id) + +void WindowDestroy(GtkObject *obj, gpointer data) +{ + gtk_main_quit(); +} + +void gtk_label_set_text_8859(GtkLabel *label, const gchar *text) +{ + gsize s; + char *utf = g_convert(text, -1, "UTF-8", "ISO-8859-1", NULL, &s, NULL); + if (utf) { + gtk_label_set_text(label, utf); + g_free(utf); + } else + gtk_label_set_text(label, text); +} + +// update stream title from metadata +void DoMeta() +{ + GtkLabel *label = GTK_LABEL(GetWidget("status1")); + const char *meta = BASS_ChannelGetTags(chan, BASS_TAG_META); + if (meta) { // got Shoutcast metadata + char *p = strstr(meta, "StreamTitle='"); + if (p) { + p = strdup(p + 13); + strchr(p, ';')[-1] = 0; + gtk_label_set_text_8859(label, p); + free(p); + } + } else { + meta = BASS_ChannelGetTags(chan, BASS_TAG_OGG); + if (meta) { // got Icecast/OGG tags + const char *artist = NULL, *title = NULL, *p = meta; + for (; *p; p += strlen(p) + 1) { + if (!strncasecmp(p, "artist=", 7)) // found the artist + artist = p + 7; + if (!strncasecmp(p, "title=", 6)) // found the title + title = p + 6; + } + if (title) { + if (artist) { + char text[100]; + snprintf(text, sizeof(text), "%s - %s", artist, title); + gtk_label_set_text(label, text); + } else + gtk_label_set_text(label, title); + } + } else { + meta = BASS_ChannelGetTags(chan, BASS_TAG_HLS_EXTINF); + if (meta) { // got HLS segment info + const char *p = strchr(meta, ','); + if (p) gtk_label_set_text(label, p + 1); + } + } + } +} + +void CALLBACK MetaSync(HSYNC handle, DWORD channel, DWORD data, void *user) +{ + gdk_threads_enter(); + DoMeta(); + gdk_threads_leave(); +} + +gboolean BufferTimerProc(gpointer data) +{ // monitor buffering progress + if (BASS_ChannelIsActive(chan) == BASS_ACTIVE_PLAYING) { + buftimer = 0; + gtk_label_set_text(GTK_LABEL(GetWidget("status2")), "playing"); + { // get the broadcast name and URL + const char *icy = BASS_ChannelGetTags(chan, BASS_TAG_ICY); + if (!icy) icy = BASS_ChannelGetTags(chan, BASS_TAG_HTTP); // no ICY tags, try HTTP + if (icy) { + for (; *icy; icy += strlen(icy) + 1) { + if (!strncasecmp(icy, "icy-name:", 9)) + gtk_label_set_text_8859(GTK_LABEL(GetWidget("status2")), icy + 9); + if (!strncasecmp(icy, "icy-url:", 8)) + gtk_label_set_text_8859(GTK_LABEL(GetWidget("status3")), icy + 8); + } + } + } + // get the stream title + DoMeta(); + return FALSE; // stop monitoring + } else { + char text[32]; + sprintf(text, "buffering... %d%%", 100 - (int)BASS_StreamGetFilePosition(chan, BASS_FILEPOS_BUFFERING)); + gtk_label_set_text(GTK_LABEL(GetWidget("status2")), text); + return TRUE; // continue monitoring + } +} + +void CALLBACK StallSync(HSYNC handle, DWORD channel, DWORD data, void *user) +{ + if (!data) { // stalled + if (!buftimer) buftimer = g_timeout_add(50, BufferTimerProc, NULL); // start buffer monitoring + } +} + +void CALLBACK EndSync(HSYNC handle, DWORD channel, DWORD data, void *user) +{ + if (buftimer) { + g_source_remove(buftimer); // stop buffer monitoring + buftimer = 0; + } + gdk_threads_enter(); + gtk_label_set_text(GTK_LABEL(GetWidget("status1")), ""); + gtk_label_set_text(GTK_LABEL(GetWidget("status2")), "not playing"); + gtk_label_set_text(GTK_LABEL(GetWidget("status3")), ""); + gdk_threads_leave(); +} + +void CALLBACK StatusProc(const void *buffer, DWORD length, void *user) +{ + if (buffer && !length && (uintptr_t)user == req) { // got HTTP/ICY tags, and this is still the current request + gdk_threads_enter(); + gtk_label_set_text(GTK_LABEL(GetWidget("status3")), buffer); // display connection status + gdk_threads_leave(); + } +} + +void *OpenURL(void *url) +{ + G_LOCK_DEFINE_STATIC(req); + DWORD c, r; + G_LOCK(req); // make sure only 1 thread at a time can do the following + r = ++req; // increment the request counter for this request + G_UNLOCK(req); + if (buftimer) { + g_source_remove(buftimer); // stop buffer monitoring + buftimer = 0; + } + BASS_StreamFree(chan); // close old stream + gdk_threads_enter(); + gtk_label_set_text(GTK_LABEL(GetWidget("status1")), ""); + gtk_label_set_text(GTK_LABEL(GetWidget("status2")), "connecting..."); + gtk_label_set_text(GTK_LABEL(GetWidget("status3")), ""); + gdk_threads_leave(); + c = BASS_StreamCreateURL(url, 0, BASS_STREAM_BLOCK | BASS_STREAM_STATUS | BASS_STREAM_AUTOFREE, StatusProc, (void*)(uintptr_t)r); + free(url); // free temp URL buffer + G_LOCK(req); + if (r != req) { // there is a newer request, discard this stream + G_UNLOCK(req); + if (c) BASS_StreamFree(c); + return NULL; + } + chan = c; // this is now the current stream + G_UNLOCK(req); + if (!chan) { + gdk_threads_enter(); + gtk_label_set_text(GTK_LABEL(GetWidget("status2")), "not playing"); + Error("Can't play the stream"); + gdk_threads_leave(); + } else { + // start buffer monitoring + buftimer = g_timeout_add(50, BufferTimerProc, NULL); + // set syncs for stream title updates + BASS_ChannelSetSync(chan, BASS_SYNC_META, 0, MetaSync, 0); // Shoutcast + BASS_ChannelSetSync(chan, BASS_SYNC_OGG_CHANGE, 0, MetaSync, 0); // Icecast/OGG + BASS_ChannelSetSync(chan, BASS_SYNC_HLS_SEGMENT, 0, MetaSync, 0); // HLS + // set sync for stalling/buffering + BASS_ChannelSetSync(chan, BASS_SYNC_STALL, 0, StallSync, 0); + // set sync for end of stream + BASS_ChannelSetSync(chan, BASS_SYNC_END, 0, EndSync, 0); + // play it! + BASS_ChannelPlay(chan, FALSE); + } + return NULL; +} + +void PresetClicked(GtkButton *obj, gpointer data) +{ + const char *url; + const gchar *objname = gtk_widget_get_name(GTK_WIDGET(obj)); + if (!strcmp(objname, "customopen")) { // play a custom URL + url = gtk_entry_get_text(GTK_ENTRY(GetWidget("customurl"))); // get the URL + } else { // play a preset + int preset = atoi(objname + 6) - 1; // get preset from button name ("presetX") + url = urls[preset]; + } + if (GTK_TOGGLE_BUTTON(GetWidget("proxydirect"))->active) + BASS_SetConfigPtr(BASS_CONFIG_NET_PROXY, NULL); // disable proxy + else + BASS_SetConfigPtr(BASS_CONFIG_NET_PROXY, gtk_entry_get_text(GTK_ENTRY(GetWidget("proxyurl")))); // set proxy server + // open URL in a new thread (so that main thread is free) +#if GLIB_CHECK_VERSION(2,32,0) + { + GThread *thread = g_thread_new(NULL, OpenURL, strdup(url)); + g_thread_unref(thread); + } +#else + g_thread_create(OpenURL, strdup(url), FALSE, NULL); +#endif +} + +int main(int argc, char* argv[]) +{ +#if !GLIB_CHECK_VERSION(2,32,0) + g_thread_init(NULL); +#endif + gdk_threads_init(); + gtk_init(&argc, &argv); + + // check the correct BASS was loaded + if (HIWORD(BASS_GetVersion()) != BASSVERSION) { + Error("An incorrect version of BASS was loaded"); + return 0; + } + + // initialize default output device + if (!BASS_Init(-1, 44100, 0, NULL, NULL)) { + Error("Can't initialize device"); + return 0; + } + + BASS_SetConfig(BASS_CONFIG_NET_PLAYLIST, 1); // enable playlist processing + BASS_SetConfig(BASS_CONFIG_NET_PREBUF_WAIT, 0); // disable BASS_StreamCreateURL pre-buffering + + BASS_PluginLoad("libbass_aac.so", 0); // load BASS_AAC (if present) for AAC support + BASS_PluginLoad("libbassflac.so", 0); // load BASSFLAC (if present) for FLAC support + BASS_PluginLoad("libbasshls.so", 0); // load BASSHLS (if present) for HLS support + + // initialize GUI + glade = glade_xml_new(GLADE_PATH"netradio.glade", NULL, NULL); + if (!glade) return 0; + win = GetWidget("window1"); + if (!win) return 0; + glade_xml_signal_autoconnect(glade); + + gdk_threads_enter(); + gtk_main(); + gdk_threads_leave(); + + BASS_Free(); + + return 0; +} diff --git a/bass-sys/linux/bass24/netradio/netradio.glade b/bass-sys/linux/bass24/netradio/netradio.glade new file mode 100644 index 0000000..be5bcb9 --- /dev/null +++ b/bass-sys/linux/bass24/netradio/netradio.glade @@ -0,0 +1,432 @@ + + + + + + 450 + True + 5 + BASS internet radio tuner + False + center + + + + True + vertical + 5 + + + True + 0 + out + + + True + 6 + 10 + 10 + 10 + + + True + + + True + vertical + 5 + + + True + 0 + High bitrate + end + + + 0 + + + + + True + 0 + Low bitrate + + + 1 + + + + + 0 + + + + + True + vertical + 5 + + + True + 5 + + + 1 + True + True + True + + + + 0 + + + + + 2 + True + True + True + + + + 1 + + + + + 3 + True + True + True + + + + 2 + + + + + 4 + True + True + True + + + + 3 + + + + + 5 + True + True + True + + + + 4 + + + + + 0 + + + + + True + 5 + + + 1 + True + True + True + + + + 0 + + + + + 2 + True + True + True + + + + 1 + + + + + 3 + True + True + True + + + + 2 + + + + + 4 + True + True + True + + + + 3 + + + + + 5 + True + True + True + + + + 4 + + + + + 1 + + + + + 1 + + + + + + + + + True + Presets + True + + + label_item + + + + + False + 0 + + + + + True + 0 + out + + + True + 6 + 10 + 10 + 10 + + + True + 5 + + + True + True + http:// + + + 0 + + + + + Open + True + True + True + + + + False + False + 1 + + + + + + + + + True + Custom + True + + + label_item + + + + + 1 + + + + + 200 + True + 0 + out + + + True + 6 + 10 + 10 + 10 + + + True + + + True + True + + + 0 + + + + + True + not playing + True + + + 1 + + + + + True + True + + + 2 + + + + + + + + + True + Currently playing + True + + + label_item + + + + + 2 + + + + + True + 0 + out + + + True + 6 + 10 + 10 + 10 + + + True + vertical + + + True + True + + + 0 + + + + + True + + + Direct connection + True + True + False + True + + + 0 + + + + + True + 1 + 0 + [user:pass@]server:port + + + 1 + + + + + 1 + + + + + + + + + True + proxy + True + + + label_item + + + + + 3 + + + + + + diff --git a/bass-sys/linux/bass24/pascal/bass.pas b/bass-sys/linux/bass24/pascal/bass.pas new file mode 100644 index 0000000..6d96e4e --- /dev/null +++ b/bass-sys/linux/bass24/pascal/bass.pas @@ -0,0 +1,1043 @@ +{ + BASS 2.4 Delphi unit + Copyright (c) 1999-2019 Un4seen Developments Ltd. + + See the BASS.CHM file for more detailed documentation + + How to install + -------------- + Copy BASS.PAS to the \LIB subdirectory of your Delphi path or your project dir + + NOTE: Delphi users should use the BASS_UNICODE flag where possible +} + +unit BASS; + +interface + +{$IFDEF MSWINDOWS} +uses + Windows; +{$ENDIF} + +const + BASSVERSION = $204; // API version + BASSVERSIONTEXT = '2.4'; + + // Use these to test for error from functions that return a DWORD or QWORD + DW_ERROR = Cardinal(-1); // -1 (DWORD) + QW_ERROR = Int64(-1); // -1 (QWORD) + + // Error codes returned by BASS_ErrorGetCode() + BASS_OK = 0; // all is OK + BASS_ERROR_MEM = 1; // memory error + BASS_ERROR_FILEOPEN = 2; // can't open the file + BASS_ERROR_DRIVER = 3; // can't find a free sound driver + BASS_ERROR_BUFLOST = 4; // the sample buffer was lost + BASS_ERROR_HANDLE = 5; // invalid handle + BASS_ERROR_FORMAT = 6; // unsupported sample format + BASS_ERROR_POSITION = 7; // invalid position + BASS_ERROR_INIT = 8; // BASS_Init has not been successfully called + BASS_ERROR_START = 9; // BASS_Start has not been successfully called + BASS_ERROR_ALREADY = 14; // already initialized/paused/whatever + BASS_ERROR_NOTAUDIO = 17; // file does not contain audio + BASS_ERROR_NOCHAN = 18; // can't get a free channel + BASS_ERROR_ILLTYPE = 19; // an illegal type was specified + BASS_ERROR_ILLPARAM = 20; // an illegal parameter was specified + BASS_ERROR_NO3D = 21; // no 3D support + BASS_ERROR_NOEAX = 22; // no EAX support + BASS_ERROR_DEVICE = 23; // illegal device number + BASS_ERROR_NOPLAY = 24; // not playing + BASS_ERROR_FREQ = 25; // illegal sample rate + BASS_ERROR_NOTFILE = 27; // the stream is not a file stream + BASS_ERROR_NOHW = 29; // no hardware voices available + BASS_ERROR_EMPTY = 31; // the MOD music has no sequence data + BASS_ERROR_NONET = 32; // no internet connection could be opened + BASS_ERROR_CREATE = 33; // couldn't create the file + BASS_ERROR_NOFX = 34; // effects are not available + BASS_ERROR_NOTAVAIL = 37; // requested data/action is not available + BASS_ERROR_DECODE = 38; // the channel is/isn't a "decoding channel" + BASS_ERROR_DX = 39; // a sufficient DirectX version is not installed + BASS_ERROR_TIMEOUT = 40; // connection timedout + BASS_ERROR_FILEFORM = 41; // unsupported file format + BASS_ERROR_SPEAKER = 42; // unavailable speaker + BASS_ERROR_VERSION = 43; // invalid BASS version (used by add-ons) + BASS_ERROR_CODEC = 44; // codec is not available/supported + BASS_ERROR_ENDED = 45; // the channel/file has ended + BASS_ERROR_BUSY = 46; // the device is busy + BASS_ERROR_UNSTREAMABLE = 47; // unstreamable file + BASS_ERROR_UNKNOWN = -1; // some other mystery problem + + // BASS_SetConfig options + BASS_CONFIG_BUFFER = 0; + BASS_CONFIG_UPDATEPERIOD = 1; + BASS_CONFIG_GVOL_SAMPLE = 4; + BASS_CONFIG_GVOL_STREAM = 5; + BASS_CONFIG_GVOL_MUSIC = 6; + BASS_CONFIG_CURVE_VOL = 7; + BASS_CONFIG_CURVE_PAN = 8; + BASS_CONFIG_FLOATDSP = 9; + BASS_CONFIG_3DALGORITHM = 10; + BASS_CONFIG_NET_TIMEOUT = 11; + BASS_CONFIG_NET_BUFFER = 12; + BASS_CONFIG_PAUSE_NOPLAY = 13; + BASS_CONFIG_NET_PREBUF = 15; + BASS_CONFIG_NET_PASSIVE = 18; + BASS_CONFIG_REC_BUFFER = 19; + BASS_CONFIG_NET_PLAYLIST = 21; + BASS_CONFIG_MUSIC_VIRTUAL = 22; + BASS_CONFIG_VERIFY = 23; + BASS_CONFIG_UPDATETHREADS = 24; + BASS_CONFIG_DEV_BUFFER = 27; + BASS_CONFIG_REC_LOOPBACK = 28; + BASS_CONFIG_VISTA_TRUEPOS = 30; + BASS_CONFIG_IOS_SESSION = 34; + BASS_CONFIG_IOS_MIXAUDIO = 34; + BASS_CONFIG_DEV_DEFAULT = 36; + BASS_CONFIG_NET_READTIMEOUT = 37; + BASS_CONFIG_VISTA_SPEAKERS = 38; + BASS_CONFIG_IOS_SPEAKER = 39; + BASS_CONFIG_MF_DISABLE = 40; + BASS_CONFIG_HANDLES = 41; + BASS_CONFIG_UNICODE = 42; + BASS_CONFIG_SRC = 43; + BASS_CONFIG_SRC_SAMPLE = 44; + BASS_CONFIG_ASYNCFILE_BUFFER = 45; + BASS_CONFIG_OGG_PRESCAN = 47; + BASS_CONFIG_MF_VIDEO = 48; + BASS_CONFIG_AIRPLAY = 49; + BASS_CONFIG_DEV_NONSTOP = 50; + BASS_CONFIG_IOS_NOCATEGORY = 51; + BASS_CONFIG_VERIFY_NET = 52; + BASS_CONFIG_DEV_PERIOD = 53; + BASS_CONFIG_FLOAT = 54; + BASS_CONFIG_NET_SEEK = 56; + BASS_CONFIG_AM_DISABLE = 58; + BASS_CONFIG_NET_PLAYLIST_DEPTH = 59; + BASS_CONFIG_NET_PREBUF_WAIT = 60; + BASS_CONFIG_ANDROID_SESSIONID = 62; + BASS_CONFIG_WASAPI_PERSIST = 65; + BASS_CONFIG_REC_WASAPI = 66; + BASS_CONFIG_ANDROID_AAUDIO = 67; + + // BASS_SetConfigPtr options + BASS_CONFIG_NET_AGENT = 16; + BASS_CONFIG_NET_PROXY = 17; + BASS_CONFIG_LIBSSL = 64; + + // BASS_CONFIG_IOS_SESSION flags + BASS_IOS_SESSION_MIX = 1; + BASS_IOS_SESSION_DUCK = 2; + BASS_IOS_SESSION_AMBIENT = 4; + BASS_IOS_SESSION_SPEAKER = 8; + BASS_IOS_SESSION_DISABLE = 16; + + // BASS_Init flags + BASS_DEVICE_8BITS = 1; // 8 bit + BASS_DEVICE_MONO = 2; // mono + BASS_DEVICE_3D = 4; // enable 3D functionality + BASS_DEVICE_16BITS = 8; // limit output to 16 bit + BASS_DEVICE_LATENCY = $100; // calculate device latency (BASS_INFO struct) + BASS_DEVICE_CPSPEAKERS = $400; // detect speakers via Windows control panel + BASS_DEVICE_SPEAKERS = $800; // force enabling of speaker assignment + BASS_DEVICE_NOSPEAKER = $1000; // ignore speaker arrangement + BASS_DEVICE_DMIX = $2000; // use ALSA "dmix" plugin + BASS_DEVICE_FREQ = $4000; // set device sample rate + BASS_DEVICE_STEREO = $8000; // limit output to stereo + BASS_DEVICE_AUDIOTRACK = $20000; // use AudioTrack output + BASS_DEVICE_DSOUND = $40000; // use DirectSound output + + // DirectSound interfaces (for use with BASS_GetDSoundObject) + BASS_OBJECT_DS = 1; // IDirectSound + BASS_OBJECT_DS3DL = 2; // IDirectSound3DListener + + // BASS_DEVICEINFO flags + BASS_DEVICE_ENABLED = 1; + BASS_DEVICE_DEFAULT = 2; + BASS_DEVICE_INIT = 4; + BASS_DEVICE_LOOPBACK = 8; + + BASS_DEVICE_TYPE_MASK = $ff000000; + BASS_DEVICE_TYPE_NETWORK = $01000000; + BASS_DEVICE_TYPE_SPEAKERS = $02000000; + BASS_DEVICE_TYPE_LINE = $03000000; + BASS_DEVICE_TYPE_HEADPHONES = $04000000; + BASS_DEVICE_TYPE_MICROPHONE = $05000000; + BASS_DEVICE_TYPE_HEADSET = $06000000; + BASS_DEVICE_TYPE_HANDSET = $07000000; + BASS_DEVICE_TYPE_DIGITAL = $08000000; + BASS_DEVICE_TYPE_SPDIF = $09000000; + BASS_DEVICE_TYPE_HDMI = $0a000000; + BASS_DEVICE_TYPE_DISPLAYPORT = $40000000; + + // BASS_GetDeviceInfo flags + BASS_DEVICES_AIRPLAY = $1000000; + + // BASS_INFO flags (from DSOUND.H) + DSCAPS_CONTINUOUSRATE = $00000010; // supports all sample rates between min/maxrate + DSCAPS_EMULDRIVER = $00000020; // device does NOT have hardware DirectSound support + DSCAPS_CERTIFIED = $00000040; // device driver has been certified by Microsoft + DSCAPS_SECONDARYMONO = $00000100; // mono + DSCAPS_SECONDARYSTEREO = $00000200; // stereo + DSCAPS_SECONDARY8BIT = $00000400; // 8 bit + DSCAPS_SECONDARY16BIT = $00000800; // 16 bit + + // BASS_RECORDINFO flags (from DSOUND.H) + DSCCAPS_EMULDRIVER = DSCAPS_EMULDRIVER; // device does NOT have hardware DirectSound recording support + DSCCAPS_CERTIFIED = DSCAPS_CERTIFIED; // device driver has been certified by Microsoft + + // defines for formats field of BASS_RECORDINFO (from MMSYSTEM.H) + WAVE_FORMAT_1M08 = $00000001; // 11.025 kHz, Mono, 8-bit + WAVE_FORMAT_1S08 = $00000002; // 11.025 kHz, Stereo, 8-bit + WAVE_FORMAT_1M16 = $00000004; // 11.025 kHz, Mono, 16-bit + WAVE_FORMAT_1S16 = $00000008; // 11.025 kHz, Stereo, 16-bit + WAVE_FORMAT_2M08 = $00000010; // 22.05 kHz, Mono, 8-bit + WAVE_FORMAT_2S08 = $00000020; // 22.05 kHz, Stereo, 8-bit + WAVE_FORMAT_2M16 = $00000040; // 22.05 kHz, Mono, 16-bit + WAVE_FORMAT_2S16 = $00000080; // 22.05 kHz, Stereo, 16-bit + WAVE_FORMAT_4M08 = $00000100; // 44.1 kHz, Mono, 8-bit + WAVE_FORMAT_4S08 = $00000200; // 44.1 kHz, Stereo, 8-bit + WAVE_FORMAT_4M16 = $00000400; // 44.1 kHz, Mono, 16-bit + WAVE_FORMAT_4S16 = $00000800; // 44.1 kHz, Stereo, 16-bit + + BASS_SAMPLE_8BITS = 1; // 8 bit + BASS_SAMPLE_FLOAT = 256; // 32 bit floating-point + BASS_SAMPLE_MONO = 2; // mono + BASS_SAMPLE_LOOP = 4; // looped + BASS_SAMPLE_3D = 8; // 3D functionality + BASS_SAMPLE_SOFTWARE = 16; // not using hardware mixing + BASS_SAMPLE_MUTEMAX = 32; // mute at max distance (3D only) + BASS_SAMPLE_VAM = 64; // DX7 voice allocation & management + BASS_SAMPLE_FX = 128; // old implementation of DX8 effects + BASS_SAMPLE_OVER_VOL = $10000; // override lowest volume + BASS_SAMPLE_OVER_POS = $20000; // override longest playing + BASS_SAMPLE_OVER_DIST = $30000; // override furthest from listener (3D only) + + BASS_STREAM_PRESCAN = $20000; // enable pin-point seeking/length (MP3/MP2/MP1) + BASS_STREAM_AUTOFREE = $40000; // automatically free the stream when it stop/ends + BASS_STREAM_RESTRATE = $80000; // restrict the download rate of internet file streams + BASS_STREAM_BLOCK = $100000;// download/play internet file stream in small blocks + BASS_STREAM_DECODE = $200000;// don't play the stream, only decode (BASS_ChannelGetData) + BASS_STREAM_STATUS = $800000;// give server status info (HTTP/ICY tags) in DOWNLOADPROC + + BASS_MP3_IGNOREDELAY = $200; // ignore LAME/Xing/VBRI/iTunes delay & padding info + BASS_MP3_SETPOS = BASS_STREAM_PRESCAN; + + BASS_MUSIC_FLOAT = BASS_SAMPLE_FLOAT; + BASS_MUSIC_MONO = BASS_SAMPLE_MONO; + BASS_MUSIC_LOOP = BASS_SAMPLE_LOOP; + BASS_MUSIC_3D = BASS_SAMPLE_3D; + BASS_MUSIC_FX = BASS_SAMPLE_FX; + BASS_MUSIC_AUTOFREE = BASS_STREAM_AUTOFREE; + BASS_MUSIC_DECODE = BASS_STREAM_DECODE; + BASS_MUSIC_PRESCAN = BASS_STREAM_PRESCAN; // calculate playback length + BASS_MUSIC_CALCLEN = BASS_MUSIC_PRESCAN; + BASS_MUSIC_RAMP = $200; // normal ramping + BASS_MUSIC_RAMPS = $400; // sensitive ramping + BASS_MUSIC_SURROUND = $800; // surround sound + BASS_MUSIC_SURROUND2 = $1000; // surround sound (mode 2) + BASS_MUSIC_FT2PAN = $2000; // apply FastTracker 2 panning to XM files + BASS_MUSIC_FT2MOD = $2000; // play .MOD as FastTracker 2 does + BASS_MUSIC_PT1MOD = $4000; // play .MOD as ProTracker 1 does + BASS_MUSIC_NONINTER = $10000; // non-interpolated sample mixing + BASS_MUSIC_SINCINTER = $800000; // sinc interpolated sample mixing + BASS_MUSIC_POSRESET = $8000; // stop all notes when moving position + BASS_MUSIC_POSRESETEX = $400000; // stop all notes and reset bmp/etc when moving position + BASS_MUSIC_STOPBACK = $80000; // stop the music on a backwards jump effect + BASS_MUSIC_NOSAMPLE = $100000; // don't load the samples + + // Speaker assignment flags + BASS_SPEAKER_FRONT = $1000000; // front speakers + BASS_SPEAKER_REAR = $2000000; // rear/side speakers + BASS_SPEAKER_CENLFE = $3000000; // center & LFE speakers (5.1) + BASS_SPEAKER_REAR2 = $4000000; // rear center speakers (7.1) + BASS_SPEAKER_LEFT = $10000000; // modifier: left + BASS_SPEAKER_RIGHT = $20000000; // modifier: right + BASS_SPEAKER_FRONTLEFT = BASS_SPEAKER_FRONT or BASS_SPEAKER_LEFT; + BASS_SPEAKER_FRONTRIGHT = BASS_SPEAKER_FRONT or BASS_SPEAKER_RIGHT; + BASS_SPEAKER_REARLEFT = BASS_SPEAKER_REAR or BASS_SPEAKER_LEFT; + BASS_SPEAKER_REARRIGHT = BASS_SPEAKER_REAR or BASS_SPEAKER_RIGHT; + BASS_SPEAKER_CENTER = BASS_SPEAKER_CENLFE or BASS_SPEAKER_LEFT; + BASS_SPEAKER_LFE = BASS_SPEAKER_CENLFE or BASS_SPEAKER_RIGHT; + BASS_SPEAKER_REAR2LEFT = BASS_SPEAKER_REAR2 or BASS_SPEAKER_LEFT; + BASS_SPEAKER_REAR2RIGHT = BASS_SPEAKER_REAR2 or BASS_SPEAKER_RIGHT; + + BASS_ASYNCFILE = $40000000; + BASS_UNICODE = $80000000; + + BASS_RECORD_PAUSE = $8000; // start recording paused + + // DX7 voice allocation & management flags + BASS_VAM_HARDWARE = 1; + BASS_VAM_SOFTWARE = 2; + BASS_VAM_TERM_TIME = 4; + BASS_VAM_TERM_DIST = 8; + BASS_VAM_TERM_PRIO = 16; + + BASS_ORIGRES_FLOAT = $10000; + + // BASS_CHANNELINFO types + BASS_CTYPE_SAMPLE = 1; + BASS_CTYPE_RECORD = 2; + BASS_CTYPE_STREAM = $10000; + BASS_CTYPE_STREAM_VORBIS = $10002; + BASS_CTYPE_STREAM_OGG = $10002; + BASS_CTYPE_STREAM_MP1 = $10003; + BASS_CTYPE_STREAM_MP2 = $10004; + BASS_CTYPE_STREAM_MP3 = $10005; + BASS_CTYPE_STREAM_AIFF = $10006; + BASS_CTYPE_STREAM_CA = $10007; + BASS_CTYPE_STREAM_MF = $10008; + BASS_CTYPE_STREAM_AM = $10009; + BASS_CTYPE_STREAM_DUMMY = $18000; + BASS_CTYPE_STREAM_DEVICE = $18001; + BASS_CTYPE_STREAM_WAV = $40000; // WAVE flag, LOWORD=codec + BASS_CTYPE_STREAM_WAV_PCM = $50001; + BASS_CTYPE_STREAM_WAV_FLOAT = $50003; + BASS_CTYPE_MUSIC_MOD = $20000; + BASS_CTYPE_MUSIC_MTM = $20001; + BASS_CTYPE_MUSIC_S3M = $20002; + BASS_CTYPE_MUSIC_XM = $20003; + BASS_CTYPE_MUSIC_IT = $20004; + BASS_CTYPE_MUSIC_MO3 = $00100; // MO3 flag + + // 3D channel modes + BASS_3DMODE_NORMAL = 0; // normal 3D processing + BASS_3DMODE_RELATIVE = 1; // position is relative to the listener + BASS_3DMODE_OFF = 2; // no 3D processing + + // software 3D mixing algorithms (used with BASS_CONFIG_3DALGORITHM) + BASS_3DALG_DEFAULT = 0; + BASS_3DALG_OFF = 1; + BASS_3DALG_FULL = 2; + BASS_3DALG_LIGHT = 3; + + // EAX environments, use with BASS_SetEAXParameters + EAX_ENVIRONMENT_GENERIC = 0; + EAX_ENVIRONMENT_PADDEDCELL = 1; + EAX_ENVIRONMENT_ROOM = 2; + EAX_ENVIRONMENT_BATHROOM = 3; + EAX_ENVIRONMENT_LIVINGROOM = 4; + EAX_ENVIRONMENT_STONEROOM = 5; + EAX_ENVIRONMENT_AUDITORIUM = 6; + EAX_ENVIRONMENT_CONCERTHALL = 7; + EAX_ENVIRONMENT_CAVE = 8; + EAX_ENVIRONMENT_ARENA = 9; + EAX_ENVIRONMENT_HANGAR = 10; + EAX_ENVIRONMENT_CARPETEDHALLWAY = 11; + EAX_ENVIRONMENT_HALLWAY = 12; + EAX_ENVIRONMENT_STONECORRIDOR = 13; + EAX_ENVIRONMENT_ALLEY = 14; + EAX_ENVIRONMENT_FOREST = 15; + EAX_ENVIRONMENT_CITY = 16; + EAX_ENVIRONMENT_MOUNTAINS = 17; + EAX_ENVIRONMENT_QUARRY = 18; + EAX_ENVIRONMENT_PLAIN = 19; + EAX_ENVIRONMENT_PARKINGLOT = 20; + EAX_ENVIRONMENT_SEWERPIPE = 21; + EAX_ENVIRONMENT_UNDERWATER = 22; + EAX_ENVIRONMENT_DRUGGED = 23; + EAX_ENVIRONMENT_DIZZY = 24; + EAX_ENVIRONMENT_PSYCHOTIC = 25; + // total number of environments + EAX_ENVIRONMENT_COUNT = 26; + + BASS_STREAMPROC_END = $80000000; // end of user stream flag + + // BASS_StreamCreateFileUser file systems + STREAMFILE_NOBUFFER = 0; + STREAMFILE_BUFFER = 1; + STREAMFILE_BUFFERPUSH = 2; + + // BASS_StreamPutFileData options + BASS_FILEDATA_END = 0; // end & close the file + + // BASS_StreamGetFilePosition modes + BASS_FILEPOS_CURRENT = 0; + BASS_FILEPOS_DECODE = BASS_FILEPOS_CURRENT; + BASS_FILEPOS_DOWNLOAD = 1; + BASS_FILEPOS_END = 2; + BASS_FILEPOS_START = 3; + BASS_FILEPOS_CONNECTED = 4; + BASS_FILEPOS_BUFFER = 5; + BASS_FILEPOS_SOCKET = 6; + BASS_FILEPOS_ASYNCBUF = 7; + BASS_FILEPOS_SIZE = 8; + BASS_FILEPOS_BUFFERING = 9; + + // BASS_ChannelSetSync types + BASS_SYNC_POS = 0; + BASS_SYNC_END = 2; + BASS_SYNC_META = 4; + BASS_SYNC_SLIDE = 5; + BASS_SYNC_STALL = 6; + BASS_SYNC_DOWNLOAD = 7; + BASS_SYNC_FREE = 8; + BASS_SYNC_SETPOS = 11; + BASS_SYNC_MUSICPOS = 10; + BASS_SYNC_MUSICINST = 1; + BASS_SYNC_MUSICFX = 3; + BASS_SYNC_OGG_CHANGE = 12; + BASS_SYNC_DEV_FAIL = 14; + BASS_SYNC_DEV_FORMAT = 15; + BASS_SYNC_THREAD = $20000000; // flag: call sync in other thread + BASS_SYNC_MIXTIME = $40000000; // flag: sync at mixtime, else at playtime + BASS_SYNC_ONETIME = $80000000; // flag: sync only once, else continuously + + // BASS_ChannelIsActive return values + BASS_ACTIVE_STOPPED = 0; + BASS_ACTIVE_PLAYING = 1; + BASS_ACTIVE_STALLED = 2; + BASS_ACTIVE_PAUSED = 3; + BASS_ACTIVE_PAUSED_DEVICE = 4; + + // Channel attributes + BASS_ATTRIB_FREQ = 1; + BASS_ATTRIB_VOL = 2; + BASS_ATTRIB_PAN = 3; + BASS_ATTRIB_EAXMIX = 4; + BASS_ATTRIB_NOBUFFER = 5; + BASS_ATTRIB_VBR = 6; + BASS_ATTRIB_CPU = 7; + BASS_ATTRIB_SRC = 8; + BASS_ATTRIB_NET_RESUME = 9; + BASS_ATTRIB_SCANINFO = 10; + BASS_ATTRIB_NORAMP = 11; + BASS_ATTRIB_BITRATE = 12; + BASS_ATTRIB_BUFFER = 13; + BASS_ATTRIB_GRANULE = 14; + BASS_ATTRIB_MUSIC_AMPLIFY = $100; + BASS_ATTRIB_MUSIC_PANSEP = $101; + BASS_ATTRIB_MUSIC_PSCALER = $102; + BASS_ATTRIB_MUSIC_BPM = $103; + BASS_ATTRIB_MUSIC_SPEED = $104; + BASS_ATTRIB_MUSIC_VOL_GLOBAL = $105; + BASS_ATTRIB_MUSIC_ACTIVE = $106; + BASS_ATTRIB_MUSIC_VOL_CHAN = $200; // + channel # + BASS_ATTRIB_MUSIC_VOL_INST = $300; // + instrument # + + // BASS_ChannelSlideAttribute flags + BASS_SLIDE_LOG = $1000000; + + // BASS_ChannelGetData flags + BASS_DATA_AVAILABLE = 0; // query how much data is buffered + BASS_DATA_FIXED = $20000000; // flag: return 8.24 fixed-point data + BASS_DATA_FLOAT = $40000000; // flag: return floating-point sample data + BASS_DATA_FFT256 = $80000000; // 256 sample FFT + BASS_DATA_FFT512 = $80000001; // 512 FFT + BASS_DATA_FFT1024 = $80000002; // 1024 FFT + BASS_DATA_FFT2048 = $80000003; // 2048 FFT + BASS_DATA_FFT4096 = $80000004; // 4096 FFT + BASS_DATA_FFT8192 = $80000005; // 8192 FFT + BASS_DATA_FFT16384 = $80000006; // 16384 FFT + BASS_DATA_FFT32768 = $80000007; // 32768 FFT + BASS_DATA_FFT_INDIVIDUAL = $10; // FFT flag: FFT for each channel, else all combined + BASS_DATA_FFT_NOWINDOW = $20; // FFT flag: no Hanning window + BASS_DATA_FFT_REMOVEDC = $40; // FFT flag: pre-remove DC bias + BASS_DATA_FFT_COMPLEX = $80; // FFT flag: return complex data + BASS_DATA_FFT_NYQUIST = $100; // FFT flag: return extra Nyquist value + + // BASS_ChannelGetLevelEx flags + BASS_LEVEL_MONO = 1; + BASS_LEVEL_STEREO = 2; + BASS_LEVEL_RMS = 4; + BASS_LEVEL_VOLPAN = 8; + + // BASS_ChannelGetTags types : what's returned + BASS_TAG_ID3 = 0; // ID3v1 tags : TAG_ID3 structure + BASS_TAG_ID3V2 = 1; // ID3v2 tags : variable length block + BASS_TAG_OGG = 2; // OGG comments : series of null-terminated UTF-8 strings + BASS_TAG_HTTP = 3; // HTTP headers : series of null-terminated ANSI strings + BASS_TAG_ICY = 4; // ICY headers : series of null-terminated ANSI strings + BASS_TAG_META = 5; // ICY metadata : ANSI string + BASS_TAG_APE = 6; // APEv2 tags : series of null-terminated UTF-8 strings + BASS_TAG_MP4 = 7; // MP4/iTunes metadata : series of null-terminated UTF-8 strings + BASS_TAG_WMA = 8; // WMA tags : series of null-terminated UTF-8 strings + BASS_TAG_VENDOR = 9; // OGG encoder : UTF-8 string + BASS_TAG_LYRICS3 = 10; // Lyric3v2 tag : ASCII string + BASS_TAG_CA_CODEC = 11; // CoreAudio codec info : TAG_CA_CODEC structure + BASS_TAG_MF = 13; // Media Foundation tags : series of null-terminated UTF-8 strings + BASS_TAG_WAVEFORMAT = 14; // WAVE format : WAVEFORMATEEX structure + BASS_TAG_AM_MIME = 15; // Android Media MIME type : ASCII string + BASS_TAG_AM_NAME = 16; // Android Media codec name : ASCII string + BASS_TAG_RIFF_INFO = $100; // RIFF "INFO" tags : series of null-terminated ANSI strings + BASS_TAG_RIFF_BEXT = $101; // RIFF/BWF "bext" tags : TAG_BEXT structure + BASS_TAG_RIFF_CART = $102; // RIFF/BWF "cart" tags : TAG_CART structure + BASS_TAG_RIFF_DISP = $103; // RIFF "DISP" text tag : ANSI string + BASS_TAG_RIFF_CUE = $104; // RIFF "cue " chunk : TAG_CUE structure + BASS_TAG_RIFF_SMPL = $105; // RIFF "smpl" chunk : TAG_SMPL structure + BASS_TAG_APE_BINARY = $1000; // + index #, binary APEv2 tag : TAG_APE_BINARY structure + BASS_TAG_MUSIC_NAME = $10000; // MOD music name : ANSI string + BASS_TAG_MUSIC_MESSAGE = $10001; // MOD message : ANSI string + BASS_TAG_MUSIC_ORDERS = $10002; // MOD order list : BYTE array of pattern numbers + BASS_TAG_MUSIC_AUTH = $10003; // MOD author : UTF-8 string + BASS_TAG_MUSIC_INST = $10100; // + instrument #, MOD instrument name : ANSI string + BASS_TAG_MUSIC_SAMPLE = $10300; // + sample #, MOD sample name : ANSI string + + // BASS_ChannelGetLength/GetPosition/SetPosition modes + BASS_POS_BYTE = 0; // byte position + BASS_POS_MUSIC_ORDER = 1; // order.row position, MAKELONG(order,row) + BASS_POS_OGG = 3; // OGG bitstream number + BASS_POS_RESET = $2000000; // flag: reset user file buffers + BASS_POS_RELATIVE = $4000000; // flag: seek relative to the current position + BASS_POS_INEXACT = $8000000; // flag: allow seeking to inexact position + BASS_POS_DECODE = $10000000; // flag: get the decoding (not playing) position + BASS_POS_DECODETO = $20000000; // flag: decode to the position instead of seeking + BASS_POS_SCAN = $40000000; // flag: scan to the position + + // BASS_ChannelSetDevice/GetDevice option + BASS_NODEVICE = $20000; + + // BASS_RecordSetInput flags + BASS_INPUT_OFF = $10000; + BASS_INPUT_ON = $20000; + + BASS_INPUT_TYPE_MASK = $FF000000; + BASS_INPUT_TYPE_UNDEF = $00000000; + BASS_INPUT_TYPE_DIGITAL = $01000000; + BASS_INPUT_TYPE_LINE = $02000000; + BASS_INPUT_TYPE_MIC = $03000000; + BASS_INPUT_TYPE_SYNTH = $04000000; + BASS_INPUT_TYPE_CD = $05000000; + BASS_INPUT_TYPE_PHONE = $06000000; + BASS_INPUT_TYPE_SPEAKER = $07000000; + BASS_INPUT_TYPE_WAVE = $08000000; + BASS_INPUT_TYPE_AUX = $09000000; + BASS_INPUT_TYPE_ANALOG = $0A000000; + + // BASS_ChannelSetFX effect types + BASS_FX_DX8_CHORUS = 0; + BASS_FX_DX8_COMPRESSOR = 1; + BASS_FX_DX8_DISTORTION = 2; + BASS_FX_DX8_ECHO = 3; + BASS_FX_DX8_FLANGER = 4; + BASS_FX_DX8_GARGLE = 5; + BASS_FX_DX8_I3DL2REVERB = 6; + BASS_FX_DX8_PARAMEQ = 7; + BASS_FX_DX8_REVERB = 8; + BASS_FX_VOLUME = 9; + + BASS_DX8_PHASE_NEG_180 = 0; + BASS_DX8_PHASE_NEG_90 = 1; + BASS_DX8_PHASE_ZERO = 2; + BASS_DX8_PHASE_90 = 3; + BASS_DX8_PHASE_180 = 4; + +type + DWORD = Cardinal; + BOOL = LongBool; + QWORD = Int64; + + HMUSIC = DWORD; // MOD music handle + HSAMPLE = DWORD; // sample handle + HCHANNEL = DWORD; // playing sample's channel handle + HSTREAM = DWORD; // sample stream handle + HRECORD = DWORD; // recording handle + HSYNC = DWORD; // synchronizer handle + HDSP = DWORD; // DSP handle + HFX = DWORD; // DX8 effect handle + HPLUGIN = DWORD; // Plugin handle + + // Device info structure + BASS_DEVICEINFO = record + name: PAnsiChar; // description + driver: PAnsiChar; // driver + flags: DWORD; + end; + + BASS_INFO = record + flags: DWORD; // device capabilities (DSCAPS_xxx flags) + hwsize: DWORD; // size of total device hardware memory + hwfree: DWORD; // size of free device hardware memory + freesam: DWORD; // number of free sample slots in the hardware + free3d: DWORD; // number of free 3D sample slots in the hardware + minrate: DWORD; // min sample rate supported by the hardware + maxrate: DWORD; // max sample rate supported by the hardware + eax: BOOL; // device supports EAX? (always FALSE if BASS_DEVICE_3D was not used) + minbuf: DWORD; // recommended minimum buffer length in ms (requires BASS_DEVICE_LATENCY) + dsver: DWORD; // DirectSound version + latency: DWORD; // delay (in ms) before start of playback (requires BASS_DEVICE_LATENCY) + initflags: DWORD; // BASS_Init "flags" parameter + speakers: DWORD; // number of speakers available + freq: DWORD; // current output rate + end; + + // Recording device info structure + BASS_RECORDINFO = record + flags: DWORD; // device capabilities (DSCCAPS_xxx flags) + formats: DWORD; // supported standard formats (WAVE_FORMAT_xxx flags) + inputs: DWORD; // number of inputs + singlein: BOOL; // only 1 input can be set at a time + freq: DWORD; // current input rate + end; + + // Sample info structure + BASS_SAMPLE = record + freq: DWORD; // default playback rate + volume: Single; // default volume (0-100) + pan: Single; // default pan (-100=left, 0=middle, 100=right) + flags: DWORD; // BASS_SAMPLE_xxx flags + length: DWORD; // length (in samples, not bytes) + max: DWORD; // maximum simultaneous playbacks + origres: DWORD; // original resolution + chans: DWORD; // number of channels + mingap: DWORD; // minimum gap (ms) between creating channels + mode3d: DWORD; // BASS_3DMODE_xxx mode + mindist: Single; // minimum distance + maxdist: Single; // maximum distance + iangle: DWORD; // angle of inside projection cone + oangle: DWORD; // angle of outside projection cone + outvol: Single; // delta-volume outside the projection cone + vam: DWORD; // voice allocation/management flags (BASS_VAM_xxx) + priority: DWORD; // priority (0=lowest, $ffffffff=highest) + end; + + // Channel info structure + BASS_CHANNELINFO = record + freq: DWORD; // default playback rate + chans: DWORD; // channels + flags: DWORD; // BASS_SAMPLE/STREAM/MUSIC/SPEAKER flags + ctype: DWORD; // type of channel + origres: DWORD; // original resolution + plugin: HPLUGIN; // plugin + sample: HSAMPLE; // sample + {$IFDEF CPUX64} + padding: DWORD; + {$ENDIF} + filename: PChar; // filename + end; + + BASS_PLUGINFORM = record + ctype: DWORD; // channel type + {$IFDEF CPUX64} + padding: DWORD; + {$ENDIF} + name: PAnsiChar; // format description + exts: PAnsiChar; // file extension filter (*.ext1;*.ext2;etc...) + end; + PBASS_PLUGINFORMS = ^TBASS_PLUGINFORMS; + TBASS_PLUGINFORMS = array[0..maxInt div sizeOf(BASS_PLUGINFORM) - 1] of BASS_PLUGINFORM; + + PBASS_PLUGININFO = ^BASS_PLUGININFO; + BASS_PLUGININFO = record + version: DWORD; // version (same form as BASS_GetVersion) + formatc: DWORD; // number of formats + formats: PBASS_PLUGINFORMS; // the array of formats + end; + + // 3D vector (for 3D positions/velocities/orientations) + BASS_3DVECTOR = record + x: Single; // +=right, -=left + y: Single; // +=up, -=down + z: Single; // +=front, -=behind + end; + + // User file stream callback functions + FILECLOSEPROC = procedure(user: Pointer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; + FILELENPROC = function(user: Pointer): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; + FILEREADPROC = function(buffer: Pointer; length: DWORD; user: Pointer): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; + FILESEEKPROC = function(offset: QWORD; user: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; + + BASS_FILEPROCS = record + close: FILECLOSEPROC; + length: FILELENPROC; + read: FILEREADPROC; + seek: FILESEEKPROC; + end; + + // ID3v1 tag structure + PTAG_ID3 = ^TAG_ID3; + TAG_ID3 = record + id: Array[0..2] of AnsiChar; + title: Array[0..29] of AnsiChar; + artist: Array[0..29] of AnsiChar; + album: Array[0..29] of AnsiChar; + year: Array[0..3] of AnsiChar; + comment: Array[0..29] of AnsiChar; + genre: Byte; + end; + + // Binary APEv2 tag structure + PTAG_APE_BINARY = ^TAG_APE_BINARY; + TAG_APE_BINARY = record + key: PAnsiChar; + data: PAnsiChar; + length: DWORD; + end; + + // BWF "bext" tag structure + PTAG_BEXT = ^TAG_BEXT; + TAG_BEXT = packed record + Description: Array[0..255] of AnsiChar; // description + Originator: Array[0..31] of AnsiChar; // name of the originator + OriginatorReference: Array[0..31] of AnsiChar; // reference of the originator + OriginationDate: Array[0..9] of AnsiChar; // date of creation (yyyy-mm-dd) + OriginationTime: Array[0..7] of AnsiChar; // time of creation (hh-mm-ss) + TimeReference: QWORD; // first sample count since midnight (little-endian) + Version: Word; // BWF version (little-endian) + UMID: Array[0..63] of Byte; // SMPTE UMID + Reserved: Array[0..189] of Byte; + CodingHistory: AnsiChar; // history + end; + + BASS_DX8_CHORUS = record + fWetDryMix: Single; + fDepth: Single; + fFeedback: Single; + fFrequency: Single; + lWaveform: DWORD; // 0=triangle, 1=sine + fDelay: Single; + lPhase: DWORD; // BASS_DX8_PHASE_xxx + end; + + BASS_DX8_COMPRESSOR = record + fGain: Single; + fAttack: Single; + fRelease: Single; + fThreshold: Single; + fRatio: Single; + fPredelay: Single; + end; + + BASS_DX8_DISTORTION = record + fGain: Single; + fEdge: Single; + fPostEQCenterFrequency: Single; + fPostEQBandwidth: Single; + fPreLowpassCutoff: Single; + end; + + BASS_DX8_ECHO = record + fWetDryMix: Single; + fFeedback: Single; + fLeftDelay: Single; + fRightDelay: Single; + lPanDelay: BOOL; + end; + + BASS_DX8_FLANGER = record + fWetDryMix: Single; + fDepth: Single; + fFeedback: Single; + fFrequency: Single; + lWaveform: DWORD; // 0=triangle, 1=sine + fDelay: Single; + lPhase: DWORD; // BASS_DX8_PHASE_xxx + end; + + BASS_DX8_GARGLE = record + dwRateHz: DWORD; // Rate of modulation in hz + dwWaveShape: DWORD; // 0=triangle, 1=square + end; + + BASS_DX8_I3DL2REVERB = record + lRoom: Integer; // [-10000, 0] default: -1000 mB + lRoomHF: Integer; // [-10000, 0] default: 0 mB + flRoomRolloffFactor: Single; // [0.0, 10.0] default: 0.0 + flDecayTime: Single; // [0.1, 20.0] default: 1.49s + flDecayHFRatio: Single; // [0.1, 2.0] default: 0.83 + lReflections: Integer; // [-10000, 1000] default: -2602 mB + flReflectionsDelay: Single; // [0.0, 0.3] default: 0.007 s + lReverb: Integer; // [-10000, 2000] default: 200 mB + flReverbDelay: Single; // [0.0, 0.1] default: 0.011 s + flDiffusion: Single; // [0.0, 100.0] default: 100.0 % + flDensity: Single; // [0.0, 100.0] default: 100.0 % + flHFReference: Single; // [20.0, 20000.0] default: 5000.0 Hz + end; + + BASS_DX8_PARAMEQ = record + fCenter: Single; + fBandwidth: Single; + fGain: Single; + end; + + BASS_DX8_REVERB = record + fInGain: Single; // [-96.0,0.0] default: 0.0 dB + fReverbMix: Single; // [-96.0,0.0] default: 0.0 db + fReverbTime: Single; // [0.001,3000.0] default: 1000.0 ms + fHighFreqRTRatio: Single; // [0.001,0.999] default: 0.001 + end; + + BASS_FX_VOLUME_PARAM = record + fTarget: Single; + fCurrent: Single; + fTime: Single; + lCurve: DWORD; + end; + + // callback function types + STREAMPROC = function(handle: HSTREAM; buffer: Pointer; length: DWORD; user: Pointer): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; + { + User stream callback function. + handle : The stream that needs writing + buffer : Buffer to write the samples in + length : Number of bytes to write + user : The 'user' parameter value given when calling BASS_StreamCreate + RETURN : Number of bytes written. Set the BASS_STREAMPROC_END flag to end + the stream. + } + +const + // special STREAMPROCs + STREAMPROC_DUMMY = Pointer(0); // "dummy" stream + STREAMPROC_PUSH = Pointer(-1); // push stream + STREAMPROC_DEVICE = Pointer(-2); // device mix stream + STREAMPROC_DEVICE_3D = Pointer(-3); // device 3D mix stream + +type + DOWNLOADPROC = procedure(buffer: Pointer; length: DWORD; user: Pointer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; + { + Internet stream download callback function. + buffer : Buffer containing the downloaded data... NULL=end of download + length : Number of bytes in the buffer + user : The 'user' parameter value given when calling BASS_StreamCreateURL + } + + SYNCPROC = procedure(handle: HSYNC; channel, data: DWORD; user: Pointer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; + { + Sync callback function. + handle : The sync that has occured + channel: Channel that the sync occured in + data : Additional data associated with the sync's occurance + user : The 'user' parameter given when calling BASS_ChannelSetSync + } + + DSPPROC = procedure(handle: HDSP; channel: DWORD; buffer: Pointer; length: DWORD; user: Pointer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; + { + DSP callback function. + handle : The DSP handle + channel: Channel that the DSP is being applied to + buffer : Buffer to apply the DSP to + length : Number of bytes in the buffer + user : The 'user' parameter given when calling BASS_ChannelSetDSP + } + + RECORDPROC = function(handle: HRECORD; buffer: Pointer; length: DWORD; user: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; + { + Recording callback function. + handle : The recording handle + buffer : Buffer containing the recorded sample data + length : Number of bytes + user : The 'user' parameter value given when calling BASS_RecordStart + RETURN : TRUE = continue recording, FALSE = stop + } + + +// Functions +const +{$IFDEF MSWINDOWS} + bassdll = 'bass.dll'; +{$ENDIF} +{$IFDEF LINUX} + bassdll = 'libbass.so'; +{$ENDIF} +{$IFDEF MACOS} + bassdll = 'libbass.dylib'; +{$ENDIF} +{$IFDEF ANDROID} + bassdll = 'libbass.so'; +{$ENDIF} + +function BASS_SetConfig(option, value: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_GetConfig(option: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_SetConfigPtr(option: DWORD; value: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_GetConfigPtr(option: DWORD): Pointer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_GetVersion: DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ErrorGetCode: Integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_GetDeviceInfo(device: DWORD; var info: BASS_DEVICEINFO): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +{$IFDEF MSWINDOWS} +function BASS_Init(device: Integer; freq, flags: DWORD; win: HWND; clsid: PGUID): BOOL; stdcall; external bassdll; +{$ELSE} +function BASS_Init(device: Integer; freq, flags: DWORD; win: Pointer; clsid: Pointer): BOOL; cdecl; external bassdll; +{$ENDIF} +function BASS_SetDevice(device: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_GetDevice: DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_Free: BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +{$IFDEF MSWINDOWS} +function BASS_GetDSoundObject(obj: DWORD): Pointer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +{$ENDIF} +function BASS_GetInfo(var info: BASS_INFO): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_Update(length: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_GetCPU: Single; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_Start: BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_Stop: BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_Pause: BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_IsStarted: BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_SetVolume(volume: Single): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_GetVolume: Single; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; + +function BASS_PluginLoad(filename: PChar; flags: DWORD): HPLUGIN; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_PluginFree(handle: HPLUGIN): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_PluginGetInfo(handle: HPLUGIN): PBASS_PLUGININFO; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; + +function BASS_Set3DFactors(distf, rollf, doppf: Single): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_Get3DFactors(var distf, rollf, doppf: Single): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_Set3DPosition(var pos, vel, front, top: BASS_3DVECTOR): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_Get3DPosition(var pos, vel, front, top: BASS_3DVECTOR): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +procedure BASS_Apply3D; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +{$IFDEF MSWINDOWS} +function BASS_SetEAXParameters(env: Integer; vol, decay, damp: Single): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_GetEAXParameters(var env: DWORD; var vol, decay, damp: Single): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +{$ENDIF} + +function BASS_MusicLoad(mem: BOOL; f: Pointer; offset: QWORD; length, flags, freq: DWORD): HMUSIC; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_MusicFree(handle: HMUSIC): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; + +function BASS_SampleLoad(mem: BOOL; f: Pointer; offset: QWORD; length, max, flags: DWORD): HSAMPLE; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_SampleCreate(length, freq, chans, max, flags: DWORD): HSAMPLE; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_SampleFree(handle: HSAMPLE): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_SampleSetData(handle: HSAMPLE; buffer: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_SampleGetData(handle: HSAMPLE; buffer: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_SampleGetInfo(handle: HSAMPLE; var info: BASS_SAMPLE): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_SampleSetInfo(handle: HSAMPLE; var info: BASS_SAMPLE): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_SampleGetChannel(handle: HSAMPLE; onlynew: BOOL): HCHANNEL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_SampleGetChannels(handle: HSAMPLE; channels: Pointer): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_SampleStop(handle: HSAMPLE): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; + +function BASS_StreamCreate(freq, chans, flags: DWORD; proc: STREAMPROC; user: Pointer): HSTREAM; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_StreamCreateFile(mem: BOOL; f: Pointer; offset, length: QWORD; flags: DWORD): HSTREAM; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_StreamCreateURL(url: PChar; offset: DWORD; flags: DWORD; proc: DOWNLOADPROC; user: Pointer):HSTREAM; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_StreamCreateFileUser(system, flags: DWORD; var procs: BASS_FILEPROCS; user: Pointer): HSTREAM; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_StreamFree(handle: HSTREAM): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_StreamGetFilePosition(handle: HSTREAM; mode: DWORD): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_StreamPutData(handle: HSTREAM; buffer: Pointer; length: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_StreamPutFileData(handle: HSTREAM; buffer: Pointer; length: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; + +function BASS_RecordGetDeviceInfo(device: DWORD; var info: BASS_DEVICEINFO): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_RecordInit(device: Integer):BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_RecordSetDevice(device: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_RecordGetDevice: DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_RecordFree: BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_RecordGetInfo(var info: BASS_RECORDINFO): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_RecordGetInputName(input: Integer): PAnsiChar; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_RecordSetInput(input: Integer; flags: DWORD; volume: Single): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_RecordGetInput(input: Integer; var volume: Single): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_RecordStart(freq, chans, flags: DWORD; proc: RECORDPROC; user: Pointer): HRECORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; + +function BASS_ChannelBytes2Seconds(handle: DWORD; pos: QWORD): Double; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};external bassdll; +function BASS_ChannelSeconds2Bytes(handle: DWORD; pos: Double): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};external bassdll; +function BASS_ChannelGetDevice(handle: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelSetDevice(handle, device: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelIsActive(handle: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};external bassdll; +function BASS_ChannelGetInfo(handle: DWORD; var info: BASS_CHANNELINFO):BOOL;{$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};external bassdll; +function BASS_ChannelGetTags(handle: HSTREAM; tags: DWORD): PAnsiChar; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelFlags(handle, flags, mask: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelUpdate(handle, length: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelLock(handle: DWORD; lock: BOOL): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelPlay(handle: DWORD; restart: BOOL): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelStop(handle: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelPause(handle: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelSetAttribute(handle, attrib: DWORD; value: Single): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelGetAttribute(handle, attrib: DWORD; var value: Single): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelSlideAttribute(handle, attrib: DWORD; value: Single; time: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelIsSliding(handle, attrib: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};external bassdll; +function BASS_ChannelSetAttributeEx(handle, attrib: DWORD; value: Pointer; size: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};external bassdll; +function BASS_ChannelGetAttributeEx(handle, attrib: DWORD; value: Pointer; size: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};external bassdll; +function BASS_ChannelSet3DAttributes(handle: DWORD; mode: Integer; min, max: Single; iangle, oangle, outvol: Integer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelGet3DAttributes(handle: DWORD; var mode: DWORD; var min, max: Single; var iangle, oangle, outvol: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelSet3DPosition(handle: DWORD; var pos, orient, vel: BASS_3DVECTOR): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelGet3DPosition(handle: DWORD; var pos, orient, vel: BASS_3DVECTOR): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelGetLength(handle, mode: DWORD): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelSetPosition(handle: DWORD; pos: QWORD; mode: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelGetPosition(handle, mode: DWORD): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelGetLevel(handle: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelGetLevelEx(handle: DWORD; levels: PSingle; length: Single; flags: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelGetData(handle: DWORD; buffer: Pointer; length: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelSetSync(handle: DWORD; type_: DWORD; param: QWORD; proc: SYNCPROC; user: Pointer): HSYNC; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelRemoveSync(handle: DWORD; sync: HSYNC): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelSetDSP(handle: DWORD; proc: DSPPROC; user: Pointer; priority: Integer): HDSP; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelRemoveDSP(handle: DWORD; dsp: HDSP): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelSetLink(handle, chan: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelRemoveLink(handle, chan: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelSetFX(handle, type_: DWORD; priority: Integer): HFX; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_ChannelRemoveFX(handle: DWORD; fx: HFX): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; + +function BASS_FXSetParameters(handle: HFX; par: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_FXGetParameters(handle: HFX; par: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_FXReset(handle: HFX): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; +function BASS_FXSetPriority(handle: HFX; priority: Integer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll; + + +function BASS_SPEAKER_N(n: DWORD): DWORD; +{$IFDEF MSWINDOWS} +function BASS_SetEAXPreset(env: Integer): BOOL; +{ + This function is defined in the implementation part of this unit. + It is not part of BASS.DLL but an extra function which makes it easier + to set the predefined EAX environments. + env : a EAX_ENVIRONMENT_xxx constant +} +{$ENDIF} + + +implementation + +function BASS_SPEAKER_N(n: DWORD): DWORD; +begin + Result := n shl 24; +end; + +{$IFDEF MSWINDOWS} +function BASS_SetEAXPreset(env: Integer): BOOL; +begin + case (env) of + EAX_ENVIRONMENT_GENERIC: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_GENERIC, 0.5, 1.493, 0.5); + EAX_ENVIRONMENT_PADDEDCELL: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PADDEDCELL, 0.25, 0.1, 0); + EAX_ENVIRONMENT_ROOM: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_ROOM, 0.417, 0.4, 0.666); + EAX_ENVIRONMENT_BATHROOM: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_BATHROOM, 0.653, 1.499, 0.166); + EAX_ENVIRONMENT_LIVINGROOM: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_LIVINGROOM, 0.208, 0.478, 0); + EAX_ENVIRONMENT_STONEROOM: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_STONEROOM, 0.5, 2.309, 0.888); + EAX_ENVIRONMENT_AUDITORIUM: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_AUDITORIUM, 0.403, 4.279, 0.5); + EAX_ENVIRONMENT_CONCERTHALL: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CONCERTHALL, 0.5, 3.961, 0.5); + EAX_ENVIRONMENT_CAVE: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CAVE, 0.5, 2.886, 1.304); + EAX_ENVIRONMENT_ARENA: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_ARENA, 0.361, 7.284, 0.332); + EAX_ENVIRONMENT_HANGAR: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_HANGAR, 0.5, 10.0, 0.3); + EAX_ENVIRONMENT_CARPETEDHALLWAY: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CARPETEDHALLWAY, 0.153, 0.259, 2.0); + EAX_ENVIRONMENT_HALLWAY: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_HALLWAY, 0.361, 1.493, 0); + EAX_ENVIRONMENT_STONECORRIDOR: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_STONECORRIDOR, 0.444, 2.697, 0.638); + EAX_ENVIRONMENT_ALLEY: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_ALLEY, 0.25, 1.752, 0.776); + EAX_ENVIRONMENT_FOREST: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_FOREST, 0.111, 3.145, 0.472); + EAX_ENVIRONMENT_CITY: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CITY, 0.111, 2.767, 0.224); + EAX_ENVIRONMENT_MOUNTAINS: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_MOUNTAINS, 0.194, 7.841, 0.472); + EAX_ENVIRONMENT_QUARRY: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_QUARRY, 1, 1.499, 0.5); + EAX_ENVIRONMENT_PLAIN: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PLAIN, 0.097, 2.767, 0.224); + EAX_ENVIRONMENT_PARKINGLOT: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PARKINGLOT, 0.208, 1.652, 1.5); + EAX_ENVIRONMENT_SEWERPIPE: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_SEWERPIPE, 0.652, 2.886, 0.25); + EAX_ENVIRONMENT_UNDERWATER: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_UNDERWATER, 1, 1.499, 0); + EAX_ENVIRONMENT_DRUGGED: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_DRUGGED, 0.875, 8.392, 1.388); + EAX_ENVIRONMENT_DIZZY: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_DIZZY, 0.139, 17.234, 0.666); + EAX_ENVIRONMENT_PSYCHOTIC: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PSYCHOTIC, 0.486, 7.563, 0.806); + else + Result := FALSE; + end; +end; +{$ENDIF} + +end. + diff --git a/bass-sys/linux/bass24/plugins/makefile b/bass-sys/linux/bass24/plugins/makefile new file mode 100644 index 0000000..1197843 --- /dev/null +++ b/bass-sys/linux/bass24/plugins/makefile @@ -0,0 +1,9 @@ +TARGET = plugins +PACKAGES = gtk+-2.0 libglade-2.0 + +include ../makefile.in + +all: $(TARGET) + +clean: + $(RM) $(TARGET) diff --git a/bass-sys/linux/bass24/plugins/plugins.c b/bass-sys/linux/bass24/plugins/plugins.c new file mode 100644 index 0000000..35c1eda --- /dev/null +++ b/bass-sys/linux/bass24/plugins/plugins.c @@ -0,0 +1,225 @@ +/* + BASS plugin test + Copyright (c) 2005-2009 Un4seen Developments Ltd. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include "bass.h" + +// path to glade file +#ifndef GLADE_PATH +#define GLADE_PATH "" +#endif + +GladeXML *glade; +GtkWidget *win = 0; +GtkWidget *filesel; + +DWORD chan; // the channel... HMUSIC or HSTREAM + +// display error messages +void Error(const char *es) +{ + GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(win), GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s\n(error code: %d)", es, BASS_ErrorGetCode()); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); +} + +// translate a CTYPE value to text +const char *GetCTypeString(DWORD ctype, HPLUGIN plugin) +{ + if (plugin) { // using a plugin + const BASS_PLUGININFO *pinfo = BASS_PluginGetInfo(plugin); // get plugin info + int a; + for (a = 0; a < pinfo->formatc; a++) { + if (pinfo->formats[a].ctype == ctype) // found a "ctype" match... + return pinfo->formats[a].name; // return it's name + } + } + // check built-in stream formats... + if (ctype == BASS_CTYPE_STREAM_OGG) return "Ogg Vorbis"; + if (ctype == BASS_CTYPE_STREAM_MP1) return "MPEG layer 1"; + if (ctype == BASS_CTYPE_STREAM_MP2) return "MPEG layer 2"; + if (ctype == BASS_CTYPE_STREAM_MP3) return "MPEG layer 3"; + if (ctype == BASS_CTYPE_STREAM_AIFF) return "Audio IFF"; + if (ctype == BASS_CTYPE_STREAM_WAV_PCM) return "PCM WAVE"; + if (ctype == BASS_CTYPE_STREAM_WAV_FLOAT) return "Floating-point WAVE"; + if (ctype & BASS_CTYPE_STREAM_WAV) return "WAVE"; + return "?"; +} + +#define GetWidget(id) glade_xml_get_widget(glade,id) + +void WindowDestroy(GtkObject *obj, gpointer data) +{ + gtk_main_quit(); +} + +gboolean FileExtensionFilter(const GtkFileFilterInfo *info, gpointer data) +{ + return !regexec((regex_t*)data, info->filename, 0, NULL, 0); +} + +void OpenClicked(GtkButton *obj, gpointer data) +{ + int resp = gtk_dialog_run(GTK_DIALOG(filesel)); + gtk_widget_hide(filesel); + if (resp == GTK_RESPONSE_ACCEPT) { + char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filesel)); + BASS_StreamFree(chan); // free old stream before opening new + if (!(chan = BASS_StreamCreateFile(FALSE, file, 0, 0, BASS_SAMPLE_LOOP))) { + gtk_button_set_label(obj, "click here to open a file..."); + gtk_label_set_text(GTK_LABEL(GetWidget("info")), ""); + gtk_range_set_range(GTK_RANGE(GetWidget("position")), 0, 0); + Error("Can't play the file"); + } else { + gtk_button_set_label(obj, file); + { // display the file type and length + char text[100]; + QWORD bytes = BASS_ChannelGetLength(chan, BASS_POS_BYTE); + DWORD time = BASS_ChannelBytes2Seconds(chan, bytes); + BASS_CHANNELINFO info; + BASS_ChannelGetInfo(chan, &info); + sprintf(text, "channel type = %x (%s)\nlength = %llu (%u:%02u)", + info.ctype, GetCTypeString(info.ctype, info.plugin), bytes, time / 60, time % 60); + gtk_label_set_text(GTK_LABEL(GetWidget("info")), text); + gtk_range_set_range(GTK_RANGE(GetWidget("position")), 0, time); // update scroller range + } + BASS_ChannelPlay(chan, FALSE); + } + g_free(file); + } +} + +gboolean PositionChange(GtkRange *range, GtkScrollType scroll, gdouble value, gpointer data) +{ + BASS_ChannelSetPosition(chan, BASS_ChannelSeconds2Bytes(chan, value), BASS_POS_BYTE); + return FALSE; +} + +gboolean TimerProc(gpointer data) +{ + gtk_range_set_value(GTK_RANGE(GetWidget("position")), BASS_ChannelBytes2Seconds(chan, BASS_ChannelGetPosition(chan, BASS_POS_BYTE))); // update position + return TRUE; +} + +int main(int argc, char* argv[]) +{ + gtk_init(&argc, &argv); + + // check the correct BASS was loaded + if (HIWORD(BASS_GetVersion()) != BASSVERSION) { + Error("An incorrect version of BASS was loaded"); + return 0; + } + + // initialize default output device + if (!BASS_Init(-1, 44100, 0, NULL, NULL)) { + Error("Can't initialize device"); + return 0; + } + + // initialize GUI + glade = glade_xml_new(GLADE_PATH"plugins.glade", NULL, NULL); + if (!glade) return 0; + win = GetWidget("window1"); + if (!win) return 0; + glade_xml_signal_autoconnect(glade); + + { // setup plugin list and file selector + GtkTreeView *list = GTK_TREE_VIEW(GetWidget("plugins")); + GtkTreeViewColumn *col = gtk_tree_view_column_new(); + gtk_tree_view_append_column(list, col); + GtkCellRenderer *renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(col, renderer, TRUE); + gtk_tree_view_column_add_attribute(col, renderer, "text", 0); + GtkListStore *liststore = gtk_list_store_new(1, G_TYPE_STRING); + gtk_tree_view_set_model(list, GTK_TREE_MODEL(liststore)); + g_object_unref(liststore); + gtk_tree_selection_set_mode(gtk_tree_view_get_selection(list), GTK_SELECTION_NONE); + + GtkFileFilter *filter; + regex_t *fregex; + filesel = gtk_file_chooser_dialog_new("Open File", GTK_WINDOW(win), GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "BASS built-in (*.wav;*.aif;*.mp3;*.mp2;*.mp1;*.ogg)"); + fregex = malloc(sizeof(*fregex)); + regcomp(fregex, "\\.(mp[1-3]|ogg|wav|aif)$", REG_ICASE | REG_NOSUB | REG_EXTENDED); + gtk_file_filter_add_custom(filter, GTK_FILE_FILTER_FILENAME, FileExtensionFilter, fregex, NULL); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + { // look for plugins (in the executable's directory) + glob_t g; + char path[300]; + if (readlink("/proc/self/exe", path, 300) <= 0) { + Error("Can't locate executable"); + return 0; + } + strcpy(strrchr(path, '/') + 1, "libbass*.so"); + if (!glob(path, 0, 0, &g)) { + int a; + for (a = 0; a < g.gl_pathc; a++) { + HPLUGIN plug; + if (plug = BASS_PluginLoad(g.gl_pathv[a], 0)) { // plugin loaded... + // add it to the list + char *file = strrchr(g.gl_pathv[a], '/') + 1; + GtkTreeIter it; + gtk_list_store_append(liststore, &it); + gtk_list_store_set(liststore, &it, 0, file, -1); + // get plugin info to add to the file selector filter + const BASS_PLUGININFO *pinfo = BASS_PluginGetInfo(plug); + int b; + for (b = 0; b < pinfo->formatc; b++) { + char buf[300], *p; + filter = gtk_file_filter_new(); + sprintf(buf, "%s (%s) - %s", pinfo->formats[b].name, pinfo->formats[b].exts, file); + gtk_file_filter_set_name(filter, buf); + // build filter regex + sprintf(buf, "\\.(%s)$", pinfo->formats[b].exts); + while (p = strchr(buf, '*')) { // find an extension + if (p[-1] == ';') // not the first... + p[-1] = '|'; // add an alternation + memmove(p, p + 2, strlen(p + 2) + 1); // remove the "*." + } + fregex = malloc(sizeof(*fregex)); + regcomp(fregex, buf, REG_ICASE | REG_NOSUB | REG_EXTENDED); + gtk_file_filter_add_custom(filter, GTK_FILE_FILTER_FILENAME, FileExtensionFilter, fregex, NULL); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + } + } + } + globfree(&g); + } + { + GtkTreeIter it; + if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(liststore), &it)) { // no plugins... + gtk_list_store_append(liststore, &it); + gtk_list_store_set(liststore, &it, 0, "no plugins - visit the BASS webpage to get some", -1); + } + } + } + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "All files"); + gtk_file_filter_add_pattern(filter, "*"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + } + + g_timeout_add(500, TimerProc, NULL); + + gtk_main(); + + gtk_widget_destroy(filesel); + + // "free" the output device and all plugins + BASS_Free(); + BASS_PluginFree(0); + + return 0; +} diff --git a/bass-sys/linux/bass24/plugins/plugins.glade b/bass-sys/linux/bass24/plugins/plugins.glade new file mode 100644 index 0000000..8e7cac7 --- /dev/null +++ b/bass-sys/linux/bass24/plugins/plugins.glade @@ -0,0 +1,89 @@ + + + + + 400 + True + 5 + BASS plugin test + False + GTK_WIN_POS_CENTER + + + + True + 5 + + + True + 0 + GTK_SHADOW_OUT + + + True + 6 + 10 + 10 + 10 + + + 100 + True + True + False + True + + + + + + + True + Loaded plugins + True + + + label_item + + + + + + + True + True + True + click here to open a file... + 0 + + + + False + 10 + 1 + + + + + True + + + 2 + + + + + True + True + 0 0 0 1 10 0 + False + + + + 3 + + + + + + diff --git a/bass-sys/linux/bass24/rectest/makefile b/bass-sys/linux/bass24/rectest/makefile new file mode 100644 index 0000000..e7c1d2d --- /dev/null +++ b/bass-sys/linux/bass24/rectest/makefile @@ -0,0 +1,9 @@ +TARGET = rectest +PACKAGES = gtk+-2.0 libglade-2.0 + +include ../makefile.in + +all: $(TARGET) + +clean: + $(RM) $(TARGET) diff --git a/bass-sys/linux/bass24/rectest/rectest.c b/bass-sys/linux/bass24/rectest/rectest.c new file mode 100644 index 0000000..70145ee --- /dev/null +++ b/bass-sys/linux/bass24/rectest/rectest.c @@ -0,0 +1,276 @@ +/* + BASS recording example + Copyright (c) 2002-2019 Un4seen Developments Ltd. +*/ + +#include +#include +#include +#include +#include +#include "bass.h" + +// path to glade file +#ifndef GLADE_PATH +#define GLADE_PATH "" +#endif + +GladeXML *glade; +GtkWidget *win = 0; +GtkWidget *filesel; // file selector + +#define FREQ 44100 +#define CHANS 2 +#define BUFSTEP 200000 // memory allocation unit + +int input; // current input source +char *recbuf = NULL; // recording buffer +DWORD reclen; // recording length + +HRECORD rchan = 0; // recording channel +HSTREAM chan = 0; // playback channel + +// display error messages +void Error(const char *es) +{ + GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(win), GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s\n(error code: %d)", es, BASS_ErrorGetCode()); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); +} + +#define GetWidget(id) glade_xml_get_widget(glade,id) + +void WindowDestroy(GtkObject *obj, gpointer data) +{ + gtk_main_quit(); +} + +// buffer the recorded data +BOOL CALLBACK RecordingCallback(HRECORD handle, const void *buffer, DWORD length, void *user) +{ + // increase buffer size if needed + if ((reclen % BUFSTEP) + length >= BUFSTEP) { + recbuf = realloc(recbuf, ((reclen + length) / BUFSTEP + 1) * BUFSTEP); + if (!recbuf) { + rchan = 0; + Error("Out of memory!"); + gtk_button_set_label(GTK_BUTTON(GetWidget("record")), "Record"); + return FALSE; // stop recording + } + } + // buffer the data + memcpy(recbuf + reclen, buffer, length); + reclen += length; + return TRUE; // continue recording +} + +void StartRecording() +{ + WAVEFORMATEX *wf; + if (recbuf) { // free old recording + BASS_StreamFree(chan); + chan = 0; + free(recbuf); + recbuf = NULL; + gtk_widget_set_sensitive(GetWidget("play"), FALSE); + gtk_widget_set_sensitive(GetWidget("save"), FALSE); + } + // allocate initial buffer and make space for WAVE header + recbuf = malloc(BUFSTEP); + reclen = 44; + // fill the WAVE header + memcpy(recbuf, "RIFF\0\0\0\0WAVEfmt \20\0\0\0", 20); + memcpy(recbuf + 36, "data\0\0\0\0", 8); + wf = (WAVEFORMATEX*)(recbuf + 20); + wf->wFormatTag = 1; + wf->nChannels = CHANS; + wf->wBitsPerSample = 16; + wf->nSamplesPerSec = FREQ; + wf->nBlockAlign = wf->nChannels * wf->wBitsPerSample / 8; + wf->nAvgBytesPerSec = wf->nSamplesPerSec * wf->nBlockAlign; + // start recording + rchan = BASS_RecordStart(FREQ, CHANS, 0, RecordingCallback, 0); + if (!rchan) { + Error("Can't start recording"); + free(recbuf); + recbuf = 0; + return; + } + gtk_button_set_label(GTK_BUTTON(GetWidget("record")), "Stop"); +} + +void StopRecording() +{ + BASS_ChannelStop(rchan); + rchan = 0; + gtk_button_set_label(GTK_BUTTON(GetWidget("record")), "Record"); + // complete the WAVE header + *(DWORD*)(recbuf + 4) = reclen - 8; + *(DWORD*)(recbuf + 40) = reclen - 44; + // enable "save" button + gtk_widget_set_sensitive(GetWidget("save"), TRUE); + // create a stream from the recording + if (chan = BASS_StreamCreateFile(TRUE, recbuf, 0, reclen, 0)) + gtk_widget_set_sensitive(GetWidget("play"), TRUE); // enable "play" button +} + +gboolean FileExtensionFilter(const GtkFileFilterInfo *info, gpointer data) +{ + return !regexec((regex_t*)data, info->filename, 0, NULL, 0); +} + +// write the recorded data to disk +void WriteToDisk() +{ + int resp = gtk_dialog_run(GTK_DIALOG(filesel)); + gtk_widget_hide(filesel); + if (resp == GTK_RESPONSE_ACCEPT) { + char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filesel)); + FILE *fp = fopen(file, "wb"); + if (fp) { + fwrite(recbuf, reclen, 1, fp); + fclose(fp); + } else + Error("Can't create the file"); + g_free(file); + } +} + +void UpdateInputInfo() +{ + float level; + int r = BASS_RecordGetInput(input, &level); // get info on the input + if (r == -1 || level < 0) { // failed + r = BASS_RecordGetInput(-1, &level); // try master input instead + if (r == -1 || level < 0) level = 1; // that failed too, just display 100% + } + gtk_range_set_value(GTK_RANGE(GetWidget("level")), level * 100); // set the level slider +} + +void RecordClicked(GtkButton *obj, gpointer data) +{ + if (!rchan) + StartRecording(); + else + StopRecording(); +} + +void PlayClicked(GtkButton *obj, gpointer data) +{ + BASS_ChannelPlay(chan, TRUE); // play the recorded data +} + +void SaveClicked(GtkButton *obj, gpointer data) +{ + WriteToDisk(); +} + +void InputChanged(GtkComboBox *obj, gpointer data) +{ + int i; + input = gtk_combo_box_get_active(obj); // get the selection + // enable the selected input + for (i = 0; BASS_RecordSetInput(i, BASS_INPUT_OFF, -1); i++); // 1st disable all inputs, then... + BASS_RecordSetInput(input, BASS_INPUT_ON, -1); // enable the selected + UpdateInputInfo(); // update info +} + +void LevelChanged(GtkRange *range, gpointer data) +{ + double level = gtk_range_get_value(range) / 100; + if (!BASS_RecordSetInput(input, 0, level)) // failed to set input level + BASS_RecordSetInput(-1, 0, level); // try master level instead +} + +gboolean TimerProc(gpointer data) +{ // update the recording/playback counter + char text[30] = ""; + if (rchan) { // recording + if (!BASS_ChannelIsActive(rchan)) { // the recording has stopped, eg. unplugged device + StopRecording(); + Error("The recording stopped"); + return TRUE; + } + sprintf(text, "%d", reclen - 44); + } else if (chan) { + if (BASS_ChannelIsActive(chan)) // playing + sprintf(text, "%lld / %lld", BASS_ChannelGetPosition(chan, BASS_POS_BYTE), BASS_ChannelGetLength(chan, BASS_POS_BYTE)); + else + sprintf(text, "%lld", BASS_ChannelGetLength(chan, BASS_POS_BYTE)); + } + gtk_label_set(GTK_LABEL(GetWidget("status")), text); + return TRUE; +} + +int main(int argc, char* argv[]) +{ + regex_t fregex; + + gtk_init(&argc, &argv); + + // check the correct BASS was loaded + if (HIWORD(BASS_GetVersion()) != BASSVERSION) { + Error("An incorrect version of BASS was loaded"); + return 0; + } + + // initalize default recording device + if (!BASS_RecordInit(-1)) { + Error("Can't initialize recording device"); + return 0; + } + // initialize default output device + if (!BASS_Init(-1, FREQ, 0, NULL, NULL)) + Error("Can't initialize output device"); + + // initialize GUI + glade = glade_xml_new(GLADE_PATH"rectest.glade", NULL, NULL); + if (!glade) return 0; + win = GetWidget("window1"); + if (!win) return 0; + glade_xml_signal_autoconnect(glade); + + { // get list of inputs + int c; + const char *i; + GtkComboBox *list = GTK_COMBO_BOX(GetWidget("input")); + for (c = 0; i = BASS_RecordGetInputName(c); c++) { + gtk_combo_box_append_text(list, i); + if (!(BASS_RecordGetInput(c, NULL) & BASS_INPUT_OFF)) { // this 1 is currently "on" + input = c; + gtk_combo_box_set_active(list, input); + UpdateInputInfo(); // display info + } + } + } + + { // initialize file selector + GtkFileFilter *filter; + filesel = gtk_file_chooser_dialog_new("Save File", GTK_WINDOW(win), GTK_FILE_CHOOSER_ACTION_SAVE, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL); + gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(filesel), TRUE); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "WAV files"); + regcomp(&fregex, "\\.wav$", REG_ICASE | REG_NOSUB | REG_EXTENDED); + gtk_file_filter_add_custom(filter, GTK_FILE_FILTER_FILENAME, FileExtensionFilter, &fregex, NULL); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "All files"); + gtk_file_filter_add_pattern(filter, "*"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + } + + g_timeout_add(200, TimerProc, NULL); + + gtk_main(); + + gtk_widget_destroy(filesel); + regfree(&fregex); + + // release all BASS stuff + BASS_RecordFree(); + BASS_Free(); + + return 0; +} diff --git a/bass-sys/linux/bass24/rectest/rectest.glade b/bass-sys/linux/bass24/rectest/rectest.glade new file mode 100644 index 0000000..6d2de2a --- /dev/null +++ b/bass-sys/linux/bass24/rectest/rectest.glade @@ -0,0 +1,128 @@ + + + + + 400 + True + 5 + BASS recording test + False + GTK_WIN_POS_CENTER + + + + True + 5 + + + True + 5 + + + True + + + + + + + True + True + 0 0 100 1 10 0 + False + + + + 1 + + + + + + + True + 5 + + + True + 5 + + + True + True + True + Record + 0 + + + + + + True + False + True + True + Play + 0 + + + + 1 + + + + + True + False + True + True + Save + 0 + + + + 2 + + + + + False + + + + + True + 0 + 0 + GTK_SHADOW_OUT + + + True + + + 250 + True + + + + + + + + label_item + + + + + 1 + + + + + 1 + + + + + + diff --git a/bass-sys/linux/bass24/speakers/makefile b/bass-sys/linux/bass24/speakers/makefile new file mode 100644 index 0000000..2d077bc --- /dev/null +++ b/bass-sys/linux/bass24/speakers/makefile @@ -0,0 +1,9 @@ +TARGET = speakers +PACKAGES = gtk+-2.0 libglade-2.0 + +include ../makefile.in + +all: $(TARGET) + +clean: + $(RM) $(TARGET) diff --git a/bass-sys/linux/bass24/speakers/speakers.c b/bass-sys/linux/bass24/speakers/speakers.c new file mode 100644 index 0000000..43a9bf8 --- /dev/null +++ b/bass-sys/linux/bass24/speakers/speakers.c @@ -0,0 +1,158 @@ +/* + BASS multi-speaker example + Copyright (c) 2003-2009 Un4seen Developments Ltd. +*/ + +#include +#include +#include +#include +#include +#include "bass.h" + +// path to glade file +#ifndef GLADE_PATH +#define GLADE_PATH "" +#endif + +GladeXML *glade; +GtkWidget *win = 0; +GtkWidget *filesel; + +DWORD flags[4] = { BASS_SPEAKER_FRONT,BASS_SPEAKER_REAR,BASS_SPEAKER_CENLFE,BASS_SPEAKER_REAR2 }; +HSTREAM chan[4]; + +// display error messages +void Error(const char *es) +{ + GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(win), GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s\n(error code: %d)", es, BASS_ErrorGetCode()); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); +} + +#define GetWidget(id) glade_xml_get_widget(glade,id) + +void WindowDestroy(GtkObject *obj, gpointer data) +{ + gtk_main_quit(); +} + +gboolean FileExtensionFilter(const GtkFileFilterInfo *info, gpointer data) +{ + return !regexec((regex_t*)data, info->filename, 0, NULL, 0); +} + +void OpenClicked(GtkButton *obj, gpointer data) +{ + int resp = gtk_dialog_run(GTK_DIALOG(filesel)); + gtk_widget_hide(filesel); + if (resp == GTK_RESPONSE_ACCEPT) { + char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filesel)); + const gchar *objname = gtk_widget_get_name(GTK_WIDGET(obj)); + int speaker = atoi(objname + 4) - 1; // get speaker pair number from button name ("openX") + BASS_StreamFree(chan[speaker]); // free old stream before opening new + if (!(chan[speaker] = BASS_StreamCreateFile(FALSE, file, 0, 0, flags[speaker] | BASS_SAMPLE_LOOP))) { + gtk_button_set_label(obj, "click here to open a file..."); + Error("Can't play the file"); + } else { + gtk_button_set_label(obj, file); + BASS_ChannelPlay(chan[speaker], FALSE); + } + g_free(file); + } +} + +void SwapClicked(GtkButton *obj, gpointer data) +{ + const gchar *objname = gtk_widget_get_name(GTK_WIDGET(obj)); + int speaker = atoi(objname + 4) - 1; // get speaker pair number from button name ("swapX") + { // swap handles + HSTREAM temp = chan[speaker]; + chan[speaker] = chan[speaker + 1]; + chan[speaker + 1] = temp; + } + { // swap text + GtkButton *open1, *open2; + char bname[10], *temp; + sprintf(bname, "open%d", 1 + speaker); + open1 = GTK_BUTTON(GetWidget(bname)); + sprintf(bname, "open%d", 1 + speaker + 1); + open2 = GTK_BUTTON(GetWidget(bname)); + temp = strdup(gtk_button_get_label(open1)); + gtk_button_set_label(open1, gtk_button_get_label(open2)); + gtk_button_set_label(open2, temp); + free(temp); + } + // update the channel devices + BASS_ChannelFlags(chan[speaker], flags[speaker], BASS_SPEAKER_FRONT); + BASS_ChannelFlags(chan[speaker + 1], flags[speaker + 1], BASS_SPEAKER_FRONT); +} + +int main(int argc, char* argv[]) +{ + regex_t fregex; + + gtk_init(&argc, &argv); + + // check the correct BASS was loaded + if (HIWORD(BASS_GetVersion()) != BASSVERSION) { + Error("An incorrect version of BASS was loaded"); + return 0; + } + + // initialize default device + if (!BASS_Init(-1, 44100, 0, NULL, NULL)) { + Error("Can't initialize device"); + return 0; + } + + // initialize GUI + glade = glade_xml_new(GLADE_PATH"speakers.glade", NULL, NULL); + if (!glade) return 0; + win = GetWidget("window1"); + if (!win) return 0; + glade_xml_signal_autoconnect(glade); + + { // check how many speakers the device supports + BASS_INFO i; + BASS_GetInfo(&i); + if (i.speakers < 8) { + gtk_widget_set_sensitive(GetWidget("open4"), FALSE); + gtk_widget_set_sensitive(GetWidget("swap3"), FALSE); + } + if (i.speakers < 6) { + gtk_widget_set_sensitive(GetWidget("open3"), FALSE); + gtk_widget_set_sensitive(GetWidget("swap2"), FALSE); + } + if (i.speakers < 4) { + gtk_widget_set_sensitive(GetWidget("open2"), FALSE); + gtk_widget_set_sensitive(GetWidget("swap1"), FALSE); + } + } + + { // initialize file selector + GtkFileFilter *filter; + filesel = gtk_file_chooser_dialog_new("Open File", GTK_WINDOW(win), GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "Playable files"); + regcomp(&fregex, "\\.(mo3|xm|mod|s3m|it|umx|mp[1-3]|ogg|wav|aif)$", REG_ICASE | REG_NOSUB | REG_EXTENDED); + gtk_file_filter_add_custom(filter, GTK_FILE_FILTER_FILENAME, FileExtensionFilter, &fregex, NULL); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "All files"); + gtk_file_filter_add_pattern(filter, "*"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + } + + gtk_widget_show(win); + gtk_main(); + + gtk_widget_destroy(filesel); + regfree(&fregex); + + BASS_Free(); + + return 0; +} diff --git a/bass-sys/linux/bass24/speakers/speakers.glade b/bass-sys/linux/bass24/speakers/speakers.glade new file mode 100644 index 0000000..055c1a2 --- /dev/null +++ b/bass-sys/linux/bass24/speakers/speakers.glade @@ -0,0 +1,282 @@ + + + + + 450 + 5 + BASS multi-speaker example + False + GTK_WIN_POS_CENTER + + + + True + 5 + + + True + 0 + GTK_SHADOW_OUT + + + True + 6 + 10 + 10 + 10 + + + True + 5 + + + True + True + True + click here to open a file... + 0 + + + + + + + + + + True + 1 - front + True + + + label_item + + + + + False + + + + + True + + + + + + True + True + True + swap + 0 + + + + False + 10 + GTK_PACK_END + 1 + + + + + 1 + + + + + True + 0 + GTK_SHADOW_OUT + + + True + 6 + 10 + 10 + 10 + + + True + 5 + + + True + True + True + click here to open a file... + 0 + + + + + + + + + + True + 2 - rear + True + + + label_item + + + + + False + 2 + + + + + True + + + + + + True + True + True + swap + 0 + + + + False + 10 + GTK_PACK_END + 1 + + + + + 3 + + + + + True + 0 + GTK_SHADOW_OUT + + + True + 6 + 10 + 10 + 10 + + + True + 5 + + + True + True + True + click here to open a file... + 0 + + + + + + + + + + True + 3 - center/FLE + True + + + label_item + + + + + False + 4 + + + + + True + + + + + + True + True + True + swap + 0 + + + + False + 10 + GTK_PACK_END + 1 + + + + + 5 + + + + + True + 0 + GTK_SHADOW_OUT + + + True + 6 + 10 + 10 + 10 + + + True + 5 + + + True + True + True + click here to open a file... + 0 + + + + + + + + + + True + 4 - rear center + True + + + label_item + + + + + False + 6 + + + + + + diff --git a/bass-sys/linux/bass24/spectrum/makefile b/bass-sys/linux/bass24/spectrum/makefile new file mode 100644 index 0000000..847abdb --- /dev/null +++ b/bass-sys/linux/bass24/spectrum/makefile @@ -0,0 +1,9 @@ +TARGET = spectrum +PACKAGES = gtk+-2.0 + +include ../makefile.in + +all: $(TARGET) + +clean: + $(RM) $(TARGET) diff --git a/bass-sys/linux/bass24/spectrum/spectrum.c b/bass-sys/linux/bass24/spectrum/spectrum.c new file mode 100644 index 0000000..25d98de --- /dev/null +++ b/bass-sys/linux/bass24/spectrum/spectrum.c @@ -0,0 +1,241 @@ +/* + BASS spectrum analyser example + Copyright (c) 2002-2012 Un4seen Developments Ltd. +*/ + +#include +#include +#include +#include +#include "bass.h" + +#define SPECWIDTH 368 // display width (should be multiple of 4) +#define SPECHEIGHT 127 // height (changing requires palette adjustments too) + +#pragma pack(1) +typedef struct { + BYTE rgbRed, rgbGreen, rgbBlue; +} RGB; +#pragma pack() + +GtkWidget *win = 0; + +DWORD chan; + +GtkWidget *speci; +GdkPixbuf *specpb; +RGB palette[256]; + +int specmode = 0, specpos = 0; // spectrum mode (and marker pos for 2nd mode) + +// display error messages +void Error(const char *es) +{ + GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(win), GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s\n(error code: %d)", es, BASS_ErrorGetCode()); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); +} + +void WindowDestroy(GtkObject *obj, gpointer data) +{ + gtk_main_quit(); +} + +void WindowButtonRelease(GtkWidget *obj, GdkEventButton *event, gpointer data) +{ + if (event->type == GDK_BUTTON_RELEASE) { + RGB *specbuf = (RGB*)gdk_pixbuf_get_pixels(specpb); + specmode = (specmode + 1) % 4; // next spectrum mode + memset(specbuf, 0, SPECWIDTH * SPECHEIGHT * sizeof(*specbuf)); // clear display + } +} + +gboolean FileExtensionFilter(const GtkFileFilterInfo *info, gpointer data) +{ + return !regexec((regex_t*)data, info->filename, 0, NULL, 0); +} + +// select a file to play, and play it +BOOL PlayFile() +{ + BOOL ret = FALSE; + regex_t fregex; + GtkWidget *filesel; // file selector + GtkFileFilter *filter; + filesel = gtk_file_chooser_dialog_new("Open File", GTK_WINDOW(win), GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "Playable files"); + regcomp(&fregex, "\\.(mo3|xm|mod|s3m|it|umx|mp[1-3]|ogg|wav|aif)$", REG_ICASE | REG_NOSUB | REG_EXTENDED); + gtk_file_filter_add_custom(filter, GTK_FILE_FILTER_FILENAME, FileExtensionFilter, &fregex, NULL); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "All files"); + gtk_file_filter_add_pattern(filter, "*"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filesel), filter); + if (gtk_dialog_run(GTK_DIALOG(filesel)) == GTK_RESPONSE_ACCEPT) { + char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filesel)); + gtk_widget_hide(filesel); + if (!(chan = BASS_StreamCreateFile(FALSE, file, 0, 0, BASS_SAMPLE_LOOP)) + && !(chan = BASS_MusicLoad(FALSE, file, 0, 0, BASS_MUSIC_RAMP | BASS_SAMPLE_LOOP, 1))) { + Error("Can't play file"); + } else { + BASS_ChannelPlay(chan, FALSE); + ret = TRUE; + } + g_free(file); + } + gtk_widget_destroy(filesel); + return ret; +} + +// update the spectrum display - the interesting bit :) +gboolean UpdateSpectrum(gpointer data) +{ + int x, y, y1; + RGB *specbuf = (RGB*)gdk_pixbuf_get_pixels(specpb); + + if (specmode == 3) { // waveform + int c; + float *buf; + BASS_CHANNELINFO ci; + memset(specbuf, 0, SPECWIDTH * SPECHEIGHT * sizeof(*specbuf)); + BASS_ChannelGetInfo(chan, &ci); // get number of channels + buf = alloca(ci.chans * SPECWIDTH * sizeof(float)); // allocate buffer for data + BASS_ChannelGetData(chan, buf, (ci.chans * SPECWIDTH * sizeof(float)) | BASS_DATA_FLOAT); // get the sample data (floating-point to avoid 8 & 16 bit processing) + for (c = 0; c < ci.chans; c++) { + for (x = 0; x < SPECWIDTH; x++) { + int v = (1 - buf[x * ci.chans + c]) * SPECHEIGHT / 2; // invert and scale to fit display + if (v < 0) v = 0; + else if (v >= SPECHEIGHT) v = SPECHEIGHT - 1; + if (!x) y = v; + do { // draw line from previous sample... + if (y < v) y++; + else if (y > v) y--; + specbuf[y * SPECWIDTH + x] = palette[c & 1 ? 127 : 1]; // left=green, right=red (could add more colours to palette for more chans) + } while (y != v); + } + } + } else { + float fft[1024]; + BASS_ChannelGetData(chan, fft, BASS_DATA_FFT2048); // get the FFT data + + if (!specmode) { // "normal" FFT + memset(specbuf, 0, SPECWIDTH * SPECHEIGHT * sizeof(*specbuf)); + for (x = 0; x < SPECWIDTH / 2; x++) { +#if 1 + y = sqrt(fft[x + 1]) * 3 * SPECHEIGHT - 4; // scale it (sqrt to make low values more visible) +#else + y = fft[x + 1] * 10 * SPECHEIGHT; // scale it (linearly) +#endif + if (y > SPECHEIGHT) y = SPECHEIGHT; // cap it + if (x && (y1 = (y + y1) / 2)) // interpolate from previous to make the display smoother + while (--y1 >= 0) specbuf[(SPECHEIGHT - 1 - y1) * SPECWIDTH + x * 2 - 1] = palette[y1 + 1]; + y1 = y; + while (--y >= 0) specbuf[(SPECHEIGHT - 1 - y) * SPECWIDTH + x * 2] = palette[y + 1]; // draw level + } + } else if (specmode == 1) { // logarithmic, acumulate & average bins + int b0 = 0; + memset(specbuf, 0, SPECWIDTH * SPECHEIGHT * sizeof(*specbuf)); +#define BANDS 28 + for (x = 0; x < BANDS; x++) { + float peak = 0; + int b1 = pow(2, x * 10.0 / (BANDS - 1)); + if (b1 > 1023) b1 = 1023; + if (b1 <= b0) b1 = b0 + 1; // make sure it uses at least 1 FFT bin + for (; b0 < b1; b0++) + if (peak < fft[1 + b0]) peak = fft[1 + b0]; + y = sqrt(peak) * 3 * SPECHEIGHT - 4; // scale it (sqrt to make low values more visible) + if (y > SPECHEIGHT) y = SPECHEIGHT; // cap it + while (--y >= 0) + for (y1 = 0; y1 < SPECWIDTH / BANDS - 2; y1++) + specbuf[(SPECHEIGHT - 1 - y) * SPECWIDTH + x * (SPECWIDTH / BANDS) + y1] = palette[y + 1]; // draw bar + } + } else { // "3D" + for (x = 0; x < SPECHEIGHT; x++) { + y = sqrt(fft[x + 1]) * 3 * 127; // scale it (sqrt to make low values more visible) + if (y > 127) y = 127; // cap it + specbuf[(SPECHEIGHT - 1 - x) * SPECWIDTH + specpos] = palette[128 + y]; // plot it + } + // move marker onto next position + specpos = (specpos + 1) % SPECWIDTH; + for (x = 0; x < SPECHEIGHT; x++) specbuf[x * SPECWIDTH + specpos] = palette[255]; + } + } + + gtk_image_set_from_pixbuf(GTK_IMAGE(speci), specpb); // update the display + + return TRUE; +} + +int main(int argc, char* argv[]) +{ + gtk_init(&argc, &argv); + + // check the correct BASS was loaded + if (HIWORD(BASS_GetVersion()) != BASSVERSION) { + Error("An incorrect version of BASS was loaded"); + return 0; + } + + // initialize BASS + if (!BASS_Init(-1, 44100, 0, NULL, NULL)) { + Error("Can't initialize device"); + return 0; + } + + if (!PlayFile()) { // start a file playing + BASS_Free(); + return 0; + } + + // create the window + win = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_position(GTK_WINDOW(win), GTK_WIN_POS_CENTER); + gtk_window_set_resizable(GTK_WINDOW(win), FALSE); + gtk_window_set_title(GTK_WINDOW(win), "BASS spectrum example (click to toggle mode)"); + g_signal_connect(win, "destroy", GTK_SIGNAL_FUNC(WindowDestroy), NULL); + + GtkWidget *ebox = gtk_event_box_new(); + gtk_container_add(GTK_CONTAINER(win), ebox); + g_signal_connect(ebox, "button-release-event", GTK_SIGNAL_FUNC(WindowButtonRelease), NULL); + + // create the bitmap + specpb = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, SPECWIDTH, SPECHEIGHT); + speci = gtk_image_new_from_pixbuf(specpb); + gtk_container_add(GTK_CONTAINER(ebox), speci); + + { // setup palette + RGB *pal = palette; + int a; + memset(palette, 0, sizeof(palette)); + for (a = 1; a < 128; a++) { + pal[a].rgbGreen = 256 - 2 * a; + pal[a].rgbRed = 2 * a; + } + for (a = 0; a < 32; a++) { + pal[128 + a].rgbBlue = 8 * a; + pal[128 + 32 + a].rgbBlue = 255; + pal[128 + 32 + a].rgbRed = 8 * a; + pal[128 + 64 + a].rgbRed = 255; + pal[128 + 64 + a].rgbBlue = 8 * (31 - a); + pal[128 + 64 + a].rgbGreen = 8 * a; + pal[128 + 96 + a].rgbRed = 255; + pal[128 + 96 + a].rgbGreen = 255; + pal[128 + 96 + a].rgbBlue = 8 * a; + } + } + + // setup update timer (40hz) + g_timeout_add(25, UpdateSpectrum, NULL); + + gtk_widget_show_all(win); + gtk_main(); + + g_object_unref(specpb); + + BASS_Free(); + + return 0; +} diff --git a/bass-sys/linux/bass24/synth/makefile b/bass-sys/linux/bass24/synth/makefile new file mode 100644 index 0000000..c904e38 --- /dev/null +++ b/bass-sys/linux/bass24/synth/makefile @@ -0,0 +1,9 @@ +TARGET = synth +PACKAGES = gtk+-2.0 libglade-2.0 + +include ../makefile.in + +all: $(TARGET) + +clean: + $(RM) $(TARGET) diff --git a/bass-sys/linux/bass24/synth/synth.c b/bass-sys/linux/bass24/synth/synth.c new file mode 100644 index 0000000..3a98f2a --- /dev/null +++ b/bass-sys/linux/bass24/synth/synth.c @@ -0,0 +1,146 @@ +/* + BASS simple synth + Copyright (c) 2001-2017 Un4seen Developments Ltd. +*/ + +#include +#include +#include +#include +#include +#include +#include "bass.h" + +// path to glade file +#ifndef GLADE_PATH +#define GLADE_PATH "" +#endif + +GladeXML *glade; +GtkWidget *win = 0; + +BASS_INFO info; +HSTREAM stream; // the stream + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +#define KEYS 20 +const guint keys[KEYS] = { + 'Q','2','W','3','E','R','5','T','6','Y','7','U', + 'I','9','O','0','P', GDK_bracketleft, GDK_equal, GDK_bracketright +}; +#define MAXVOL 0.22 +#define DECAY (MAXVOL/4000) +float vol[KEYS] = { 0 }, pos[KEYS]; // keys' volume and pos + +const DWORD fxtype[5] = { BASS_FX_DX8_CHORUS,BASS_FX_DX8_DISTORTION,BASS_FX_DX8_ECHO,BASS_FX_DX8_FLANGER,BASS_FX_DX8_REVERB }; +HFX fx[5] = { 0 }; // effect handles + +// display error messages +void Error(const char *es) +{ + GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(win), GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s\n(error code: %d)", es, BASS_ErrorGetCode()); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); +} + +#define GetWidget(id) glade_xml_get_widget(glade,id) + +void WindowDestroy(GtkObject *obj, gpointer data) +{ + gtk_main_quit(); +} + +DWORD CALLBACK WriteStream(HSTREAM handle, float *buffer, DWORD length, void *user) +{ + int k, c; + float omega, s; + memset(buffer, 0, length); + for (k = 0; k < KEYS; k++) { + if (!vol[k]) continue; + omega = 2 * M_PI * pow(2.0, (k + 3) / 12.0) * 440.0 / info.freq; + for (c = 0; c < length / sizeof(float); c += 2) { + buffer[c] += sin(pos[k]) * vol[k]; + buffer[c + 1] = buffer[c]; // left and right channels are the same + pos[k] += omega; + if (vol[k] < MAXVOL) { + vol[k] -= DECAY; + if (vol[k] <= 0) { // faded-out + vol[k] = 0; + break; + } + } + } + pos[k] = fmod(pos[k], 2 * M_PI); + } + return length; +} + +void FXToggled(GtkToggleButton *obj, gpointer data) +{ // toggle effects + const gchar *objname = gtk_widget_get_name(GTK_WIDGET(obj)); + int n = atoi(objname + 2); + if (fx[n]) { + BASS_ChannelRemoveFX(stream, fx[n]); + fx[n] = 0; + } else + fx[n] = BASS_ChannelSetFX(stream, fxtype[n], 0); +} + +gboolean KeyHandler(GtkWidget *grab_widget, GdkEventKey *event, gpointer data) +{ + int key, kv = event->keyval; + if (kv >= 'a' && kv <= 'z') kv -= 0x20; + for (key = 0; key < KEYS; key++) { + if (kv == keys[key]) { + if (event->type == GDK_KEY_PRESS && vol[key] < MAXVOL) { + pos[key] = 0; + vol[key] = MAXVOL + DECAY / 2; // start key (setting "vol" slightly higher than MAXVOL to cover any rounding-down) + } else if (event->type == GDK_KEY_RELEASE && vol[key]) + vol[key] -= DECAY; // trigger key fadeout + break; + } + } + return FALSE; +} + +int main(int argc, char* argv[]) +{ + gtk_init(&argc, &argv); + + // check the correct BASS was loaded + if (HIWORD(BASS_GetVersion()) != BASSVERSION) { + Error("An incorrect version of BASS was loaded"); + return 0; + } + + // initialize default output device + if (!BASS_Init(-1, 44100, 0, NULL, NULL)) { + Error("Can't initialize device"); + return 0; + } + + // initialize GUI + glade = glade_xml_new(GLADE_PATH"synth.glade", NULL, NULL); + if (!glade) return 0; + win = GetWidget("window1"); + if (!win) return 0; + glade_xml_signal_autoconnect(glade); + + BASS_GetInfo(&info); + stream = BASS_StreamCreate(info.freq, 2, BASS_SAMPLE_FLOAT, (STREAMPROC*)WriteStream, 0); // create a stream (stereo for effects) + BASS_ChannelSetAttribute(stream, BASS_ATTRIB_BUFFER, 0); // no buffering for minimum latency + BASS_ChannelPlay(stream, FALSE); // start it + + g_signal_connect(win, "key-press-event", G_CALLBACK(KeyHandler), NULL); + g_signal_connect(win, "key-release-event", G_CALLBACK(KeyHandler), NULL); + + gtk_main(); + + BASS_Free(); + + return 0; +} diff --git a/bass-sys/linux/bass24/synth/synth.glade b/bass-sys/linux/bass24/synth/synth.glade new file mode 100644 index 0000000..23f3dd8 --- /dev/null +++ b/bass-sys/linux/bass24/synth/synth.glade @@ -0,0 +1,174 @@ + + + + + + True + 5 + BASS simple sinewave synth + False + center + + + + True + vertical + 5 + + + True + 0 + out + + + True + 6 + 10 + 20 + 20 + + + True + <big><tt> 2 3 5 6 7 9 0 = +Q W ER T Y UI O P[ ]</tt></big> + True + center + + + + + + + True + Press these keys to play + True + + + label_item + + + + + 0 + + + + + True + 0 + out + + + True + 6 + 10 + 10 + 10 + + + True + vertical + + + True + + + reverb + True + True + False + True + + + + 0 + + + + + echo + True + True + False + True + + + + 1 + + + + + chorus + True + True + False + True + + + + 2 + + + + + 0 + + + + + True + + + flanger + True + True + False + True + + + + 0 + + + + + distortion + True + True + False + True + + + + 1 + + + + + 1 + + + + + + + + + True + Effects + True + + + label_item + + + + + 1 + + + + + + diff --git a/bass-sys/linux/bass24/writewav/makefile b/bass-sys/linux/bass24/writewav/makefile new file mode 100644 index 0000000..ae22394 --- /dev/null +++ b/bass-sys/linux/bass24/writewav/makefile @@ -0,0 +1,8 @@ +TARGET = writewav + +include ../makefile.in + +all: $(TARGET) + +clean: + $(RM) $(TARGET) diff --git a/bass-sys/bass24/c/writewav/writewav.c b/bass-sys/linux/bass24/writewav/writewav.c similarity index 100% rename from bass-sys/bass24/c/writewav/writewav.c rename to bass-sys/linux/bass24/writewav/writewav.c diff --git a/bass-sys/linux/bass24/x64/libbass.so b/bass-sys/linux/bass24/x64/libbass.so new file mode 100644 index 0000000000000000000000000000000000000000..88391783d0da17c933ba64f4481172ab2009b382 GIT binary patch literal 240656 zcmb@v4SZ8Y_CI{nrX^s@O|fWIlqg|s5#3f%TLEoKN^dZQ%3Bku@={u;6xyYUfQ!-^ z3cX&l)_2@>SKQU#vhJ?1FF!@ym4pH<_*TGGL|qG_CPbuyLIEYu_sq;~FOfc<=lT5q z7w(-o-#K&U%$fJObJJDD?ukhzlcZnC(ybCv-M4e3Pz02{m@IsfR4C<3sd!!{UCMY< zdP9Ed8T}ZKr@NA5V@#ArD(+2B@$gMgjbOO$hSC`+Dc|e5*%*+7C&i2WmdA_ymdDdw zi5Tb-u7y)l*%!X~X86}X%Ht)vnSxJuiI=WB5RcOP|9V*k<5ZDefB7pL$QgB4&*gT& z?+6(|xSNE(KgTZuD&Pu{(rkg<0QVW(^|=2gu>0XUaX%nv-Px&ogxhMM9~Az};9iV- zwV?kZTsz!<;C>4CZv{rqOx#Zh`Z2iwgS!s*KLtiMz7+R!xX0pNikq&tale5365QKx zH{qu14cs^44ikZE0(Yd%a09}Bk8sI(Uicq|n}+*YK|c!jX5n88_Z8tMN5(yeJh(RC zR&nnl0@oF|U&Z|v?!V%$!Tl0${ra`=JOuYP9faG4`)7iF67Ce-D{%iDcOh=N)^Vrz z`Fr@T#(lRyX7q;ic`g**f5H88A1qNF+JgHU+272<~4ppCtVPE;aWN zf_@zCZ*V^?XmVaQ_?v})D%`EO2jTvsz}kgNPBHFW+>3C(hPx5>aNKltaECot;dzIk zcff7Hy&U&M+;8IkU)=wIO$82+I<5MgpEl zUMYa9gqtti0=Rj?f01y>nP%{38~o%QCTN#%bKsT;e;Hg4?ptur6PQ=HQAJEAC0SM+=Oc@xp(faEpX{FWh9@HwoGYcO>pR1-(+ZW8k`RPsTk2_c+|kaF^oN zaIe8lmjm}u=Hrj)aAx7Y%Yc!0K>|(WuM)5qL0^u$(t!UC{`I&Q3rvCAg4>3>7WdzA z({&wp&Ur2r)J6mPI{b5S|G|LG7yc03Y6DK*f8+jB0+vW7qj&H)&qZz2QA$}-{R?_; zz{77~_$5-0Mpo~;t`>MA|6VkVA?O)yeu&p(y>8uU=H=2Sf%~WqQF$d^b1YoWyJxwa zFHM|d8Iyyar;6j$htV}b;E%t_8TER86l~{{e+F#l!-t`=oe%$@AO7$9kx%NKPfm9~ z@_!Wheb@p9TzV<^`r&_NAjuyjt+I0d(JU6mu730kp_3y1Uw3f3%@zD(M7sYv$?-pm zj_pU7nE3bK#N}Th_!sq)uiJ&3N>N_a_tSMy$azo5(fiPw1%6>Bm;W~OrtA0p=zm8F z*XK+v*Hf?KYeju~Wf{kZ2sxAck#npcd$tRG+J&CT4!iyr3X>fg99&NtOX>QeANltS zJ3sh5*GF$=&oVhYuJP&WN1xvcIb$|*In>Y4bx4%^Wf@!_>U-(>x3K@ZRF3QY&l|#S z)l0dYO3p5=>?hqY*v?mPC-jrwxk8_7(|NiyC!uSsD3|EHJYA^4uHT4udf@_&j}hgS z){j22D3@17ehUQuNs;ahfzK22CyDaGBBuzZlAK(u1x=qI@0exg8F1SZWpJ)mq2# zi@75mhI_trslJ~NZ|nzux*s_=2z?&VD*m z5_T&e#O?E(utS=_H;Vo+BJd~r$=5rg9Cy`l{qGR`^$Zt;!FgWDzg6^~4iV<=$38#n zC*2eM9nAO0)*(Z50H|4%ks!+ee>FFgi%=c^BY?Z?i4>?hqr z!VXg!xZrz)o_qV@ABy?O`O>|%*9f10%mk(j}ue&~GitAv~$(QgRz zOK7pFGhn?ic*GK4tmd+b=w8D9{xM)i|lM?ZRQ?1%rfkZ%ie`F{l;UDNuhC*KNtP8aRydCo4~C)&#| zM0*(}@ETDcURccKKPBXQ`_X4mKX%9wdKUS)oIeUVLj?XeAIBdR>CWp%|96ExJH>o* zjo?2d+Oz4#hdk*I-_qDXaD>3Shj4s^uydNQ^EBmAzPbe}=+`N~o0hyUj+Uq%hNe~L)=uHW%==LwdODBrOv$L|*Si=tdg3c3C? zf1;~{;oNV0hWpWHNFZ8k~m*85SFMWMY z)Bf|>VX{c~t_yg&og!bANbG$4qlMir7yC9eUee{leLnv3e$p-K2e*lKclA-O|C6BU zS}NMb3ejGM@?c4tJ$u38x+Sw4d~=ujX3v&pSJy150a&?wE_vtH*4$Sm&7O4c?5R}? zY8rf1ODELMZD^=!kQP@hUR-x?m9(^KZf$K{rQ~m@t*WY*s+U$(NtFN=&0bLD^VKY_ zlInd6!8CvNV!y9y`D_YGfc#4sxR?uq;L64IQiE@)ug+h4F6&&MZ|Q6(=sOSGfaF%x zCnnbq^ZY8vuUkQ>%=fdzmQ>Dds1gZRE?g?rHdIwDx@ipMZ@yGtw@jK}i)=MiQ50gU zty_?nOHXO8Z|)MQy0)%vsRSJwkiWY6J_Q$5t(aX2A-+D%V3>ybs>+(`n#$gMP)r?b zs991i;jxe&(k~k7mikz#^(!d7YG_hdU$q2I!-~aHL;cd4CBEujLHE=lj&Ab#Rld2E z3wudQq;g@^{Q9{|=PvF=6SS+WTQdKrcJ4(XgB5RIbnu^BCcV76l^35==oCDA-qO0c z^I`HnLory7p=W^CnM9PaHq~ywLBPU$+djZz=vWoA*_UrBo}Z@aOs@l;GU?^I`bvI*AIr$|qG< zF7ee$NOK8^qGr&?u|$+nLqp|UDq7#tB~*p;%QM}4nZQd!p^6*;C&n_W`nn@~1``=`xaTwhx?k=if||B}UXnZpvMx{7wR7#KNKi&2AwC?DFz;=a^`M97{#cY!XK z@c^1wQ(IM5*HFU>jBCPz%KR+IiB`y^miilNDt{u>)!?Y~)u6v(QTtMIR^3}uc`jPC z!dKOB{j@5oKSB$^FR<$w$2pQ*4by6C=GQD)a1IK!&sDiEU3b-z1-^ynaJ#9PjOxMe z(^f30JO`UvMZNA%V6Zx;m7Rw(5rs-OIM1sTM7V2~oT~v(?I$o;Cwk74m<~?#fTN5$ znJSDJ!iEz)WR9PJQ>z;E`oN-{ahwe z!_aDb$-cq?)JIICnT@W8ZbO6d&~%BTYJP8GGwW*on76R3LzIzZAot@=>%hO5TcFNNC5lH&>L`GsNV0J zjMi$@2C2E005@Vt>?fGPz6hR)_D(}8GhXr1rFBaIPN}Gf}mz^5En1%pfS$50qF6o65@b)Lfw+; z8Zi#Ay!Vm4p=Fp|=+%q!_abGr{slElSfS4xx70`8Jn}9k-%aGJofJ zl8T$;@w^ZRp`6l7fy+68Jq3C{XT$Bkv<55L0a89Y=fJ~1{z-W1IpHSoo*Un62v3&2 z6!8lozu^*+Z;_lL&QeCFNM(ZN=_ecFo1_aw7@`aPl6u4S^OItEE4?7zb8Z&rD|P&D z;yrdK0XNYG39g<5{NiH_#-Xqg%%jWs;|7jf67V;_f6KH<160sr=6 zjxS8WpZk{M^$GZuf8_Y`1YFmrF#*5*Am?vMz&{r0wkF_h0$-nij}iK8NWe}1!{u*E zz;%5#C*XG-;QXNk{I4S2js#p4_`U>uohYxa1Y9q#NCK|w)183p<<*mb>*Xb_JGVaQ z<<*#gN4kZb6Y#fQ;CO2SuIsZd0iXLB=U<0bfrClyEIfz&9=9`0@liB=D95yj$QK5^&pcE@yKB zK1bjk3HW+}?@PdQS8zFz1Uw}0o&>z?KF)9X^$34ltsQv!aq;NP5puTSFqp#*%3;O|JllTUL!I}`Bnf`4BE zzK&i{H3VQ=!m3C`b|fPcS+zkpenfd6|8 z$JZy|CvM>Qh6KDp@NY`MHwpgD3HW6K4<+D#pU>rYB;f0==XhrVe(WP|pM42cXfIlN}YXW{`2TwOE0S|BE zxGe#HU2@XHU61qpcK+eqaa^YhUpNdlK+}iI0TlB;dtOoPS{genQ}p=eRz2y?xHN9^D4~Ph13h_89Q60nb{` z<=|KYb{hIFn*paV{mM4r*beBuat%0^`Mp=Z0T)L!SXiL}AKc3=Ns0lN4S1OWr#%Y& z@)+<89fUi_fM0097aDNmcQo||{9*(Das!@az#9$tB?i33fa_=8DY(^u>)#>}zRrN# z2oTqL1Ae6r!rfrN?FM|40sol+-)z9IHsB!xKH7kH81QQic&7os&VcVT;CTkT%YgHp zLmn70;B>Z1zq$>${!IXd^%(H6Iy1S?_tjhdn+Ad{2K+Vx#AP+$g*pf~%YZu!xXpl1 zFyPq+yx4%}8t{n*Jl}xRnGpRdG~l=EAY8?Oi=mE%mKpHL27ZqL7eg8gonyeo(8chD z23!ou46irfGY#^W8}M=i-e|x*2E4_9dkuK20iR{S*BS5%1HRsX-(|oz81UH!e3Jp6 zW572X@VN#&WWeVc@D2lBX}~)T_JY`~@8 z_tpO;2Hax6>kPQnfHxTMECcQ{;5Gy9H{jU@e3=2yHQ-{t58_zDAmp#i_ofGY<4 zmj=AdfIncsJqBD1$t-k^0dF+$FEro}8t{4p-fX~^8}Ky-ywQNKHQ+4M%HsDI&Ym1_#G|w6#Da|2YO5`8O_|cBDsAdrtzVTB6+bnIw9>4KHu*65M z##0_%2p`d`M~`;JagDr>XcJhYos3>eG%cp1Ax7UrG=xjhO^lvLw3+DjjJ}g-oSK!Q zt&E;ZbSlw}jGja^RsU!`ql<{P5Iu*{w-7y$=rTrMPc%-AO3^|_k0P3;@X=gGUqv)c z-J>=}UrKa3(N;zeA$l;;5~BwZEfd{+7Qo0PqG@U#?PB!lJ3-TwJle_VV?+-jI>hM1 zMAOtfx{1*TiOwW?J)`#%O;hw}E2H-ieG$=(jNU~wP1U3IjNVFg7SVGU{W{T?5M9RT zzY~2a(S?kDiRjCS&SmuPi5^C@jnTg*nx^nkE2AGHnx^hiiO~-cJ)G$7A1VJ25^W>8 zi_!NHeI?PIj9yCgRYZpveGkzih~C8Lc|_BcKDwUKcM?64=vGEgCHiMXH!^w>(N_~) z&*&nevx%O==v#=+A-asw*AqR8=t4%1BKjJla~XXV(XtPIUJVto(`2CAy2zr@f$QNf7O1^f97oDG&`Y`Y_Qq5WR`f2Z^#`XJHMiC)j>{Y1|ox|Pv;h^D1Uw2{%fh%P6(p3z&0_7FXX(XSKj zCAy5!e<%7*q6-=Q64A4W&SmuPiKZn;)W+yv6MYxaRz^QY^xZ^DjDCpd*+h4rV&zZt z9HP4zeILls}{Gz~z}IgGxA=o+HS7=1m__Yhsk=ut#3B087RR}o!Hw2jf161|vcE2D=Hy@Y6q z(SwMtBf7hXl|Rw-M0YXzbUEl>5Z%e>V?-|{I>hM1L^lwW$8E8AVrhn?;$b&u{K2; zdJ5X*g<^x0g3}ZM9I$}|5&XMcPbX(d@Xoy#xKE^a(% z_N61qfypJ-Hm$^((}}b%)=K6eG2Z}f$iU7(he_Sqv=R_OvfY_Z*9}c=cwIz zoq?{a@;X&;YXitiBQ%R<%{$g~(26rddAkZ5zqF}VUwUAntS8L|mX1S|Q1-tc#fyD5PlRSxgtDpi_}cwzi>YzMqEZdcXN|w|UN@eCIC1_5Hcg?yhY9Z62?7#|<^6H~x9%NOyrp^|H0VMEHu900^bPo$0 zkavVqw`j;)q5Q=5z!#<{tzL{`Hh|X3tj&Am)xV{n%EPExA9IUBKW(;6QQMWAPa`8S zO;Og7MVI%*_ti3+S8Iwb?@04b-(8Ce?ep{YocvbZ9=pT9R;*bY4_f@U#)_bxRcQ}F zQDozYB0D3oY|4|U^S;XzZDR+Fki3yz1(CMWHFept5>YCT%tA5V)ut8ZBmcz_^+@cS zz}dKeG^(!!`ShdYscOrspQk*DS|K+-PTA55ElP5Ut*!ZlKLz{?+X81z%vTTJAm&@% z)^rv}0VO|HENdGP3A9P4TR2Ux!C81Kr;~Mh9jDDYy`Ix4I!$IqN~tXJCL*}9zG;E8 zDZU$*r3KC=`z{KcHT#QV!vkk!-w-4&Nsay+Vm3uzl$6tnzFd1|<8fD&&H99%W9Qz>}Q|8*cVs7>u`)25g=cVQMAIA!u( z9ypb}xe+fQ{TFHj0$rwYrb|L2Ltmbarx2)AUhE7y;!5SRw9?8@>7tPAQg=H72TY}l zc3wLrXg0Y_-AeGrhOA_%NZx2(14gSmXr7w4hX?Gs1OX?{8CRO63W4N}Bx2>H*_m#l1Zv%*WaStI{NYrdDo=Zyj5n zsg_&rSK3R`ERf^WO41x^m?Ss~x}EA)x%2})Zp&`R-UCiG>`*&%cJJ+hR3(^xKN2Y# zVGcV7cI15E{~s8V%^1&I=uvt&WxMVEUKO+oj{O$DHI2I_)jTLL;54e+{6 zg~w%Yn2E`zAdnuXxq|@;0H-+u<|3OCIE;h^=R%R7&HrR+P$_h)p=b-T0QRP5;ktuE zNAjdsTN@dkVYX7>!;Gj{ZKVt&16KEtIl53QZbj?mXV;TmtwT?9w=fO4 zB|xFX=VT(+jl>V4(1M^sWI3aeCLV;4;R*J(5h^l_kO~sx-AW+OptW!qB6m;-yQagI1Pj)L z8qq>s!6ydJ!Q%b);KLbZcB%=h2NXU^ZsyZUFzu1pb?5Tm9(;oFxq=U~c*NiMWFJ4e z2dCY98EHAV?a%b?_xK-+K7aksudt`(`|S_6^YUTNvl> zjo@I&CLr$ud8iSw8E2@MhsX8V|I*9DYopuVfd=H+Nzp=FklVhG?6Q;a4)`)2Dr5m* z(B(42p~OA!QTT&}3`e-GVHbi<;eH2VUoT`RLiH5iMo1Jl+>Cn)wdwXJ)JIu{r`w-} z5A48RfRF1_Yu^UOKZ$IvwEqiHPXhT{BNyni{}aerAg)4qzJcepMxN%MdM)t@LeOSB z)HI&wnq;V4Gg$O}gnWd17eb#2@wh6_6+#aoWH&;ZxPhoeW;`0=c~;3bO4BxKn{AGA z$4tiz$8>#ix9~(sS(2jq?3npZw->5zySv?KXD8+S1GN$-78D?nS+`PIYadpecceJ) zP<)pX-|7zfu0>bgse}&>P{Lg)6yM{LH||i9opy9gPCJ`XQiu-NXo?x`N~ORu1wsoo zq^D?3d%jy+X}7sehoL|gNwN|TCK=Q17N`0pO(nNr30S207UiP5&wJc1xe?6@UB_6F zufV$|rSb!1(Vica;L1TreXF9Pbge~b_trsZ`wr>=2Et0H64psp5H378g_i7fQNw0o zHlpz0R5np~a4MH5JUEq46ds%!M-(0vOv-4Y@Zi)KqVV7pIw`LU4^E{Kg$JiHiNb?Z z!-&FzQ+A^80OgcNcNWWA_7|(WiwpMq(&0M7r-oNMn!b&%sxDU1kwqIzFD;dH|hVqhKSY{X-fJZnV!^lG3NxGTHLf%QbnaD!k zNxGTHLf%QbnaD!kNy1E{dz|u?cJ-9Apxrk}Jw+;$#-nY$TT$x?)Y>hLiV1DNWokzeXUWa) zVv~>>Q#Lglk0ZWKF-=Fi4gg7V1-2)V&z9sIJKsJ`e)xW3UUcLv7N84fVYJImy30}F zxXW?3V|HIBp{V~6%iHC8KT(DjT0zYYU69n*MT|j`74FLU_A$kIC(uivz|zO&B}=TU zm>eAUBDfQKi-qVd+L3e$0?=i+)h^aK=s-RP22kJ}60e}Q$e$c^-iWsEwwIxo$aSl` zoa#5|9u%mBdXV8pF9Lq6n>vz+_C56(D{nxbapRA_5`6|m#$p@%$cCGG4=9Uxf%iK(5#Dh~*EoS1uDXJDT@u*-aQ01D52dAhy&BTLKXcXR=cyKC>C_FfoNfaKO z8b%ZzoTAD+(@s5u68NT(qnH~xS^vV>+V6S068 z_c}b3ao%l^9hma1#1BDU7DIq!67N*qE@Tq#RNXFQ67N*qE@Tq#RNXFQ67SUfNx?A% zqBr0Iy(ynxN9{kuqy*ZbzI7^WU@iFp+~w3ejAWs#cVH&8P{4P3=E+Ru-8u!uz2#r) z6dA2NqEn=H`5~Pm6P9=B6!iC&f1*=l(DHpcMOi9;U#CVB)u~g+o45RJof<<_hfYy; z%eU#&IHE$-`Z?lFIdUz_b*kHRmURVZ(G|Ecvd(d#t5=fU_BklJT)8>OK*QQ_ei!CboN&=2SZme0CtQqXBL_x1v?>J%t!T?G|9 zQ;-pB33T+Vf@;=f$fc)b48|dA9gN{w1{+w*vp{?5h7no<(|XD?2`EV;U;#0E7LdRN zP6C!ej%NX6XCM^>ErW0?l0ndHJ3Y&XfniEEd8aTzvu(tOROAfk1n(3il0iykKp#v6 zzXX^8eK2)KfoE`i4iE@+5RRFZb#@vBV+L(4HMZcg#v=pjAs1$f1|9K) z>QIt2%YbH(OJNWOn&}8(8Hf%&kv)JudxRV)jRPlaSyn8250XBg z5_B`jitj*H?9+YT{Rr?}T`Xsxg{R^S^!XT`3|dDZ+JBvLb~kaHpwRE}@ZR|0(@bs! zMez8*$JoDyh#$xc1m14SF!5I$B{@CtSyO&XF(IOaO3!=aQ-ZwqQS!*%@xfln%&ZXq z6-kK8**|h|Y+_qMvMatoA`xi2og!9n0XKTM#0;nX2f!(%ob((;#a;;r0x=)1@KLCz z2LiT}*d2hn8UhxSYY;uic-$$}5X`byJ+VB*! zm}e&vB71vN{2cLKUO^t&vy#<-3No;FsGDOUBGOAZfdwDfcF5V^lcjE9V8t=$MGJuc zkRn}VtB;-}aTPSbM;4Aj0uS6vzW2yBNg5>XeR%0xQ^VmE`v9_Znyr{L{)WE5p1$(s3Sf%m{LEGAWb*}8)4L@VkC zhLPyaeBtJ;0l#MnbtOnG1;2bRXGcL${j{#|kx{UkrFa?lQNLa@ha{srvesmQ%?mcq z67nH7Ca>Ju-d~I+5l5g;1u5>icQmQHsS)x?>~dWqdPZ+e1xZA|VV#>v62E}NYVu{Q zr)8p?-9>q;0W0kTpu>Q?CAlPT10AI%O;$q8*CYj!}a(yoHTr9wL#)Il2}F(EeK*gL+DJ^a z*D((Au(3cDj>^I_aU4&Xi*_P_FJPYG8%130LQ2F&J07#M@F<4~ z(J9E*+u)+$t;i^CM_O4XXc~TF6n^Li-78`wcdwj{!M6hW z@O*+e;PHMYXCDO1$AG?|EYMJjUQ(_&43GD1iZz*)MN1=F1AFJfik|9RDzEjT5zS>? z5AC#}>N1?yFRz`fL!$3y^=@4w$1g#;pAyO%|2k^?Kx#4pEuq$*u|c$URBH%;%AUJf zpSDi)X?L)uvlNiNjaMiX8oQ4B|ce zvAK?n)5uVPbr|bHSxJLo7cm^95bPtt#-L*G96$t=6sSG09kRmB`!Ql1&`k`HWY7xQ z7W)KM0_O340ETx+1L`@wpOF+)!3wH<8TVN6^vM*ffW?16ukfWgbcEdbz3Y3FKm>R?0uhtT3PWUhfUxgj#6E73e0dj?rL4k{Lzhp*EK>j|}3lfrKa;|7GtTFjU4=Jgga@NDda= z8MN@GJu%NDJTmBEbyotOkq20dsv;v*alP8gxurd4ZqCsj9pydp*3az!jv-tuwy zOwyYe*6^O~<4EKX_CLa(r{V>8aOi=%?dV>IWohPL&uUYT;njWkAa&>IjW$|zSeWJsxV4-&1?SUzx)ZbJJJdxJJsj2DTHJ6pkb{ zef2i3kvHHP*d8?Bw)<$)S2J*pdOua-jvyXD8W%1`5^`5qjCh`&b% zG#(Ji&^uA>B2Bs`3HvlIwUhR9-P+4mny=8dF3wB5fzbl5bIWsaiUV(T;g~y>XOxp? zurqQfFH}nJf9bCRIJ74V(N{UNEVbRKy=f*9>_>Iwjr*~?5_vriIZkz@{kx_!EgVd#dz&>F+?bpPg$6xVXf-Ek?~cMRIpEOK0(YIF|RJxo_NxUB$y<}7Qm3V zcRUj|Wot7A8dr}q=dEJ(3?=imBM0ujaL;gcyEE_8ob4crnSP!e@p%^Y%M)_UHV^Suovx2+Q3=4tdHRN5O6=-+ljZSLJSZ@bVOl8SYB# zeP%w2l1w^20WTBZKp`gO?SVNyiH$QIF4(_vK+b-r>152Dywd&&xJxTPazmk>$-!aI z(3V<{J2?Jdk6<9eo4jN^yymrdW+Xe}Vdq%4y?f>B*uVa|7`w38b;BZ?Hrc+DAO0_G z*Hy-2SGX#-qMF?Y363~?<|e3uisd!G4oxKISg5}8V|JoqR^K)pUa>2%9f}mE4>A=^ zu>=lZ7AsRKw>FJ4OaX-dVL(zx$(?djNQ#CJ9CS@D;=&@9yDvEw^$8X+ySsN>&;yUEm+JiZN{ zD81>{hHi!zJVXBi_x_6%E&Vs}K$-Yf`4zKC9l8!=n>O@OIHnJQYeOF-hUAn6IO_Nn zcouy4K&m>l4n9=(l;f9-lnPt&3tQ^3l@r2Sh?E0B+6r5`3oSi9YoI;3P=4hE?s)WF zXwc@E?oxl4F-<*=<2J}&ofT(xup8yGQ_p0!$7f{YgbKA*`}kIO#!-3o_prsX%f_om z(uT;Z>F4^#FHHJjt=#+;+DCK>9^)Syzw4;)_VLfo`|_yII)3!yw;q+7>F+E=OTZmC zlgf%jUb_hpPMlo-S(2oFj1wp8_=yt~V9LG2*tU$*ZjaLMf%nB($>Us_7)QZoFDjlb zS_}q~VAmxKi_(|L1PvufFlI-G2{f58R;0u)6G>)8O(N)!4%wsMFwM{^r9Y=8GS?q{hmP;DZkT$ zvSQ0f{^(Vy%^&*)$9_ra+#EQQ?EghfA;s=sjNX)A=n<^3iG&vj+^gf6vFj*9rHuBZ zxO6-#hK*-$%6Nh2>G&|#1YGEVEb$pOwEYxT_Sn+PrOu?yF*9&>ID6-(s6S4VA9)`+ za94igTC_de9sK8jY*eAVcw_>00-N%ulzN&P5>AKkzn{j*+Ac z$z|H6O|X=zFXki2)wJCP$DtNmvWY&d-@*RO62Kv{;aspke;vq1kXBZDoG1wN~`y@l&AS^ILne3qD~HnS(eio zyN8nS@={SR4o;U$;E>-8g(Ji1B;SwI=$FUwF5)N#KJ?q_(cmyoWFx#dHx*U);b5F& zxXUO@pLYzr5cyvcnGJt}NSZKUuFynBgHx7e@bgGSmrl8XodAS?m1QipMdUT~ z8}N!IYmerGY&t#py6M;9uvvaCKa6rn6X0rzg6nkC9h%{{&}#p1hid zm8R1ZoHxOL7DiG#N5;G3-Q!Dbx7+;bNb+a5U%45gC4U74#St{!d1tPFklGoJWZ^_Z z>}Ity(A7OYcY-q6KY;vl%nsHcy5sTjxj_BbsGaJEfSbOezbv{aG$?%35;PA$$!5d` zybef;rMy0z(!Qwep-1UAAM!$HcP*ch7s}hyxYBfO;j&^lqb2{X@~bONqcEaeG4Ql9 zek&OLpH*W9g`)^vkWTobp7I}n*`oK0imN`I^$OO{((&?pC5IE*ZXj8tcw5(Ln zjSrYES+?jzs>zq!D4R~CCXs7Ck!mJ4=|rl9T-!qv%`GKK4^2#IDM@~4Vp2`lLu6*?g6RQ@|%+}@b5?_iVn1x>9k81G@wIk_l=%5 zVQQ)0MlbGzQ*H7qN@3%Hdfx>Kj`V`XlgH`gSCO`EsJgAXXfeYFP z6oT4Jk2c5VEI7_<*6ssKa0O;~<8IMXoh@OSfbGRj@S7biVP`>yKPBjBjHO^!c@pRH zPPZiaQqTj$-fwfL9k0>rziS>L33+kN`~XGU(us3!&Vo)~I$XnBb*Gwk3nu3F07yK#xj|0^I)fh7I9F7og$&d8&;NgV+rLA$FAn6cfXuX z{8+OQchAmdHa(Ml*>2MIvG^v5Nt}fmF>1FHi!IE$N8u0x)T zp{*r*Q5_hEzcYyH#kMJ)reeo#g7p!qH{@AM)dFnKk#=B1Rq=M?M(ePyrIge#_L#z_ zWLj;7luA15V{ zWX+-Oq}1Z^RgNYcNm^BM?+`k#E;TmoBuZtxj`%L$5HwS#DFjg;$l0GnMa``bamY>;K)HupKk$XGNxA zD5cT+;F_Ge37;bqI@Pz30IY>=1v21J7?dpN;3jl(8@d7^3)%4^W=HD1$c|Jp(QD6R z%UNw?L5q`}?g&mqS?=*?JK{SX;U0N%Fs()HH0^>{S%)fA;*d9nXnDND>@IlMf2a+7 zoTpfAV{F)6kc&;7z1(em-22;ROha|Iu{uv_W~=+01NSMxi5CA&P?!=VOHT?8>pUk> zbvu%cn6AS!Y?_D{@jEO^!GHZ9$8JHa$-zu;JJszh`S6cOeIHMq#c`_d0CSi=k~eM_ zaoq(U_}`&PDLc*wjq*vOT&5AWEDF_6odZAh7sfkC8AtfEtOQ4Ir#VbsNPWv`3L}Tu z2ty5+?NG7PyYVBZX;>uLzR{ui*4%2=JI$|2l1i1^k{M-5Lylon(hbhxUGZmDL3hDOVLdrxTu_8h< zPb-nPI7^aHB|pm9r>J{PyLg?%=N0nCHU(^MQwI|1EyfT0TVrLc9Ebh?6;rH+QPyN8 z!4rS3ubosk`wjkEp;_I1uq zA|oRg>(DuECDnuGWVH>-?=xM2XJ2Lb#{aL_dAQpzA>eS*O zre1wea}--T#L_y^?pOP=FH$m{e4lw#+c8}17_ zS4N`rr{)mlE?r~~7x}OQZi1MBfj4NtlziBUM%MWh>m!eI>*FgB3>GvSy zSBnNKi$WfJ`=gvFq?5N3to}iP?@=Mx`xNF{9l`mVEUe? z06W)C=%JZg;~jyX;mfkovn&c_^Ye(o)SqL{idi>C4^9Ot}-6@Pr| zcq~MvH|Zfy*%9uNb2_oeat7y^Xp7qJl&9dSJx*JUSRfB@6ub}UVDlbDdxIw2+CQkS zD_VeN+L}g_SEu#{&0Kv}r>4=~jZ^!x9ZoF6sh%FVOJ4mS5bT)vPCAio+M}30?6VkF ztf*fYGUe67Au;gAIx?!fn%=5YsZ=;c2$EluDA17RUoTkK%=_(7n2g>6RZ1ft!reehh!A$&T*pZpx zxT9D-#g3K6pR^$jNVi1~fEBt3ga3of@0;u>LtOP+w|as!LcF}4@h2@jN|wgTh(~Zt zr?(?&513{s_&y?E!N#1@%WI21$h32)-6RVdU_Oc02B@r1GybGi*J2jfdd;(sn@4-H zgKDqVO!kmhzX)_@d>1m$tu+-HWA^Igw&Hdoi|LkPn&s^@8j72VOOEg2A{;YNZF8Me zPIR;uxj+VZ888b|Ak@t!bE&LYcuA1Uluy1;TW)b7FK~cJ&8CP$TnN- z-UL%4cVt#yF)OVEi&K=I+KiQ?wzY5`W|L%tmCaaN0Sx>N>X zta{({I8}7*ajMsxrW%iSPIbXm`Mxs;jRw;YOxP3*M9HidWG}yxS%9WDzw$)=;~l%1OL?JEiVY17wECL)d0)`olh?5RV_lSC0DX zwcW6yB>{BJ;vYumeaya#t}L-?zuJa~+S4Q(pDX2(lf0HhG;U@}`!3Tq5lg|hD^t{O zu>irm{{kh27-OG+RIo6+qVWyR%ND`u7y(~<7>Q90Rlhm@qN47DMd)K{r~JwkQ+0a@ z@|qW-uA!jg{?XOi6pK@Sb+@D7*aPX+%{#G|CA;3OR;O6d?Ock!?;>y{Rhy=y#?p9P zJTY6wz8GHi26`^>Z^jl{dA?R;8+jJxpcdKM98LMi!EI`X+&mDJYm_hBvS@we6_$-1(g6gJY z_>e=rD0Yqf%0+>#jS0+e?rves7RDSnwhAmQ7cm8V_d4*ca(t^}Y#B}ym0A7OfJaM? z_Cnh0Vs9|9vp@+KS{zN#7&!oyf!Dy+2W+vS@OuzKdFh1*LYP_p?bg@;=K0;$)q8w0 zlCeQ5tthZ4w#GX!PkDq6j<-3q<(L3`fNz{nI@D9qlh_*N^XQWLK!;f^saLcu>k&)A zFAdzRXv3*=f9}*qI0A<({-5E~@z>@fG;fc*anUd}LLW-26Ks)v_#hgugk{$kPPNj` zX0UE;N;Z1Zybx_DqD!Q2P_;XjhfiIM3EU$a0G-@{N3L&BV3pYc?uT+@ejfI@Qj9 zg9TN}n$jIl!oF%4;f1I@*b2Bi>??F?3oL4_{RcJ@V!s7nApSu8kV|dLI}+cH60f+> z6=*X%3;wgR8ylI$&7lWU+@`MBf3d9Zj18i=JQn0O`mv4T2|2Z7?AP7@01%shIYf-= zaB6g(deld5tTbqS9J@{JMhGR}H^*dc? zn%x!H#`1HtxEUW2dOQ4dIL~{#*;RQ>JX8Q#8EJ>1@BKFQ2o%5@^tw7&u?xIuXon$Ka)dlsvW!T$SicKivHz7FplZFPtdh zFOw$*=ci*VJA#jYdiWrO-znLSoS1Khi~;yo=jU!5K`T|UKWs(P6=64hN|zzIRn!-c z3@>hLMK1KPnseps<8&SfUEDo%gvd(UXLP6;s^SnXJEv9gF5+RwnZA3bP3erxTo7f5 zPn*RV(@ByCDe;ex;mIh(=17Qk7OhD#eG_4=%`?+kX#jWPBZjROb_B_qnTG_9_mfzL zo*0;{cl0KfM~TsgfOHZngNnz2#G=^kKre2Gja)hSmbwJrDMnCAm)KCtdO*b?_SoYm7Iwfm2ET z;c>hYK^YH8s@5_GREKw2s?|*FOQCw<-9W4@aLVkzg7c(3Nreh7c^7A4uMdub#p1UK zmj6&^tbj+6G2vo@C}aMw@e=?xyoQb5W5;v=44pV8lwI)dvNZe*z}|?8z$-i3Txv)w z8J6>|q1$8InVk-$< z5p7H2&M>d>e+8SF{3|Jysgz1GOXcHp6Z+hthKjVb0ZrdF;zF9$@{*m^@|**5_S<;N zg2WHVv))GHMM!p;Bg!b|c|=$lx+P5yltgYk$>uU~+Wi|Dw@s$8fQe`253zev_h& zr49z4a-zS9`2LBGN5#6>9*IxD{0wiy180AjMsv(FzFPukzxUl3INRkL5jgvj|JvA~ zE$i2qq{z=-p-7*_hgN@YmjXTC`yyCh%QV;1QYHYJ74M>bfan0cpT{gSOB?^iU>r75 zzl^;24886KFaBpmR47&6^-#F zsi_6q80M`Do973>2>y8bH zcW6`7uyaw+EwBD3!c4pIVRQH(I;JNsZ3NdbeB4|uU)Qnh1FeYWvGY_YR}m&HJ7^+t zjJD$-p{mY1d>E9T?M*P+A(+P^m z8#JD2DN6vxGL&E$enn!hKP9fD#ZdCJfcGDs72QEhf%dHE&$)=rBzgq*uO$D)@Xw$< zB>c`%q>+id{Ntl`DP}2H@yj;l%72=HGnzna|iRUCDg7{gx;8cF_vJ;BYiakwKj z#9oiTb^+wZ2JG&!qz1w%>gm0Q=@+}yj%OTL)b-@--W#!`BDp{`Rqfdu33S~S=xA&q zqk3&=yDZt~-XKvTDlD$-(3Zzh_3i_LNa@=z{lZ z-HYWIP9M?n)N2O-b4+(@BU9nQ#>lnbd~27cxz(7G6N|q^)oD!eLu2etwHrr3Ore4{ zzunPz_UN)J6!a&q;7Yqm-5)vqSGF)7$Gmd!CH3I11~(W+KjA+F~)ZT_m6x7#z!J(zz%gA<8_1&F{WRF$vLnq{+7Rs z8Ubqpv~lTD&*sHT)sv1HrRw+W%q}{x$kq>F-{3kMnzc*arUdEeG1frz^)sY>ij4s^ z(;iujf>Fa-ragCO(J1zJvlBPBZYiJa`#j#@z zg~we@+oTJ@heJg+61Fvb*jn9my1UzNT^(AUR*gSIS?y4p(?}0|H100=+=mHCn=SSZ z^?{U$-mk+2CTO4umt*vltB3Xa21n8hReVN930Ls7R!*~%;4=6vXy;?+ld znM%A3$I2c`UX5R~bF^#&8A}C#eM201E|y>UQT-6RPnPh}q{#JXp(tJKH{q8c;^DX% zBQ3hXfgeV)5CUl}#imW;eU~}{U&#*nm2E}Aacl_`?nxck9{CPsP`vt3OK}o-(znn= z#Chdckxv1)6l2ufZhq*()qCXTIWWbJVlv;hEKGC_*<>ffC}WEHRb<0U)Cj(M6ULDu zF&y8*h(lX8g)|Hy+(O~ZOl{L}sP3Eh32sx=_Q*FcllL?FWeV6VFLdnXS<1=X*d{im z&%OZXVI9-CHG6+jPCa?-WpKoIx+@RF@S*!b)H^D)Cy^>TH|wOJc?9(sp~ifhuO~JX zVR*NB7@KaiD1#4_WB@X0POovLeSUJ<_@mSrM*S< zw4%LA8#8&K*DeB&TWvr7XLRz4db0gN4>%;$r{>V#Qe|iOZ}+PY($4{FMY&k|JHy&T zw7-))$*MkBOYno#K=4XleXt%RQm)xa8#>2dVm|<--8aUmO|s&+7mTT{apH-M8%KR} z+^Mc{bE;_*BskTHa{#q+=rO9q?Q7^<#3~l}6uqbMUF-<-tnz2HPo#p3w=-_?p^IwT z!S5@^xhzR0H=^YM5Dv|@t4{IEr96a8{Nsb zT9Dl)SN;w2i8^%Ah zRz3t?O%=E~gi4EzDAc!hcCfK;K1{)-u$+ImfYLUK`B(Ei*zT&PVTw zSpQ7baQbhN4Cz)_+wvTNb>!hCeZJH zgAE7SgNcqcWpp?Bz3Jwoj4@}1!Z+B-;J44HB{4zD3iZSDK0deic-Zm?cHAFOz%0PoOrcpaOm-UlMrzZr*% z89qB+=1ng^7|r+b3R*ZSL`OX2I=Nqc_~K8HM$TJw z?qz%F@eyLFGNvTT^Ea{2tyN{^d% z9_H9wl`T&oxzftAm9+Fx@L`WDxy&Oz*zVRwdN;gR7X)axmObVgrBS`&BedASModKQ9v zKco+*pFsd~%W5h$mgKq8*NFh{x<=xVEB1pc<5E(cqCMMRG!fukM;!uFP0qN)p}DQY z;$g>Fw>8V5!oPB$qups81{RF-TeFm=)2;COKSYF+NXP0So6$#(*!O~7J9}#f2<%(2 zt)|bxLi<_o`)L!2zNhqdu-Ztw`-5XRwtfmVZ1iq_mb~S(x|@D5SKY1u&QY~GIChcz z=IIu~EesEQy9zr5ErT6eD^+ZDw_(QqH*O|KaUjz@w_JhX0vlCJYcb z69^b3NW{Sg1SA??i9pSe8JI{wYPbZYNE=PHphcPCA_+{K1afkiipA^O*4k=YY_)2& zTolO-5Rt=G2&sp1(&5JeM+!hFBA&m_dQ-}8OX|M{MO9+LRf6d)C}Pwmx_*`>YKFq z6sym7hlWv)cfE3t@~%kliu8-v#FDENA9pDiBNP0tS8h(;4fah&d$~N3>iX&iGbb{o zaU}(NvAO!T^w;V>`W^;E8J2A+{m+PNMW(`9fvmiP{=E0;q-=X4@8F@2$tt_6pD+X5 z)ldDUWA>hERfmDi7Q7Xm*B#uZ&Ye*^b6@2yPr+B=bUAzE0au)cj8@~4-}G=wEI zzllo)Z^0SAR`eQW`1OG5HktYdfX$e-As=Vcf9jtDTsX@;6a9m1T(`|IA5&BM=YSV( zAJO!WiuN)=rJBCF{_0LCOPb}?rXK3qJsA*MTu{trQbAe$?0~CP@M_&)*9f7k7|nd(Kh#&Zc-dHP@K#TnK$!Xeq&*_-w>^66jw$6 zUZT(r9c}6{kyB^<^FHy8+{@9ze$bnE&8HuTG}%@-k@5^3NAhfC9}&|+0@2ICM34DK ze&9XyPhTCspZI&fS9_fJj)PuxRb$O&s%T9~nU2g*_l+>31w+jf`B^ObJ)a@Q>Vl+jsg2W{1ax5BLveE)E++dW3eAIADMHR zc?T0s1@CGl2LxMi8=a}$|2w4DMTp!j{O`Gt8_+#Wk$G&a?i;A55R@XL{Q*w?W0(Zm zQXA|1{Ah~p-V|=GwFR_t0Z1@|92PJtVvtG8xWScV=uCR?o8j>P5<#~a`z6PRHs|96 z$e$cCL^R)Qy1vGYHOX1*w*AVpEf zf9d|+2%Vv*6hJj9Fmfl{ug6N@b!i=EiX$JN)cr37q7my1>2EAHYCLjG}wnVO$dwo+Yt ztm7QAxg<3rB2YC#L}ly3J=Grwo3py9lV2n+0JZN15A}{Z3JW*)!uwdqSv~Ru z$)tixpHx5T)&Hu0F~Sxuw9Ur8d|I_l|Ee_7pvD*$mA>vvj?DTaQdVd$AA0OJW z%T_2M{j$hFLi(z>2$y_C`P>v5t8%&G30$}*uQ9v_4Lbe$?II1;Tvl+p@|3X(ZrDaa zh>UM-yVBwd_0l%iJx^)yboA>N2CAE7&FW1f-z_*(`F?v5T!ky7R#K14C|$nk)rJyG z!yWHa{iL`Phna9-*7g&KoPERttF~b8>S_5ln*$_NU7nvve9a&VBsLY!VHyC7z`y!p zxQIccA~hP{@BkRwmY9y zThWpP#2Ovrl^pU)UFFVe4;Y5@qqq8qjO43w#~$8hiMq{)eaA~C)ehoeXs1^1CX!iH z{fRJtL|bB5Uh~N2c$)Em#K3wp9^5E=o#^ChU-bHLq;rk_fb0xjZAO#!T%?hxrqliO zYC-sk)uEv=uJ+4+JJYovUe)9B`tQofGCwQN=&Mi zWi$wXR4Ai&_<`J%yf;Y@Opn*BAT48^t?M{<0qW{CffT1+A(@;5tGEqgu2dk+YMDCMu+^suE)r_|?S_-^$eT8*-abp7df zK}$)EI_YR<8@Kc_3_`-+{GRG)C?M6@rs#OJB6O-cTZr7GwjEtQqm!2ctWKA%KCc{? z?CWoL_5Z&;Exr8Ozw6)0miI6EclW!QtpB1r_P}f2mcHhAhcOx-Ok?hl zI2UPi-^ZP$&HYd!PD%t1Y4rOsm(UWxVdf{mGY8ojobPZz8t{%6A(Y(LMYoI760dVW zd;etC)J_cWprTWKM5Z%6yLY;MH(mOPcJm&gy0x4C#%HFR1E4nG0B3V%>|SOp)corH zj2bh!Lc953g?5gZw_rfDx==2D@c**9uW*6=Z`Gai_W$eZ(vwN916&uMHl|q_mT86H z3Ozx=S~|GX>fnQ_ zgXhx0dqpLv`sn!{e(!t__py5T#((SKy&xZYSL%B}Yu#g?V$bZaJUIG@L?N}0_EaMg zL)WL0w+to5vaAy0N8kv19H|0**Pa4vh?%A79Fg$e5(laI5 zT9PRmrxqBfk%4gGhd##Oa?`v7H(>mZxStT{m)8<)B%SXm#J!Wt96YyT^cMy-M9lg8 zo%zXJB^2S116+G>$B;40v%(y+L2fBVQ7x*2tZ$!u6q1ZiT!UY7Njan3a6pG-9Sv)vb}VdS{5>_-{Ze@8pe8Q-aO~;|C(Ym`_#+q zfZXQ&eVe`wqUV{B%(MP5Osyql*if3O_AVp!~_@d z|E=B}Hql_-6Z!x_>f%Hr0yQXz!7$;Cs8p`+TeTV?Nz~O|`VCUw^NDwTZmZDq$+Rhj zquf74V$l*`PuAi71Jt4H|5%6eJr!PUH5=3yBE{&_Gsw^(Re~S-pQ^N0s~JRu2(SG=L)yPv@y$6-^e(AgV)NTz!B;jIjW6(=uv@9v)9Tu z5PelX=5H}>WW2ZpSlxenK>vhOFR$X=0;Yo`<%IrKY5m%m!0TUYn|CL6Pwc-usBOkt zjC0X1>AmvI4fH?H?Irf8Rdndc$hE4N8w~Z`MlaaxjiNeag8zVYgz2 zE>hoAwSAsXkapmAJ?s0`w*OS$=UBzn*NKX7D6Os6IldNC0xKHq4UwKzdRHH{$my@tZ77QuSRJYU;7xAJ zB1gvc-n|L+)^|u0>WgWga|z4SWkusZSP*F|Dx)8eIzzArMH3OawZ`y}R&y)))Mv0V z>ISa4-P`d_WN%?xkwd_}O-I~y0|U{A7Xsqbi!u?2Ve%c)w)m>k^dcT>^E#7mcPN0u zt35awog`-L2_DCDhWc}#fhD8rPEoF0{vFge(Dg53=i-69=oBO*Taavv?6ubo^kPvF zc?-SN5qByjDQ)xj?8Z_@VsF7)mG@FNVuBR^Jv-~H{GhgF)&nl2iuKaW`hjglSyEYT z^WOHRl;D7Nf0;d)ZY)hNSnATE>xkjZI*w;5QA{mz7ZkawmIb0!S>|+xEV3%o7Wxrf zq7sCquE$_TYppuy#!Dl6U3CNFCDAGJkPjA|9!SIb!Is6`zHF7_l zB#e}zEQC_6sz`lTxp)$-yd9VqTtLuy>PYLIU96wAgmnY@8w~X!;V9J)&^9-3f?fJI zs=LXh)xII$!r+C0@*)Jx8tMkBvaEb!&#TrB)V2FOW%dwk<01zZ z&AiyBROJW%l2&lC@_UHFXIdb^^a(}jl^I-&`cvWodF9kOp~ziT;8jKsu^9GViGHjE zDY63`B)#o^Ms<8-RTg?gq_8J;7Zf=v!|@T4Fo%SdLnJ4#IJl-q;s;3_?`;%iA!Kc5 z<}?&>p6C`GvRH3QQQC##cuH`7Qe7}uYOF0|wnR?TG{oG4!=a3?GAHaNw>&eS4-Dtv zccA)2&h1gwL;NChXfhZ>4lAW0vL42FsfB(9Nx`Nw zj%cQEf;QWbs4D*g&T#obpOOB8k@)~tqekx4o_o8g(=jEQ-p70Bj8EU)^Q>@|K6`>H zfoX&peR|R?7 zw3>9%wfnDTo0kVPBd>f)s4aMTI4pTHC9Q=kGX$06seTx%|qvaOsjpae`?L=}t+<@boBlE1Ec{lI5DDcSlaJoyBl z;P*a_&i&9ZQXzO9>Xr`=7TZ_Q?at&VL*o&bS>!eIG+%g72MNTlF4pjx#r7i*h0 zN|d(w#V`4Q5%Wz^H-ag58ox0;A4%L!XZtQ!u$Q>fI^GL^gsq9Ehzxxzb0Z>Q>@4+Y z?d^{osjf?FPXU$vlDZ=kOnpO(j2RA;4re&D%>&w-9l>$l`a&mIW4EthPw3L{QCS@0 z3sXYQ$aS{hK%{019XbYS9`%Ct!fE;xmsqFQHqW$21NMRgq1l1*{n!El2XAn-O;N}n zaM=##WVS?h7uN1+o8q8Owz@QZhAViPF~@-%pea0MDaXHd-bQHWK zOoC|7&B__$?mvnM!xIgxqAqCo#bimhbQw8m^@PEax zv9^)pMoIKXWo-VR5{?!4oV-14Q?tHY%>tjAE&F9UGdU1_XbzBp=+cRKdnB*}v=4v& z)mB1Tso_`K#DPR5SchFP;vlo&b@jD739gH{@YUA}Y+a;}atnA}MAVn-B7IfJELP-X;Dht4ZH~yK-BcLr)f$lnVcX;gWwfff4x*6xD1U8{*DZ&VwpSPvRDj++R)H+r zy~1OGbdK!!t7KAQd^f;L2SHcKgw+h#gRNee8~Gh=vP!j@FPT!jBh5a$i^l~o*J`e( zVjRKSA~lkjzu+RHG#KezzNQ>=!xcWGvbI0U&WS{@l)>d)qeR(s>^TRDn z!HX6+I}6I2FABEO4fzd0Q_ZSPH+A&xdtyK@FOwH23nrC|;+F*4iri9Yo9a@_l|@CQ zF0tqMmCgQY5J8(tA^`DxZ~Ih_yDNy*p7>As`13@cKABa#JZvaqao+Hn>utele5Tog zKC4tI%UeG+U=1X$>#bqLHLd3$;xBHC$jHf`HIi|#xJ(B512aLU)3I(nBC}AdJwd2y zK#Ep#R6)!K0>df2vA;^E0A$oI>>2a~L6KKW2x6?B*N<=upl?|L*pUI2+5J)MX2RzHSas+5E{Ck@hzAc3{8&hC7`5W zg*$XjtN|zT*CghjEq)oK2@65aUFMlnLcu#cq7a0!R|$GM8N}mQ>0KrTVs|qV;HGvz zPhHb3UGqutcZM+SjG|!V^m6TfO{U}Ddz31Kxk-N(ZVp* zXe+v%Una++^5HKgO-8CH@<9$f&veWQ&dfyQ$Zb3{kvwpv85>2UT`yh8I24A4@Ehhm zy_qHYMmZIt!>^a#u5Xn5x&}rJpeV2#Bd>}{Z}?CvN`hCK->l(?q(YL4^ZLG#=j@4& zj;LcW(lNZU=WQqiyyJ6>X!^7%7`c4z)$wHDZThU2Pk%+qQ&Q7ftynHHl*x86i9kPG zUK@}$Ki7QVv>vG>R_2j>;(Ve;8S{(6(Z}xl}3=m9V^n(fr;W?IZU}-63c% z_QFRSkNwaXQh?4-`Up9vOd3Hx%Tt>=Q&LM8)*hrQu=iQCkQ{As%`zOi8WMk@?Bxs< zH#M7U1vy5JToO5b3BnE0sD&#_bG%y{8B-2&f)n*G7+!`pEj}<@p3^}p!I?c$Stzu0 zqIc_&^QlU$RKY=UN4R{VqMyW9+Nh+jky1aYz| z=RPN>SNKVR?l5Wv%j-qi-tb2`S}iOu=1rCyVmU4XV2epSBkaWDF0K-8)bY7W^a;WA zyn`SvPAcyJH=SGM0j!Nc`Q8ezvG{&w=h;N4Ul)psJxgZV7E$qLnlAPP0+FimtkSh4 zl}tj@jOppo{EW!CWvdIJo>@r2+^x%r4d{#9`m`k@cPA0#%Mz#;1r5JTj|i@ek1;mx zCwILxs5pl462qTvOm`*WB|Rp7^r9seYBjI^lI`hWPpk^ZF@6Df(PiICesXt;guo)V zvY5e9L#q+uv-V(HhN3&|l zP~?7@YWtFB;tMg>C}-j`@?62PzST#CEfwi>h5FsIXeI8TC#6(XQvTony2o8eW70C)gI~g)71QSh=vHCA>`#PDa_Rwf`u)B<5myNxx zC_7BS@xkX&^ZEQyQ)%A?I+mSRwce_FvaTLwpnyZ>5N(TB+3!*a$ta}rZ`TzXicg|H zL&L2EL0L#r*uP<__+W*aR;052dM1}i8oJVIlj-f?p+H*F%W81i`QhnmN@N3>(?;t0 zl4l8YvD(Zz+zRvSJTV{p>QivULo>k<5a3$Pcd;u2-e-5mA$-?M_{L`N^X+skFwNM1 ztx4QQzqhF#pz6wR&t+@Gh|>K!SmYxD8fG}fu_%Gt)lr|}zW$I0)GFZpd% zG00md8b`vak_gm;`m`w*t*{wCm9T)Z_6Q#yp{zwTuf3upb4jQd=MEe*q300Z;FO5X z$H<4;>_}(-q&YHe-J>jDPAS29E<;c!>SCJtYd=KT4&51_{=4TXB;H3^ajU%p@Z{N0 ztDUbr>R1@;)9%lAX*D8uU_>Ov`Hml{4sNlrMD@(}r5@Q1=$Wna-?ROKreP)OTiM#J zY~Ln|O3EoT_8RW`wK5NpQ$wS%PPt=pdu|2OA_sb#=c68zjMu5-kJ2mCYDHqrYHJlP zNzkTjN|Pz&R4k;d4MfClk(BCmh01iY_)M|<(P93LUN%TjP^&2Kkt-Kcy zcgfVb6xVs`>t$g*Bw2fR^AK#T5r3pX@&l)IC{I@>qwu2Dd`OV=WN%KOf5pw<_z~c$ z6{6ONNQhmnt3dRXNAZ|9|5gNPZjUeO&h$3~M;gAB>HP$CWh$sUo+g=wR$=@N-^g!e z*e99cMagDY&Tdm2QUGmjQxt*0dNTeZtBV7+EUMV=VyqvlQK8Eyh<=o%0Pk&0zPX!? z2pb=hwaqmn1f7DziBo(rSR^^Y3t*f{bMN~fA`$;KEXSa(;H?tei(qm1^fs}Sg97Fe zEt1ee8SJoEH62NTYi++zcmXYuME_8KLWiCYl3g1XPYM)AlP?LTZd&!X>IW(gVqvg9 z3^!p{)eVf9WYgZnF84l;yvFt>Fobk`7{=S(ku_xu+)weMu~{dZnXuj>N6!j7v(R2# zzMoU$!|)BU^Hj1nO`n$TEx>ZcH1}$7e+{Dn5SZSAQkp|R8ihMZJk*28H9rLIu6$SxP` zuR=TE3ocR0wh4A*I+}ju>7=>Jwx}QsMv8M0`!EZX)8gtfTj)FS-qouWWf06ZO0)7B zFE7ou#$79JW)4tu^O=u9q*WZ3B%N0C8I`j@h&S&iGGO$DOS6*^4@66Itd)Sok8DKd zN1woI6x*Q&c4kT^T9HT?5ii7%9+6~b15iZi6#1F?$*)zGNz$h~J0XY6hXHJlEF_Ja z3M;GC763-lnmYTMSx>V5nyBF!4jI2+69 zS*wXk@aBzj#O8ia&N3r8%LK2)lo@2>pfUSlSUqYu?(29bKE~eIlQ9(^IwDMB#0W2J z9M>4v%*%s4xlh_=Bb`hQ>nM&P*8>zIr*~{a^4oOU-E`E2!Kog#RAhx_Q$i-b4?f<-OoE3(fbq!trZU1e%dPKavHEI z({viV8@w=CK`~$|72@>q7Pnm7=+ti%mV#}gbdWJSUyo$sXm5sDXJ`DTid~T_9(l><7klM5eME^)149w`2K=l!XqjjUR1Tf-7uEZH0Wd}GyOZh01Oas?-l zn_R^A`@vt-^|P8!)tjyP^gR`Z%ICN{)qGON|E?(&zh#Hb!&3z|b$l6lPCwc4dBwJL zBna8ae{yg*8~Mo3;WyIgL#N|cju4V@lA;?kYZF_qt$fF}O=_dv@Fp#f4xEBevLI4WWy>zXhojUZBS?_1257s+xKGkNZt zEv;|?2^cdmoP{~qV6Vu%0h`6J77o4z!cc8;MzTL#8tjottZQgUTzm zN~M^JF}XBjst3Mg><&VVxtYcdSjJkOugbL_gu+7CGH~c9ish&N5c5kaE^D2VJ$y8@ zm{0vSc7-a#gVme4g+0r-;M>rnEoi%hmd|w?H;f~TvSb5$6mmqEaTFrd1Q6g1DP%99 zv0eNaz4WP&=u;`2mSQDID*p@-rI;?cgs+}u4M9MdQ^AbLn%m_i1Eh)q1+4*X>Pfoi zh-A$Moz2rA$G7^aoe8#WBOjy7EZv0ZN%aN>9r{#ioLz(6_ zkXM`VwV|bVCt|-PKX{kwB0X9&UXqnC_QeHXEZ-F{?%%D7+rweL(;m9P$5Fs|;3UGw z7}aZvxwYr^5*{4sM|aL67VUUYdh;IN$o<7lA2_Zzwrh1{2V%%O=o|TVM~A&h-whM4 z5zeTucVm1EHRpD&FjMaCwOR)*xmw^v>M~j%SK@bzk#sbH+!JbQFiR& zxw51R!43U2Oy*pTqr#z$J+l0ATnmsFaXbGmatmWymS2cxPP#T0SpsCE@|X8UWBWqX z&X)}~Z&TR|DL^fmNNPFDUUinVfY0~1k^Mn*WzbF%5P+a83NDD`WO_tG$^6UhO7e+d zQjK_xR7zZDJV`P=N)_g&*Ub$8iDV1^Z}p6)HvNXH?By**ksG>+5|qZZ^G~W2BzW8^ z11Z9imYMfDh;1hspgEq=S2E*UgqX&t$P?6_!jYD651pa%MWtpkmX9vYBA6#PyQ(X# zQI)nO>jPAV@6w!Nj&#M<-)tbCWT{et5YOr%v6CIa&c3t(M4YG1B>Ca2W)JbfpNurF-bC zK|k&uLWGU>(`5(McrXRVnfof#uvs1QJ|z)InxWrSX(W@Iju7fhpUT4Aqkt~PAyl|zO`9jX|vza=3rUzrWSL7H7%qfZfkDzdxa(?$M79OlYOejlWLfY zsgX6T()sfEtI~{ekLY-|YvR#g)I_SP#H?gE<$ZN6W3gu(qlAd9s8`W?>*6&dmG+vm zRKD|^i`CG%CGsW&K&@K2RZ45REnu1?XO+CvuHGw^r@I#*6DIe#8RbafGW2mYr89b& zL*z`aW+NK|dmnO@t2G zE80GMWvwHmouSP8^*cmK@ymGRC^OM4LY_<%B@*sSb0J1Ly3u>+h)?(RLi4E6QLuN} zTVUtGiWlKFrluQn-HAr1p}Fb$RAi9aa@1CYiCRjJ{hsQ0WvZhpdw#Z;NzG|z^YSZb zOh0MoWdz+N?R1{|qqK9^@=QDxG;infKDZXRnf%ML%tNqdy5~4Mm8>T((&gHysX56h z(XWyWX&W4CC2Og0kxWg(kk92;4Qq3YQ=9dUHoHliLvncoNHEYm=aqDpIqBA}=_V1@ zJXip45x2^s%sE6AGS7K|`hM>nvK>O~&>uhr1F!OhW3*NKx}??3b&cNKU8;B+U>wOA^vrd2ThU%B(SuO~cSWQ)`dNim{xS z-tLRFv9B!;Xk&+Ndzv|Q9U(H!_AbAgY4$q_8cmSXjf-yu*mEcA?3WTDi)l)xY?W+( z&YuzlLal(2(mmNYmx53M>zBo#7*ok=-n)f=vGe(W|9ipORJl&&Ey|i1KXUMcl4lZ^ zGhmntnVZgIP!r~sg!&ja%qp0XRj56*tM*`_wi#jDpVNan)9t1yNU8=sE@jzH`r%g; zDE(ljsUa_YLRw==7CcrQusxye<&(qjb!|nt^5Mi49CD8md+|h0 zJK$0g8V^~q4e?4VQ4-n~Uu^jstaw{|zVuLf?Qv_?DwJ206`aylXc$0B3pYqH7u=IB z(lr-SOvn=-V%5VIzc5*$xZ83xh)k2JFe5*4n^2c(gyEpZ?u3^PLbC9N^kJinGhIAI z;iMyQe^#V}NU2pC7!%aDmCLU#)R!bwP}*kr?~#GfNWiDa5fTiL+Eye)lP&fLKWGCg zYQO1B23l`3cKh@rSabeddv01*q$-`+z7y^W@~3n6Xk+`{>p})E^(O-&*D_D8|2>L& zy+gFZAtBU7XpRM`f=kS83z^)ABmWgKVOcJ}-lRrxuld9+T?oh@xCYI?SPwrRE#ly+ACwg;>mstje~9F5~S;zQMlc3lgW7xqDEFj}z2` zN`$VA?trd5s!+22b;Ec%K{h1wMwRcN3tr{?R|YTV_AE|HXq@U!2SIUvK;Jvzrp$X> z=$%dYan@3dB3=){x+j1|hEQ*y{;?e>j5!mk+XFfj?qpY73mAO>3c*-N3FtEs^G&J) zicLuw)P@z{4)ZN8kGRO>46(}$y(n!sZ2k`XfVsSY?&n@vF1sEg03QUF^G0ga=Fd{c zG&ujxIHm0m81%`(&{qLHmwM=9#sG9PmoQ=(tTeJF2deCAmfln-{HfXc)EtA|xzrsf zpOypf22M9-Kp*yF&MpdY=3x~mB1&1I&e&u&g|9>bxn zyO==fH0z}o?yDvRZ(9)zT_@G@>nCoA=I5K43z%Rs=<4}{(BRl>^ntfN(-ZFO6Li+O zkUorQQ%-6opaUy<9!lY}0y(USYg)V4-3QCy2sI?~b zQVztip8+H_C<;s|3tj0mmb$%7$G9lzF!!Md>Msy$WC%+7wJ9g)Ea|04F8HxpG(+vS z`1p!Rr1OZa$j&bFc4wsO`eD7*?5IOtI0@N*(##oNsY(%_(8b7{I84|zi5=FV@niGB zKZ^#lR{IyK#nM!k8%6aQiI#?Oa22dB=a?sJRg{Ku;p>>W)Y8}(kjbe(>IMv6j&YT~ z!G)7)Iv`NK(xDX49lq43UJ27$CgUgG=wgpNMZQU1U*|p-i0Dg(Pp0Z8Y-nnws1P_U_5N`;g(w($_1wipCj%*mb(yl-X4sjF83La zN+0=*XZn_qw=cRJ!M69%5_^?wM6DDVBI9RL4PU|D)dPG5pLn%jwE47>z5benPxH6> z3f`;AP{F?<_=fig*8C@=^} zVJ0bspO@lC2 z%bp+5#x(l$RTvIA4GGPbj?P-D`RjRt5I>`R<3L~9b7G%Rl-bNWB1+2tj=kKxgqU2z z#&Mv$gQ@aZ$0|(LJHDK5e`mVhJbmPQf%4tLOe$ZB22PXGy5s34-fU^|>!V~|1V$pz zygTq%amP7t0bYWX9LjM}NY9ZGhZMHOe zHLo$&#;2i?AM-MTX<|#>!N^%e%qCs*6AlQEK0%cBV6#tuViPVFp1$EJ9Q3kKY8*L5 zPigeK_V@G!*wwN}voF$S9HP#wR1`u9N(;TMZ%_rVa{MzWmA=-22C<07wGmn^3mt9a>@|?prbmY}}6z9|L%oe-6*unK@ znXj{DQjA47sq=1+YU^hgol7kxze4g;RNQ*<^hVA)=q~;C9IEZ1+PT3Cy-gpbZW{)a z+EslcV~38&JdL{;8RyODy9j;EA?)fm@3cB>GBkkCS`2A&Qz! z_Ar}LskxF!wL`aXg%!Q}pNms$ZH40nc``6&T&PH4g(Aj#LY)j*S%TUo%u&f;JInBK z!zG(4!^fGfw!Kt8wes?g_v3@=d(|`s(o}gwqOjS>6(^?3Kt_ zo~A-hMwi;vrGrexrg*<_!La42t@a$I9#(+ftNaXVven_{c_6XQu+O^xcqZ-=PXIibWm&hzh;U68JpGQuK~Rad(8c7(M(Zuu>C>jl(Ka|# zj&{ts5aQaYLVLro2Am}ESs;mzP|bU z9AuLgkpsrn_dSGpaO4%ZJeV{Gw|Og95=kauYZ^0YQlUU#CqpVc@?7j`GQ)OMgIuwA z=afXR-d}+>i?!EFBh*>K5^)xxPans#S7>3^9vxdtuN2lVwI}u!hR>Z{-XA7Mdjn%> zGmqb!NEFszMQ|cGk>7Knj2-8QXpmKGzDaC+grp%@3b%r{O0boQ0^6iAS(+lbXf^Kv zhpTY;Kvj%T4CWI+sC)S6l<>sD<+&L<5H#cmY`}0`fFFvC<&S+K}}sjmr0OUg8tMM1jezM0SOXjoyzNS2^u0n zb-0pM8n(=>s-sC{7LoD0lz+7NPb|m3KqdZ;`2QjP8OlFc{QJcJUF9Dm{vF~UtNb#1 z&E4X^Soz0_|8ep6SNv`m^{?w#{+nf(SE91oEjXvWUM~I-DlBX2v+3_Le znopk=Pb#8Vo>{~rCtt=#+p^s=Q!*&Z7nAI;leH~1o*N0#S7mZV0!1t-ejouwqs93{ zLI{3 zfODs|xx|&2FfF_CDlRTcGmX;BNT+Shv5+!I{=?Lw32!R>A&uE9x5F z9fgE9ee8&|rI<@d00-;4@#}ej?dUM-7v7$}gtjDteF{q5Yn&KuD0TD1Zm)=Q7$v2k zyP1}74#J7f0)c%b(41;z^NKgIFZ2bKWH)C+sY;WF4dT`CxI74p88^Fq^$&V(BX?i@ zdQUmuKygzB_LZkKgz?f4*B4@YR3E8~!E{yv`f${3bN0K8nN{enREk-n1tKCbCOrKv8s%?4D^EhAb>3gGC>yX2vPo8J}EkM|Gc%C>3ap8Uf zH)^7ol4_HnEP|d&MrY&Rlyv7v-p`1KeJ_)#pAd&2OqG*cqMsvLRQ0SFCJFl4Y2HYQ z$72s~_xy=iRM@?kFeMomaTyiZI=qR{l#m6Lg0zq2!bZR@uA|FXvMD|YFKxXLPw?zK z>e#n$ifq8(ec+=}y+r+bV&2_%? zam!IdZ!FxLj!r(h`G`i@_e-$3NdeA!)>h}s%!@N?XFbiVZEqAta{G2h({c<5qm-Bicb=5*RbBu)f4<;PLkPS#CytPdB1!fU9M`&hjrf|5Ii$D-p^wcYOUUsLxVj)j0pdLTh92;P z1pay8<5d=LFr@O4Gp+fkgx{w8IrsrEYbEGLN^5XgArfoq5;`%N0d@eBu2EgJ8X~z} zFF+SaQXxRBp;W1-5urBu`cM zK&mQUAccG+LBc*%L0J-XP=b!*Qb89=P=f?1`d0F~NP?b`ptde3h5R0qpqILWU{%@7 zwG#B}WRQMRM(VUZG$3+JYZxl=6%t>K3p~dQaRgs1!8Z^bzf+ZemH4j{|M!(&ksDWt zf4cH3a$}hICl!Vh{ex-z_6prxU1gh6GAloHV_bx^gPDY;hWbP6DPpd-!1t5%{7;yj zcPWBI=oEAN!?K{DOtkf5Ih}l)ActcdHx< zP+>31L5Wh^92$~n)t6!%!hewj!lg9P6&}9mV1}i$#Tyg*xfG~-K=wk8{v}vX`3KM! zv#x7Vbrg(Q$bZNbnS@Cyr)C&k5orx;_YcMaI7X2UL)4i6{K(qpcr!GK9okFSpJ&pt z*b&n25R$q?PnduIZwpZLs&>c(lfWxK1NVUOa%JyR+YPa@vsIAZYu_asnrvok)LtYL zP9jA-NP@E=)9%78+agAzLT(t}Yx+tyIRY8CHn0IWwapKDma0^<5VFB@k9Yu7J0K4h zSt{w_FT$v&OJ=V28cz@yu7<6R&wHTKlZ9CWDOTLP8w&?}XPIxpQg*e$j8;RKg6Kr^ zdRj{F2mxk}hq@Gc;Rt!jwg*$r+%^-ylIW`O3PrQ`ft^qNk?trl7A-Vi=#*!f{MgT~ z@l23fDn7eHwefq3BdtzrQsym|0|;#i*yYKkGbnsJdhhkt%|YbZ&4ohE!8(k^4@NYv zDa%{ezkViQ8qulsg(=>;DUOl}+{cHWo6e0zp;SjdR?KsNC8gl}YrSuT>Szs7g}tHeN-mysB@GOQbKxYCixS+<-WW9yMu zu%kX_3cP4@SP|9RDuKy+ugKY4pWaL(v>AVcHNwEadEP6xP_20hUwwaX_)N|+XLO}K z?t=IWrM9N!2!Yp%S%VKE$ANvj_BhP1ei-j^+t<7R-5hr%-q327F|IJE0!F_w>WG!( zn{(s6?SWk3*EW{HH9KVuPdt^Tuye|SW`uj}oE%CTspq#3C3Vd5Hm98|ieMQDZX+Zfn58uI604$<|YpzFRHk468F3~ ztwRXDmz3{I%9PW`Gx(tF(7bri^Bde~hHc`Lw+E9e4>r9jV&QtJXXG23+}f76^hNo4 z>G)7DxuydzY|62m5QptM-9Z&>%dzSEn@mnQ&XCKpbrTv1>&c1hc%z1!SmlsxgMJDli)%62rTpIQdvZAhR~ zf0RQ|Ev$^EfR(dP@OEoKKZxIA4*i}Gu9C-ls}rI#p{*N2i4o^zlR!{!iwzx&{?r^?shLwqSzP{BT}@^o6JmOKyQl)?i(3fjg!9A4IWVP&>pgKn zgeRQ)#f24$h;tXN6f;HDC-kT{@ut5v5t0Qd%dV=o-0#G`%Pg`40BSsqG?^n)-X6su z<4x#FXV?{v=M~m3DJ-nJXGvlGIEb-ZL%ppN&>EOKYuWqOknzN;mS;gmypXx5F>{QYZV-!6k<&oOM-Uz{uM&AqbJ?UWNs@Wa$7_Xw zj~0OfOP;S>hpp~C3dcjvS2aohLHscZgaR#;IY=iJ>z{Fmi0N!dUgJ9RJtQLq)&2sg z3XWAWmlJkv-FNvmi~`;~3xr5)>=2rS3n%kM6Fh=BbkVjB6J|_P8xfp-ZSyQ=AusLC z@}(;`CMCX5-u?yq*7QlB*h^IZxT}Iq#0Oa}A`}7Z&A}ED_%9L*=W-WILO&KLoZ@e! z5)wH?JaU*X@ z5cf&TJy6`jN24kA>z$`@h0i2{BM}P6in~`|@B2akwax3DXK<*HFL6jSBApk8*hn7q z948?HF~#NZ5V*i90lgQ|DR4NEb1q82%H zC(OAnENdMZAqp#NZ80_LSgT_Z9F?_t(#h-+a>)DvA<$g1Cm|HGE5wmrWFV4vH>pL1 z82n3D+pZ(hxgzv=akMJanuaGJv69p925%jrnXHQ$;wbjk&z@exa+&41J~*6OHD09i@De)TqiQ+)t-#@?}9D{$H_<3%} zpKplR|zBcX*sS7f(pwese41BLh5Eue7K0NYAe`1Mq20$M1FK9)&= z9Dui=Ra>6|r=V-U4m_&JVA>#uYB~Li*h6%dr%-Lba`p8#4=Jk+`P3iryx=~+84FU9 z&G=&^7G)as!{5Mv_Rw$43x0sQ(locT!eGXimPMSuc!Zsp9r|R&WZiKujKF=^Fbe2z z2Dk-snTN)M))1rM&TAK>#jF&1T`e#PV{t7QD%($kTi>O&$&1l)n1LcQcQfbe9=Bs~6ZS=6F+^FXqQyifH zzAUep$U>5sbBCEnO5RNkU{S#p%2J3_G=GJnQ1o;-?!^qxw3yF0L?Uqk!cIBcSIfq7Gbe z1M3bB;Eq{JkPPZ)Wfs=WW}fWK`PXo7-E6xz{9$2NII<6paJ|nlnfG1&HSH_89Ynez z`{!6}$u6qUDcVobj9=|bObqy1ZeKyA$9<0}tgLZ?@=8x;3F2SllRPdN1Grte(BozB zx4Kwc$X}xxoVmiZg9n6!p7a4I&!U2a&(+V)6jQ{|4!RK(^C!m19=zJv?veW<_}in* zUoDV&1TWFHJmc9cFDOZ zw_&hz&P`ppRakxm2@PN=ZT=Hi=jj*i__j^}UVwir~muEs~k6gtgw%O-k zw6{$JznN#|BT6XD6*(sAJI&|+A!&HGhR$u6aCf)+r#MR3o=o=>#Wma7)%IsHrxyTU94Oq7%aCKI= zb476AHpY`3cx2Po-Q&dw5K>j-A|$~(fQDS++DdLaB!Ba*zjFtUWu)T)j!7$h#?{+@ zhK}hXu+s;52dht%(VG><%25?fZ*r_lL=yI84trwcIoUXyE=EG|Xw$hqR6jZgvmV!J z>qb$3&IicQY?AEJbj{nNZN7HGs_aTGKQom8?DWBBDHH|@s@%PsdA>~PhPeA3ULi-A1-sF1F(+Il;$`!kZ>lg$ zHRtV>B0*o~w7#P;H0iDD6?b@Bd)d6LQ+YTRj)?vO)xjiK>O^~JFjH)*W0R)Uu>NeD zPKGXyZNo8<_k_Ila~(AYgL7C{?af-y89sV4R2+H39(z;(`UU$=>>nz?9GSzu>`E`U zG&0XtguatZc1_P@qqsiEvIQ^oj-PriG&J&tBR(WL^K7`&wcHtb!xg_CN~xFREip5V@*77q81t>PEFXP?JF(;DAg6Zh{`)AhJynpJ{9CfZC_&I{g6`DT_mG5 zKG8Cv%w3gUT-{bkonmFIMQ}ZGDU6#_s#2)cP9(4dgwOagqzIMDj+`5amX0qL;Y)5X zWOGEi2JnEs@8v=ot+sEU&{bv?ClU2bM6uorf&*!L_H&TGSYfShl489Djg?Il>*1=z zGhu1Aw*F6N*&J)zS6i%$FtkD?cP+N}C8tS0zMnZ`EDf-%x+a^CU7vd-YOc7Ks&tU) z#fUUJGR-^Q1C2={^^Q?gg5+0~c0aS}(cy;1Q*r{t{8Kv`uCk9n>} zn?myym{oneZBufj?07$K>XdA6WCkRsJ|zdc#AEm}hrOfy`s!RR5=RKpnIEPuM7V;p zeG?`v{poPq(h@j$fz(O2;6_yK#_=h(m%$KLSDP1(l?AF=8M@RPo$A~Hw&7u%86KfR z$tc$w_1k$!$seukH7Jg?xhXk*`)A&QT~$0RHYLj%^`?uN6j>9BJi?-AEsH(P&_~YN zgPFQ%O`6CNI7kl5ln5sPqi7+lynx}@jSyYvw)h?1ts+F|Dv;1~r{?6xJ=VBNlza4S*dHI9oqC^(OY9 z@v+UXH)8sIYP}04;UkIW38gvO`g@tL$>|)~8Q>MT9^Ab^`6?8O+u{A)k&tO-*3w7J z7MEyd3b`!?rGd{L~ z2>4h9bCA3O>9v?=XIuF4my!Z%ah&Kg^wPH6?5wE1_u3Tu@}c@WNKm?}|0#p*mDg}M zXqc`9#F*pfMxzMixeWJ&_ld2)k=c(%@RP2FIxJs`%7jc1j&N60anncOlsgy7k{^!= zE#wFit>*ZD$~n@H!3sCzqN{}RayYhBzN@f~P?1oT=3!_Ul8rVO&5|~X^6r+&Q;=KG z)-PZt8~*HgDsTi;o)-Gj7Ee(!Yk?lK2F`lyda3o?9de53N!L_=x`{>A=KQFBIB8`n zEcO%%Rr`1~#YL+!cEm|&cK!{YTnyEC)&r$&S?>v}?}HxM-GmQJ)K78N?$JxL^=U|} zP|+Gsjf!=L`iemb1pcIkc?X3;{1Xe^n3jn`SRxm^cF$qF?+>Jw z-d@4eeo}93^OY3^`|i=|`bgFiB9bK838A4X57F(F=Shr6+eGu@8zDxkD?Rt7+Lv8` z42X2qVe?_Q4_2GrW3u^-5x>yk-5)Q3&Ax=rjXfY$xr86l(3lcdtEjdGP?2LWfUs#b zFX4^5BcEMjK1>;MM%hA$zQ_~51zVFVv~^W@t=VRYaQzyv@QRFQL;Vac;|`eqXfVwk zPxYm$ZkJrWi8iGEEBD)ra=Ys668)L0NtxKCgd^Zja)U}{4B&S!K{CT3W zLchDeP@8Ck(Cr~i-Pd>)kfo@T=3xHCW>flN!i*B`s$7~0j|t-b)Ndifg&r1GsBqWt z-iY^wbO{jtDFLO)_>-1*R?;h+Q)sA}cm+znny*>X2~SiCnNN_^0gixG(mVnpyTbw_ zY&%lT<|AII16~OguW;?~3O7%@H}j>a@9~jf`6i1J2tov20C!qmffw&C%PaK|ugD(( zjNpaxig*RNF65JB^|(ZI2YJ|Te~O%Den3ESGIsIvmSwV!Jfnulzvy_bFLliK*Rp)} z#6F~kYOd?)9`nyP2s&CZAV~|s8Z#>n$ShJ@07x|5V_d6OWf_wlxNjNeR_Vro3{YOichjeeG^u3ORR&Kk~uBU>qb`}cUX%&cm=c$a?dAfIKoVm zd&VWXGV{4-+*^4H6+;lhvoIypglAVd$bF-17N}>QSBB}TK_XjQI|GU%R=|&3zDbKJ z1dmOU(Dm|@xt|}6AB5ONDj~>|T2qlcZwy`>Fvgo-y(!}$l5xh4hwwccnKVcD>tU{>Y{I#SuiYREj`H*t28fUH- zM+6yeC3L|Y?duNH37P4fM?xKrqT5Sd*V<_^xFeb$keKddXAtzCW zbWR6CtLfw_2s-vx00;*s>pNZ1V{h{i{klXOlP&=ksC7V@UtQJ((sHYSJZ*uTiztv~ z0&=h$WVZrYYk|CPf!rk^&vk>`ra;OqkgXQTtpc*X8|1$gNTCJtkOgvsfZWjya)kmJ zYJuEiffNYHlx~oG1=0xAJftkQNK%>(PKb(hc%A1v1S7dBOsT2}rOT zoWS<2R5s=?>gN*;7^vfIzKyR93)r3#49hxuhH9O$G8d3uKf9 zB9E<_=Z1GR`XvSOXA7j41+qdw-tPu^Oo7~Qfqb||^~+rXvb7sz!9p3M#TH1D1#*vo zJk$+xl>#ZYKpwY1mI=r`-5}#tL6=z|t1OUJ0&+t)$WR56YJrqlAa@GL=x&e{1#*Nv zlzzF|0x1)a-rXP{tGc{ufef%fiUj1?C0+gUx&rxc3*@uas?lQvq@^3=1qHI)0(sp6 z$rg|&xIPY;K>AxC*aIZ98)TFM*=>OgwLp4HE}!RgHCj_3zqLR*t5l;?1!P}0$d|XsNZ)6HylsIb zE(hd~-5~EOkXtN}mn@Jo0#ervvO|H$O*v!qfCX|^KyK>>c~XH~Xo1{if!L)kleDOC_1-_f_-lZT&CHrGwGge*P@b`cdlz~UamQ|EmiCjkSX7L>OG(zvy!`pJ z7warPggZ2-6khXQseAwPT+&sO%i8)R6~?MUl88v|k0Vs@yDC`YwtgmILs;mnjq|Yn zQj;%r!BYH(^_ToarEZ-0M}QKS0ewCn%3rM*WT?(3lM0e?pKcELkGN#sH&ehkh)1~( z1F_bPddzc{jx}(-c#XGnmsqIK{E?6LBJVix=Vac$ZP;%E-TbH?n^uTR$q)9ziDTz9 zR=*rcWN(jeW0L=LqkbvxuR7zIOtkbZ!sCNn4-Qw4Ccb)yc-rWZrO9<-0bjrx4%()cHCn z37Xj{G_zA^#zg^DVY;{ZI7|}~_}^iAThad?rsKfWrkscWBslj;Z&-7Pl`6mr14M3X zMk*}Uh#-dl2}3$#Pb8gQ-Q=vbUJM6ue$|bX5&VwNA60gBSan2%af@_f4Fq3C>Y0_nCEB}Dtb7XH&tbwzdXL|8z5q% z{bWeyJuY?132wF4p;o}y=+Pv|>Ftv|Ti)%af)!WFjNm{VMn?vCEqX*EVxxxw>_;wa zmrsh{z>(`acH)=krxUNTt3lBygiYzu?~x!?+@q=pfSuRK};sC{n};cE(wf@#$}8yw)D^Km1XRxSx93@+sTc>Bj(}HJ5KbWT2mzdoD`p zwI_~rzlo@TQJxqSFskkbO6qLvQsr6o{7St(e*GMyrTHAgwdfxiCHlK7nb&k(Vah&m z?B*R)#UO)N&RD;iHMLOaCN}!hk&wip;Zjo87CI;X%n_BDDSo7p;K`H~d6jW$>;n3I zpp$v~NC=oWcP*FshSjTZH1Qh_==s)$AR=lnZx;|dx~%hVg3$Qjh@UTRKtEF6rj!9? z-3VLByb7=rgCNHiEtZ25mm-!8Q$Pm_sB$Bd%=#>{n(w_CJmns2-c{TUQcMlUf z3DKdI);c$>uwT1RUAOe)@?Ze3WA==tf7s@D;O)r zG<@knDc71#F|55gT$eqKeP2-v*=hZaH81^S{aYDC5@KCQCi_+=dv;U&>pn4uccDH5H44nydIi$s}TGXtEgxq5bige>+>(8g!0Q*5*9y0dS zOrs?ZdCzzhuee4Hk`miGl5NHzwsMEGbi*xD#ET+|r?aAhPVB`Qc4(d*+6)|{{0reV zMPb<5&FGu|>;i~}Pt_N#+rekt(2~ieHo~#lMXJpM71DcB{#C6WAf&4%f@)&ON-}Z2 zq&;TMG`bTDGJCA2rA2gs6#U(|jF;;1mlagAv^CP}d}08t2@SI5QC=d;dQ=8WWKeyl zK$TSmx1Y;)k8O>r3;62E8p>a(D*g|egPH8Az8?aBNsBEKj#TZHpwtq+LXW6d8;;P$ z);BXKlzp1S1P^RWDjIUbgREbZB{5_k#H63u(*oOTUC##q zM04)IlU6y6v-CfZg?=A%FzXpwiM=yWn9P@Tg(|qpx{dFP__oH{_-Wv0{qAeHsH`z5 z)ThQLQC6hto?E38L(?Kvi{vW=;#F@*$Anyd#S3L&+g!SZo z+zAPJ1Fpe~25sHMr3%l)*;W-T%aLH6;XM!J;HDwx%T>LFxbZi9h16C|30} zy{o3yKE{QO?$=#HC#V(i+&vImDHE4YQi~W}^|E;3@k|cH{wQ<3QI9<(GeND5tbMW{ z-^7$L?_Wc#Zbo|f@d_)qpeU9-p!jfiT*H+*k6AZu``9#PzI%*bPw`%F#VYNd7b($H zo+pe~5k6@3bF z$xx{R60ihlpP?VcePCs@YvC0(b{VS-g(cSGGw&BXbzYXwi7_IZ$t91Oo&*N->jvy_PoSdbj(ivqNAZ5Ud=&ho^fQxWM}{bFpBIzLJ1-1$7eh z2V$f&hAdtpb3j&vl#m^ady;v%%qvOOA70JwwO&CkJt+lg9Kv3X$kaopiI0^b$-LK? z8~VeEyky=s`|Bi>0i^W53|8p5lwU_bo?ROQu^*JHT?GW7gdgaT0ZZ;SMNPkF)X_?hL)#qu?M11{ymGa0(Q} z>l2<9V!KVYvowpbdg<|Q*%y8KFnRpOA@%ZxSU~r$#2m6StFInL|JOD zBHq}I$;SHNr%Lz2IH3HR2Mo;kDeobR)%0TSFPyADyn>4bSt`~!GdV90p=Vhy2Kg#J z4zEv)){A#APUMO;WJvq3RXIbs$zHL4v$?(H)Z|bsilG#Nt^DBTb4%Mr0kB8P@(HLFCkKuV=V zUQHMq<=g~+^_rUQMxPv~c5;N$W7i}tJkZfE3r~?KeEb^kOGf2saq4%;JZ*KF@qj#S zieoErLCI#N9-Hm9nWW{e{<#rU?BN1MnelwvM$_GHq6B-DF~ zoqs<0iMHBPv`Qn{^Izcp3v+7aN|9sfiPt?`Dse`FZsh92cxL`V`su-t{Ef}xZ@`E) ztDjgqKUNXzH`~i8XAJ;#NH^e&_u^`AcwGn8@0?8@(|dDc|u?=0W)C8@-V^B zPys`C%ns`2%L25bnmm@%hJ=d`vnb12 zpQUI&`dbQ>=ZKN2>jLl_TJ&0k8iZ!)Ds&FXF#bV8va;l?$YA}mZj~`HvV0O7sj3pt zFpNi4E+yL#bvDF#HpChI5MQ5`hA6TjGHi&$wdpdfeu#lK#7>fgU+9O})(`Qa^skZi zvOpj&k{@|~cjo|*j*Wg1IO`f&9@Q=1J>x}c_e|)@ww{fARbH!^qu50cg10(O-m1kO-49 z$4+VPPdTUxpF!b?#$?_uLOcsLqMghhQSzFdEMfv!hXzs)=UI{yFh6~0Hm>CxgQa4X zWL=SU0R?(1|0>y9c0%l{8d8Hqm~TL+#RPQMKuAahrIT&d;3 znlH6M^N#qXlo>Ebhi;Zf1E1ALv6*!@@oF^^al~pCS+x}*>(IQfw_nMyD#6l&4K&Nj zmHC86N4}AEfc8ZcB!}DLZoOiaKNc8DD7KX3kaL|UDd%_|3h@vsc_p|=yppw8*;0*& zQ;uKBWIfg+8VSbv%3P zDCwnLyui*#%P#wce27~D#xpWZp*wUlW-qf3s@jn>4HFqmUul0A(R%3|>q#LNQ+?|X`>~B;ylU;|jGw4GzDrUoH2$z2 zkYZA}Xubz!;imBO`jMF`d#!Pl^t`Zar~!+;P(Ahx*8Esx z`i}9jQAL-A?@`Wo!plA=U9KCAPrSg{Os1Z&wSm}@b~_X>UX=*5((_U^F&?GfQ*Ufe z@w;COr;8*?vAP{=rMAG}jq*XfsPVE^P8ne=yaj%KdsL(-hg$2n5Tq_Y>0-5*=%EIp{~rCa}^ zYg2QamNe6|9>Wp3uz$8+MFsYf@E(w9tWsU@<^eKSeQ^D`5ZFs2=_jqDOAS#}hKLD1 zB;Ar!Gguu{{H*nB$tz>FL~^8f;UeklLtm>Q;|@oQIzcyntB_h_yFXUzRQ=i6__W#B z(b>rGP81t(3- zQ|n2l7#pXW%%(bRq$azp)7;xMKAM`(^-uKA>4(}uf>6MCL*_J##Pij}c$Bp25l?Jk zhRoT%!<}0K$h&1y?=C$!Vem_@sA+9%@khGd$Ab30^m}MTCbbHsCiTK$6QXt|n~=1q zD7_|5#axo_Gz3i_p6`jQ84!Pm$n?ynU95Y5I3nGudNMsPty}l8mh^^(iZ1fUbV6KA zjhLBU<8sWY$G=D5*i3hv46pLN!-5gFqGr{>s|&dZ$geJBCVd83$`A$cT(Xqk6<5%7 z1VwTZtHBz6cQUUJaD+`R^YUcgfz&tm2z-G#CS*x6)+O^S6)`{=cwtxBr7XRHL?@;8 zQ-cIfpoT};24KRLyhpXE<>GlEh13g{olFJm4+`e45!TCxjv~uA$@7vBvf5iPRlh6# zBq1?hA~(J+E%o|^S%vt{I-S0OMY||*O-(E`20Jtdtt%KCe{iEG)`TRWW)7wZWxnxR z1->t1yO^KZsk&LJp2xN%Qp6rwIVb#*9KBrP{db-70{TR4qHH*GieT`(qyN#wK6>Gg z`WIPi)*tMxa0b5!%FeXMJvA^^9kH^~UBQH4*Wp&=TemzvypoQOjjoj8J4F`S*yw7$ zMKe6>%Bzr9eM3uZCedmeiaR!zmxgstorwSjZw?*cxTVL3rU@qW$GRJ!&pYX3 z&kd171FzSjXH$9nZ^+TOx9KT}KM98RR|Y_Qed@x2Bf>lJic(w9{^3`Ai0}dz&(N%6 zVYa@gM~Tg!+ztC6Q6igKz0~~4WT9zeo-5fKS@|gO4x@HfXs{}++Aa>2hK# zq?~w=a?%#D-PY@mNk=SjO^t8lt6y&6H(pnVdXZZPVmEj7%U;bNx@dDUTUO~k)@=vX zAk+>Sz^y8q(JmGLiQE8d-o5n12o^x)u~hK`+@3PN$-H+fd)LkCG!TU; zfVdYBF7O)Sa6#y#(yjcuk!K~vyb`%QFUv|R=bia;O4obL>zsCcGA~D!Hvf7|o?JH| z9l0IK1JtKFB^~*kio9!V;u5oJ>SVObw~}W9mR6ox$a96y@Lpsb^7Qo?J=#-;F=}Sb zzE|kG26@EIJH)(FTD-V^_4l)elV3P8ju^2?EHetnl@cSJz{-=%n?ZFbGOJ5yX#pim zbcVu0GvrDx@mTr>F`4&Xg{)F^Pp|q|kUupZ|6SU~`PIq1yU5p5Qz#Ur$cmdq8RZ_t z0{q9_Vlwa7b`f-E8NgGMyHfXL5N)K5L+xGW?e63&IB?*RV)5RJwc5C~u#ylpfbEghQw+3g3897 zMCsOy-oCl+=vHG=LD*URN@B72m{20x)e85$TKAwNcL{ROV!R?Zvm%=OQrcsC+TbcO zpycXL_6fySb-`q>x=kTb^DEB0iz@_ME(9#3I|yb=znvEtdm@6 z6vMSl_!;V1QEDcKPo;kc+=9GOtDjdGEBkUeWmu0sD)h6~tS%UNlm*4`u~5{^(0S~Y zteJ(kkQu72ma`L1XTb>8@@6nuqbuJD(Pfkn&f?}Lkt6M&1i5v?g{K-!(;4NnMzb6m zBZu?jH=Ml2RyRAVmm(K8R?)}9aS^h5DaMLMA7Jf@|AyUXX*`aBc}m=W4cCQi4#fOS ztqN7U(lNF$)DLreoyT}xmK4A7wcMQZ681NC?<{aT#QmzvfkPkL$!a3L6O6ULeRt!c z`i+iu`E1-6sk*le@~k($3El3I@#2YP=tgw|SBwLez1wzGRsWKO(AR79+&Rcv@g-i6 z@>zG!(!2LKF|~k4j;}eIi+T`hMIr}St95Ln9*^AYsM8QSL9F&XU|(fzyjl*2;od|h z71GuCxatb!vsj9}(ZjPD9&Fd-dyRd_-;>a}at`}OeZ@DS3sU95yC3cTgjHmZ<(vhp zyXdH(cPI0Ek2UQ#a^d}wvd`xTT_XmZLNXcoPozHbpw!Ph2axTy7DxoD2PiTF+f@RmTaC#RSkJNXq85lXo#Nc5nx_0nt4}|w_@{LNNQ*$pWN1& zqq?E>#FE&d55w$%c%By0iw6wZJ=+q5!;w9p1qy*?99ee zR!>*OY?tVdC}a<$JT~k|Et~cmUcd30x?4--&*zEp0IlO7)kl(7XdUf*%yUPQ?$BkC zWR4bHIt%>((k8pdkftJ*#)3QJ_Mi8utAX+0V|rk)OoXsVZ+K5V{O0 z=OjKHp;N4jBBCoPM?-WaF9Qp>`)bKZ@j<)zQi9lh$-rI<=WCfqY72=wf%cj-^bE0J zoUL`#ldRn%Hku>JleCUuob~735J?WiA%K(5^D#?-HxPJp?e15ZxRIoj<0!#MGE0lf z^N4sY+jk`C(mKv3L=UaI6sGj<0s@ibV6Ed}iisqLXwhN;en^E*#Rj@mba901w~kBr zB;Shh^z7Xh97`mLRfR4Ed5RX@M@;-<6&j{>OptshN0ND3bcZDTTO|zFI_@GNlFZkl z-4ZP~+mYmGt)q?5yxEcDD6Qk~lC>m~9I18q$t9(nr$v7%;5YIok}TFb;;NL3wCDnf zo~uHaY8`Se5%`O>sDQ@rPzjf59m7?|GA%k@qQ6wgjL|wSlJcplTEFf3D{4@5f>L0F_rm3mAQmitF=l=7sEN$U*8r*l#@u3{}NYF zu5;cHDHk|L;$*@%-RY9>O@vuyvyH6x{4CNFp>5fLvMldAEKEP8M4>5?;;+y}sXAXE ztaZFZgf-Z%(`$@=oJiDwE~Dy%hS}(JL0=JJ`R#%hNkJW{fFDYr#g4P>(JV3}fO?i$6+yilAPT}do9u72aYE;tE#s+(?O{E{8kkDOrd0bCp-zE_k-=_?}dcY8@s$@?Q}veXAd}?#pe| z9;XcJ#ly6CJWGBhD2eSS)45st@H+u>PC2&_XyHVb_fo1Oe4b!2M=I8)RO^;Ih4l$2 zV+7>PI3O*5wQ49?a{QU<`tdG30q-mRS9lLj;hiCPXQuIv5c+@O9a4C2tWD$HTx0k4 zf8Z^+fwy_c#(V!|$Kf55?7CR7l>TmG5reV{E<%B6F5fB2$|bCI+(-l@ibcvV=(YGH z8@7Z3;L)eCNf{EU++@mD6DmyC ztme7YoX8_ZInn+x|9+>4MFC zr<(e>+JaXS;aRjUsd2J%6v+3-4n!(cm^_=1R=Z9OvnZBO_TQyEVWIf0lJeU5wwJ~a z`7%}iTkFeZj%O7DkjO%f5RF8HX9unP3RyVQduUgG)<5ypGeEk@-d+E|7ZvDKmN=J> z4~i%VZvtmtDKTz7UXz$Xd_2a7^cpq@u)&vFuoJV?N|=eZ$Xk)B5s-uz07nhCBv-;j0DCpyp^Lr0H$SI0#Aqu)*ppic&PQo zkA-azjRXh^nBn9Bq6x|Js4u`6Sd=xT!laZqZ^U9C{AN95$=hDf5;U1vHS`Zh~HXY=aJc`jpbh$V2zEsTlHkJ-Fp)}7E(_a5W_Dw>bnAlZm6U9w=J1S75ML~t&sr#b z7nI)J#tWxfH`}ZmN;mciiN}S+1Lt%Zh_-UMPalrLKJcQLG)TJqL{+jx-U^v+C{;n5 z*4+?HXC`im#aGG4wwhRz2Nix>8BUbkm7HhMr{%H=n{CKwFuu4_7yjp~I}zUtQ^j#Z zG|@&=nBREU;GFzU;_MZGNHx}3Lit$gFnpNT3>@NACw3OSmFKm*Ev65Qw>ge`DRo4A zBRSOFt7H>x@?@7%2@_;7-O*06I;3F=TAA`7tS$Z%i(sg~QPwiDNup@9dQAHlv2>?c z%N4s5?#i(RT1+GX7y^Q#G5m`sf_xF;CPt^b#>g$SW=j3N9L$ww;~;IZfQVTu?EdsP zD?OBQ2{Fl49?a5ofr`?--}W&BzFcXJtf7s!7GguJn1a&nu-taDQk`Q&!~(JP6+|iG zJFW9A3bO4n(ks|x@of7LySvT);5a-E|0U8c$&qiaURW6ygK)+sx&~yGiPC2m^9 z5bXkKk+#!+%%U|yQt9=;Gd-=vE%X*J=asCS1vb{y500jNI-`}k z+S-Cf>Iye0((p`c)p0?&KeGNV5u80Fod~z}s6?bF9@((9RKn@ruNh(C1qw2YRALRO zVBs|UO}ZQl8~JfN7EVAFvJP5i7NkqCt^r)`XMBb8FZEQ8D`+jIpZsRW>qQ)tBJ(kr zhdiv@vGA0BG7lECphc2ud(YyuWG3Z{+MZ{~>sA(^yl79h2tI~?GZ!@TRXb#E)r&OD z+Ri~B6-nbVtu-fvY5hNmV9uo4FU=Pj3o-p2kZavXjM$|dp>>LI+Ape}({LtK`XPLk zY|+Q2;7w9KFw&Wb@~p{(nS0ve1aYA=QgeTgHAWSwb#5n`WeUS#Vt^6J-K>JrF0b)P zhO1|}x(jFC4F<5D2ubgk( zJpyc)T)v8rF!VHO1eX!ifZ>zE#8i*@Tmh*Sn_3%Km}QRo&8H8lVOhwqR3^Kif6R0R zx2A{7bfftZ-MX*kSN~Sa;hWMb=$>sQP6u-Fe_iWPYsuDCW%L7NfMQ$0H6@ z*gjVoJ>6FR*vp(;EN4Cc^Yd^$=1Rg}ba_l?d+8yyllQf}VR(iqudahr44D+zj{l@g_}5P2n=wx)OMGuEisgSGq4d8tjX3hGgTk)AWA*` z5Fgzs=7C#2x7WNKXVjLbc&(m!X{0S5gU_FZdFtYid~>?CM2zU-%4g!tnUicwxMI5< zWuwz0tIp7a`~4MPww@Ay1t2}RH`%2<8ybB^2BsjNEyXSNr`R(?CY_1HoZx0Sf{IVH z`+g^&#%?6p!*pX5s!mX>6=s>oVjZ4UaQ-_iF;3LG&I0v(KOlb22QEEBeCZ+a#Llxs z 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 R0k-k~E)@Q+0}1Bv@js_9kk|kK literal 0 HcmV?d00001 diff --git a/bass-sys/bass24/bass.dll b/bass-sys/win/bass24/bass.dll similarity index 100% rename from bass-sys/bass24/bass.dll rename to bass-sys/win/bass24/bass.dll diff --git a/bass-sys/win/bass24/bass.txt b/bass-sys/win/bass24/bass.txt new file mode 100644 index 0000000..c7d2da9 --- /dev/null +++ b/bass-sys/win/bass24/bass.txt @@ -0,0 +1,2127 @@ +BASS 2.4 +Copyright (c) 1999-2020 Un4seen Developments Ltd. All rights reserved. + +Files that you should have found in the BASS package +==================================================== +Win32 version +------------- +BASS.TXT This file +BASS.DLL BASS module +BASS.CHM BASS documentation +MP3-FREE\ + BASS.DLL BASS module using the OS's MP3 decoder +X64\ + BASS.DLL 64-bit BASS module + MP3-FREE + BASS.DLL 64-bit BASS module using the OS's MP3 decoder +C\ C/C++ API and examples... + BASS.H BASS C/C++ header file + BASS.LIB BASS import library + BASS.SLN Visual Studio solution for examples + MAKEFILE Makefile for examples + MAKEFILE.IN Makefile helper macros + X64\ + BASS.LIB 64-bit BASS import library + 3DTEST\ 3D/EAX example + ... + BASSTEST\ Simple playback example + ... + CONTEST\ Console example + ... + CUSTLOOP\ Custom looping example + ... + DEVLIST\ Device list example + ... + DSPTEST\ DSP example + ... + FXTEST\ DX8 effect example + ... + LIVEFX\ Full-duplex example + ... + LIVESPEC\ "Live" version of spectrum analyser example + ... + MODTEST\ MOD music example + ... + MULTI\ Multiple device example + ... + NETRADIO\ Internet streaming example + ... + PLUGINS\ Plugins example + ... + RECTEST\ Recording example + ... + SPEAKERS\ Multi-speaker example + ... + SPECTRUM\ Spectrum analyser example + ... + SYNTH\ Low latency custom streaming example + ... + WRITEWAV\ WAVE writer example + ... + BIN\ Precompiled examples + 3DTEST.EXE + BASSTEST.EXE + CONTEST.EXE + CUSTLOOP.EXE + DEVLIST.EXE + DSPTEST.EXE + FXTEST.EXE + LIVEFX.EXE + LIVESPEC.EXE + MODTEST.EXE + MULTI.EXE + NETRADIO.EXE + RECTEST.EXE + SPEAKERS.EXE + SPECTRUM.EXE + SYNTH.EXE + WRITEWAV.EXE +DELPHI\ Delphi API and examples... + BASS.PAS BASS Delphi unit + 3DTEST\ 3D/EAX example + ... + BASSTEST\ Simple playback example + ... + CONTEST\ Console example + ... + CUSTLOOP\ Custom looping example + ... + DSPTEST\ DSP example + ... + FXTEST\ DX8 effect example + ... + LIVEFX\ Full-duplex example + ... + LIVESPEC\ "Live" version of spectrum analyser example + ... + MULTI\ Multiple device example + ... + NETRADIO\ Internet streaming example + ... + PLUGINS\ Plugins example + ... + RECORDTEST\ Recording example + ... + SAMPLEVIS\ Visualisation example + ... + SPEAKERS\ Multi-speaker example + ... + SPECTRUM\ Spectrum analyser example + ... + STREAMTEST\ User stream example + ... + WRITEWAV\ WAVE writer example + ... +VB\ Visual Basic API and examples... + BASS.BAS BASS Visual Basic module + 3DTEST\ 3D/EAX example + ... + BASSTEST\ Simple playback example + ... + CUSTLOOP\ Custom looping example + ... + DSPTEST\ DSP example + ... + FXTEST\ DX8 effect example + ... + LIVEFX\ Full-duplex example + ... + LIVESPEC\ "Live" version of spectrum analyser example + ... + MULTI\ Multiple device example + ... + NETRADIO\ Internet streaming example + ... + PLUGINS\ Plugins example + ... + RECTEST\ Recording example + ... + SPEAKERS\ Multi-speaker example + ... + SPECTRUM\ Spectrum analyser example + ... + SYNTH\ Low latency custom streaming example + ... + WRITEWAV\ WAVE writer example + ... + MEMORY\ Playing from memory example by Jobnik + ... + +NOTE: You may need to "Unblock" the BASS.CHM file in its "Properties" to view + it on Windows 7. The documentation can also be viewed online at the BASS + website. + +NOTE: The Delphi and VB examples may not always be up to date with the C + examples, so the latter should be preferred as references if possible. + +NOTE: To run the example EXEs, first you will need to copy BASS.DLL into the + same directory as them. + +macOS version +------------- +BASS.TXT This file +LIBBASS.DYLIB BASS module +BASS.CHM BASS documentation +CHMOX.APP CHM file viewer +BASS.H BASS C/C++ header file +BASS.XCODEPROJ Xcode project for examples +MAKEFILE Makefile for specific architectures +MP3-FREE\ + LIBBASS.DYLIB BASS module using the OS's MP3 decoder +3DTEST\ 3D example + ... +BASSTEST\ Simple playback example + ... +CONTEST\ Console example + ... +CUSTLOOP\ Custom looping example + ... +DEVLIST\ Device list example + ... +DSPTEST\ DSP example + ... +FXTEST\ DX8 effect example + ... +LIVESPEC\ "Live" version of spectrum analyser example + ... +MODTEST\ MOD music example + ... +MULTI\ Multiple device example + ... +NETRADIO\ Internet streaming example + ... +PLUGINS\ Plugins example + ... +RECTEST\ Recording example + ... +SPEAKERS\ Multi-speaker example + ... +SPECTRUM\ Spectrum analyser example + ... +SYNTH\ Low latency custom streaming example + ... +WRITEWAV\ WAVE writer example + ... + +NOTE: To view the documentation, you will need a CHM viewer, such as the + included CHMOX. The documentation can also be viewed online at the BASS + website. + +NOTE: The GUI-based examples (not CONTEST/DEVLIST/WRITEWAV) use the old Carbon + APIs that are not supported by 64-bit macOS. They will be replaced in + future but are currently still included for reference (the BASS parts are + still relevant). + +Linux version +------------- +BASS.TXT This file +LIBBASS.SO BASS module +BASS.CHM BASS documentation +BASS.H BASS C/C++ header file +MAKEFILE Makefile for examples +MAKEFILE.IN Makefile helper macros +MP3-FREE\ + LIBBASS.SO BASS module using the OS's MP3 decoder +X64\ + LIBBASS.SO 64-bit BASS module + MP3-FREE + LIBBASS.SO 64-bit BASS module using the OS's MP3 decoder +PASCAL\ + BASS.PAS BASS Delphi/Pascal unit +3DTEST\ 3D example + ... +BASSTEST\ Simple playback example + ... +CONTEST\ Console example + ... +CUSTLOOP\ Custom looping example + ... +DEVLIST\ Device list example + ... +DSPTEST\ DSP example + ... +FXTEST\ DX8 effect example + ... +LIVESPEC\ "Live" version of spectrum analyser example + ... +MODTEST\ MOD music example + ... +MULTI\ Multiple device example + ... +NETRADIO\ Internet streaming example + ... +PLUGINS\ Plugins example + ... +RECTEST\ Recording example + ... +SPEAKERS\ Multi-speaker example + ... +SPECTRUM\ Spectrum analyser example + ... +SYNTH\ Low latency custom streaming example + ... +WRITEWAV\ WAVE writer example + ... + +NOTE: To view the documentation, you will need a CHM viewer. The documentation + can also be viewed online at the BASS website. + + +What's the point? +================= +BASS is an audio library for use in software on several platforms. Its +purpose is to provide the powerful and efficient sample, stream, MOD +music, and recording functions. All in a compact DLL that won't overly +bloat your software. + +See the documentation for descriptions of all the BASS functions. Also +check the included example source-codes for some examples of how to use +BASS in your own programs. + + +Requirements +============ +Win32 version +------------- +BASS requires WASAPI or DirectSound for playback and recording, but decoding +and silent playback on the "No sound" device is still possible without them. +DirectSound has been included with all Windows versions since Windows 98. On +Windows Vista and above, the default is to use WASAPI instead of DirectSound +for playback. 32-bit and 64-bit Windows are supported. + +macOS version +------------- +macOS 10.5 or above is required. BASS uses CoreAudio for playback and recording, +so there are no special library/driver requirements. x86_64 / arm64 / i386 +architectures are supported in a single universal library. + +Linux version +------------- +BASS requires ALSA for playback and recording, but decoding and silent playback +on the "No sound" device is still possible without it. 32-bit (i386) and 64-bit +(x86-64) architectures are supported. ARM support is also available as a +separate download from the website. + + +Main Features +============= +* Samples + supports WAV/AIFF/MP3/MP2/MP1/OGG and custom generated samples + +* Sample streams + stream any sample data in 8/16/32 bit, with both "push" and "pull" systems + +* File streams + MP3/MP2/MP1/OGG/WAV/AIFF file streaming + +* Internet file streaming + stream files from the internet, including Shout/Icecast + +* User file streaming + stream files from anywhere using any delivery method + +* OS codecs + ACM, Media Foundation and CoreAudio codec support for additional audio formats + +* Multi-channel streaming + support for more than plain stereo, including multi-channel OGG/WAV/AIFF files + +* MOD music + uses the same engine as XMPlay = best accuracy, speed, and quality + +* MO3 music + MP3/OGG compressed MOD music + +* Add-on system + support for more formats is available via add-ons (aka plugins) + +* Multiple outputs + simultaneously use multiple soundcards, and move channels between them + +* Recording + flexible recording system, with support for multiple devices + +* Decode without playback + streams and MOD musics can be outputted in any way you want + +* Speaker assignment + assign streams and MOD musics to specific speakers + +* High precision synchronization + synchronize events in your software to the streams and MOD musics + +* Effects + chorus/compressor/distortion/echo/flanger/gargle/parameq/reverb + +* User defined DSP functions + custom effects may be applied to individual streams or the final output mix + +* 32 bit floating-point decoding and processing + floating-point stream/music decoding, DSP/FX, and recording + +* 3D sound + play samples/streams/musics in any 3D position + + +Using BASS +========== +There is no guarantee that all future BASS versions will be compatible +with all previous versions, so your program should use BASS_GetVersion +to check the version that is loaded. This also means that you should +put the BASS module in the same directory as your executable (not just +somewhere in the path), to avoid the possibility of a wrong version being +loaded. + +If you are updating your software from a previous BASS version, then +you should check the "History" section (below), to see if any of the +functions that you are using have been affected by a change. + +Win32 version +------------- +C/C++, Delphi, and Visual Basic APIs and example projects are provided. To +use BASS with another language you will first have to convert the header +file. Or, as a last resort, you could use LoadLibrary and GetProcAddress. + +The downside is that you have to manually import each function that you +use, with the GetProcAddress function. But it has been made a lot simpler +to import BASS this way by the use of the BASSDEF #define. Here's a small +example: + +#define BASSDEF(f) (WINAPI *f) // define the functions as pointers +#include "bass.h" +... +HINSTANCE bass=LoadLibrary("BASS.DLL"); // load BASS +BASS_Init=GetProcAddress(bass,"BASS_Init"); // get BASS_Init +BASS_Init(-1,44100,0,hWnd,NULL); // call BASS_Init + +To use BASS with Borland C++ Builder, you will first have to create a +Borland C++ Builder import library for it. This is done by using the +IMPLIB tool that comes with Borland C++ Builder. Simply execute this: + + IMPLIB BASSBCB.LIB BASS.DLL + +... and then use BASSBCB.LIB in your projects to import BASS. + +To use BASS with LCC-Win32, you will first have to create a compatible +import library for it. This is done by using the PEDUMP and BUILDLIB +tools that come with LCC-Win32. Run these 2 commands: + + PEDUMP /EXP BASS.LIB > BASSLCC.EXP + BUILDLIB BASSLCC.EXP BASSLCC.LIB + +... and then use BASSLCC.LIB in your projects to import BASS. + +For the BASS functions that return strings (char*), VB users should use +the VBStrFromAnsiPtr function to convert the returned pointer into a VB +string. + +macOS version +------------- +See the example Xcode project. + +NOTE: The LIBBASS.DYLIB file must be put in the same directory as the + executable, it can't just be somewhere in the path. + +LIBBASS.DYLIB is a universal binary with support for the x86_64 / arm64 / i386 +architectures. If not all of those architectures are needed, the included +makefile can be used to extract the wanted one(s). Type "make x86_64" or +"make arm64" or "make i386" to extract a particular architecture. "make 64bit" +can be used to extract the x86_64 and arm64 architectures (exclude i386), and +"make intel" to extract the x86_64 and i386 architectures (exclude arm64). Any +BASS add-ons placed in the same directory will also be processed. + +Linux version +------------- +The LIBBASS.SO file needs to be in the OS's library search path for it to +be found; simply placing it in the same directory as the executable won't +necessarily work as it does on other platforms. The BASS libraries should +also not be placed in the standard library directories to avoid version +conflicts. To meet those competing requirements, a wrapper script could be +used to set the "LD_LIBRARY_PATH" environment variable before loading the +executable. Another option is to set the "rpath" in the executable, to tell +it where to look for libraries. That is what the example makefiles do. + +When building both 32-bit and 64-bit executables, it is possible to simply +try linking with both LIBBASS.SO versions, and the linker will use the +appropriate version and ignore the other. + + +Latest Version +============== +The latest version of BASS can always be found at the BASS website: + + www.un4seen.com + + +Licence +======= +BASS is free for non-commercial use. If you are a non-commercial entity +(eg. an individual) and you are not making any money from your product +(through sales/advertising/etc), then you can use BASS in it for free. +If you wish to use BASS in commercial products, then please also see the +next section. + +TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, BASS IS PROVIDED +"AS IS", WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND/OR FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS SHALL NOT BE HELD +LIABLE FOR ANY DAMAGE THAT MAY RESULT FROM THE USE OF BASS. YOU USE +BASS ENTIRELY AT YOUR OWN RISK. + +Usage of BASS indicates that you agree to the above conditions. + +All trademarks and other registered names contained in the BASS +package are the property of their respective owners. + +Commercial licensing +-------------------- +BASS is available for use in your commercial products. The licence +types available are as follows: + +SHAREWARE: Allows the usage of BASS in an unlimited number of your +shareware ("try before you buy") products, which must sell for no more +than 40 Euros each. Non-shareware products are also permitted, but the +product price limit is 10 Euros in that case. The price limit can be +raised by purchasing duplicate licences, eg. 2 licences doubles it. If +you are an individual (not a corporation) making and selling your own +software, this is the licence for you. + +SINGLE COMMERCIAL: Allows the usage of BASS in one commercial product. + +UNLIMITED COMMERCIAL: Allows the usage of BASS in an unlimited number +of your commercial products. This licence is on a per-site basis, eg. +if you are creating products with BASS at 2 sites/locations, then 2 +licences are required. + +Please note the products must be end-user products, eg. not components +used by other products. + +These licences only cover your own software, not the publishing of +other's software. If you publish other's software, its developers (or +the software itself) will need to be licensed to use BASS. + +These licences are on a per-platform basis, with reductions available +when licensing for multiple platforms. In all cases there are no royalties +to pay, and you can use future BASS updates without further cost. + +These licences do not allow reselling/sublicensing of BASS. For example, +if a product is a development system, the users of said product are not +licensed to use BASS in their productions; they will need their own +licences. + +If the standard licences do not meet your requirements, or if you have +any questions, please get in touch (email: bass@un4seen.com). + +Visit the BASS website for the latest pricing: + + www.un4seen.com + +MP3 +--- +MP3 technology is patented, and Thomson license the use of their and +Fraunhofer's patents. The inclusion of an MP3 decoder (eg. BASS) in a +commercial product requires an MP3 patent licence. Contact Thomson for +details: + + www.mp3licensing.com + +Alternatively, the "MP3-FREE" BASS version does not include its own MP3 +decoder but instead makes use of the operating system's already licensed +decoder. If an MP3 decoder is not available, then MP3 playback will not +be possible, but everything else will function as normal. + +NOTE: When using the OS's MP3 decoder, BASS still does the file handling + so all the usual features are still supported, including streaming, + tag reading, pre-scanning, gapless playback, etc. + +NOTE: Linux does not include an MP3 decoder as standard. The "MP3-FREE" + BASS version will make use of the libmpg123 decoder, if installed. + + +Credits +======= +Ogg Vorbis decoding is based on libogg/vorbis, +Copyright (c) 2002-2020 Xiph.org Foundation + +CHMOX is (c) 2004 Stéphane Boisson, http://chmox.sourceforge.net/ + +API/Sample contributors +----------------------- +Delphi: Titus Miloi, Rogier Timmermans, Alessandro Cappellozza, + Jesse Naranjo, Chris Troesken, Evgeny Melnikov +Visual Basic: Adam Hoult, Hendrik Knaepen, Arthur Aminov, + Peter Hebels + + +History +======= +These are the major (and not so major) changes at each version stage. +There are of course bug fixes and other little improvements made along +the way too! To make upgrading simpler, all functions affected by a +change to the BASS interface are listed. + +2.4.15 - 17/12/2019 +------------------- +* Channel processing granularity option + BASS_ATTRIB_GRANULE (BASS_ChannelSetAttribute option) +* Asynchronous mixtime sync callbacks + BASS_SYNC_THREAD (BASS_ChannelSetSync flag) +* Output device update period can be set in samples + BASS_CONFIG_DEV_PERIOD (BASS_SetConfig option) +* Continuous output when nothing is playing is now optional on macOS/iOS too + BASS_CONFIG_DEV_NONSTOP (BASS_SetConfig option) +* AAudio output support on Android + BASS_Init + BASS_CONFIG_ANDROID_AAUDIO (BASS_SetConfig option) +* Support for audio session IDs on Android + BASS_CONFIG_ANDROID_SESSIONID (BASS_SetConfig option) +* ParcelFileDescriptor support on Android + BASS_StreamCreateFile + BASS_SampleLoad + BASS_MusicLoad +* FloatValue Java class added to receive floating-point values on Android 10 + BASS_Get3DFactors + BASS_RecordGetInput + BASS_ChannelGetAttribute + BASS_ChannelGet3DAttributes +* Audio session configuration option on iOS + BASS_CONFIG_IOS_SESSION (BASS_SetConfig option) +* OGG channel type constant renamed/duplicated to VORBIS + BASS_CTYPE_STREAM_VORBIS +* Error code for recognised file formats without audio + BASS_ERROR_NOTAUDIO (BASS_StreamCreateFile/User/URL error code) +* Error code for unstreamable MP4 files due to atom order + BASS_ERROR_UNSTREAMABLE (BASS_StreamCreateFileUser/URL error code) +* Fix for AAC streaming with BASS_STREAM_BLOCK on macOS 10.15 and iOS 13 + BASS_StreamCreateURL/FileUser +* Fix for playback rate changing bug when using DirectSound + BASS_ATTRIB_FREQ (BASS_ChannelSetAttribute option) +* armv6 architecture support dropped on iOS + +2.4.14 - 16/1/2019 +------------------ +* Support for playback on the "No sound" device + BASS_Init + BASS_StreamCreateFile/User/URL + BASS_SampleLoad/Create + BASS_ChannelPlay +* Improved sample rate conversion quality, including 64 point option + BASS_ATTRIB_SRC (BASS_ChannelSetAttribute option) + BASS_CONFIG_SRC/_SAMPLE (BASS_SetConfig options) +* Loopback (output device) recording on Windows Vista and above + BASS_RecordInit + BASS_RecordGetDeviceInfo + BASS_DEVICE_LOOPBACK (BASS_DEVICEINFO flag) + DEVLIST and RECTEST examples updated +* Native format recording option + BASS_RecordStart +* Access to the 3D output mix for applying DSP/FX + STREAMPROC_DEVICE_3D (BASS_StreamCreate option) +* Retrieval of a device's started/stopped status + BASS_IsStarted +* Sync for when a device stops unexpectedly + BASS_SYNC_DEV_FAIL (BASS_ChannelSetSync type) +* New channel playback state for a paused device + BASS_ACTIVE_PAUSED_DEVICE (BASS_ChannelIsActive) +* Sync for when a device's sample format changes + BASS_SYNC_DEV_FORMAT (BASS_ChannelSetSync type) +* Adjustable output device update period + BASS_CONFIG_DEV_PERIOD (BASS_SetConfig option) +* Nyquist FFT option + BASS_DATA_FFT_NYQUIST (BASS_ChannelGetData flag) +* Plugin-specific flags are ignored in standard stream creation functions + BASS_StreamCreateFile/User/URL +* Pre-buffering during stream creation is now disabled by default + BASS_CONFIG_NET_PREBUF_WAIT (BASS_SetConfig option) + BASS_StreamCreateURL/FileUser +* Existing internet streams are unaffected by read timeout config changes + BASS_CONFIG_NET_READTIMEOUT (BASS_SetConfig option) +* Retrieval of the number of existing handles + BASS_CONFIG_HANDLES (BASS_GetConfig option) +* Windows mixer settings are retained by default and optionally not + BASS_CONFIG_WASAPI_PERSIST (BASS_SetConfig option) +* Configurable OpenSSL library filename on Linux/Android + BASS_CONFIG_LIBSSL (BASS_SetConfigPtr option) +* Files can be deleted/renamed while streaming on Windows (already true on other platforms) + BASS_StreamCreateFile +* Fix for bug in playback buffering disabling option + BASS_ATTRIB_NOBUFFER (BASS_ChannelSetAttribute option) +* Fix to support long logarithmic curves in volume effects + BASS_FX_VOLUME (BASS_ChannelSetFX type) + +2.4.13.8 - 6/2/2018 +------------------- +* Indication of a file's original sample format being floating-point + BASS_ORIGRES_FLOAT (BASS_CHANNELINFO/SAMPLE flag) +* Some extra sample data is retained to account for device latency in data retrieval + BASS_ChannelGetData +* FFT window is shortened to match amount of available data when less than FFT size + BASS_ChannelGetData +* FFT level adjusted to be approx the same regardless of amount of available data + BASS_ChannelGetData +* Fix for crash when decoding channels are dissociated from a device + BASS_NODEVICE (BASS_ChannelSetDevice option) + +2.4.13 - 19/12/2017 +------------------- +* WASAPI output on Windows (DirectSound is fallback/optional) + BASS_DEVICE_DSOUND (BASS_Init flag) + BASS_CONFIG_DEV_BUFFER/NONSTOP (BASS_SetConfig options) + BASS_CONFIG_SRC/_SAMPLE (BASS_SetConfig options) + BASS_ATTRIB_SRC/NORAMP (BASS_ChannelSetAttribute options) +* Default output device following support extended to Windows Vista and macOS + BASS_CONFIG_DEV_DEFAULT (BASS_SetConfig option) +* Seamless playback buffer length changing + BASS_ATTRIB_BUFFER (BASS_ChannelSetAttribute option) + SYNTH example updated +* Access to the final output mix for applying DSP/FX + STREAMPROC_DEVICE (BASS_StreamCreate option) + BASS_CTYPE_STREAM_DEVICE + FXTEST example updated +* Dissociating of decoding channels from a device + BASS_NODEVICE (BASS_ChannelSetDevice option) +* Volume attribute levels above 1.0 for amplification + BASS_ATTRIB_VOL (BASS_ChannelSetAttribute option) +* Logarithmic attribute slides + BASS_SLIDE_LOG (BASS_ChannelSlideAttribute flag) +* Volume & panning attribute affected level retrieval + BASS_LEVEL_VOLPAN (BASS_ChannelGetLevelEx flag) +* Volume level adjustment effect + BASS_FX_VOLUME (BASS_ChannelSetFX type) + BASS_FX_VOLUME_PARAM structure +* Asynchronous pre-buffering + BASS_CONFIG_NET_PREBUF_WAIT (BASS_SetConfig option) + BASS_StreamCreateURL/FileUser + CONTEST and NETRADIO examples updated +* Decoding channels can be dissociated from a device + BASS_ChannelSetDevice +* Resetting of user file streams/decoders + BASS_POS_RESET (BASS_ChannelSetPosition flag) +* Relative seeking + BASS_POS_RELATIVE (BASS_ChannelSetPosition flag) +* RIFF cue points chunk retrieval + BASS_TAG_RIFF_CUE (BASS_ChannelGetTags type) + TAG_CUE structure +* RIFF sample chunk retrieval + BASS_TAG_RIFF_SMPL (BASS_ChannelGetTags type) + TAG_SMPL structure +* Support for Category/Description/Grouping/Keywords/Lyrics MP4 tags + BASS_TAG_MP4 (BASS_ChannelGetTags type) +* Separate channel type for dummy streams + BASS_CTYPE_STREAM_DUMMY +* Stalled internet stream buffering progress retrieval + BASS_FILEPOS_BUFFERING (BASS_StreamGetFilePosition mode) + CONTEST and NETRADIO examples updated +* Playlist recursion depth config option + BASS_CONFIG_NET_PLAYLIST_DEPTH (BASS_SetConfig options) +* Push file system read functions can now return 0 without ending the file + STREAMFILE_BUFFERPUSH (BASS_StreamCreateFileUser system) + FILEREADPROC +* 16 point SRC is used by default when SSE is available + BASS_CONFIG_SRC (BASS_SetConfig option) +* Mono downmixing for all file formats in sample loading + BASS_SAMPLE_MONO (BASS_SampleLoad flag) +* Mono OGG stream downmixing + BASS_SAMPLE_MONO (BASS_StreamCreateFile/User/URL flag) +* Media Foundation availability detection + BASS_CONFIG_MF_DISABLE (BASS_GetConfig option) + PLUGINS example updated +* AudioTrack output on Android + BASS_DEVICE_AUDIOTRACK (BASS_Init flag) +* Support for Android Media codecs + BASS_StreamCreateFile/User/URL + BASS_TAG_AM_MIME/NAME (BASS_ChannelGetTags type) + BASS_CONFIG_AM_DISABLE (BASS_SetConfig option) +* Panning fix for MOD files created with ScreamTracker 3 + BASS_MusicLoad +* Fix for compressor and distotion DX8 effects with floating-point data on Windows + BASS_FX_DX8_COMPRESSOR/DISTORTION (BASS_ChannelSetFX types) +* Fix for plugin freeing issue on 64-bit platforms (HPLUGIN is not library address any more) + BASS_PluginLoad + BASS_PluginFree + +2.4.12 - 10/3/2016 +------------------ +* DSP/FX chain order modification + BASS_FXSetPriority +* Average bitrate retrieval + BASS_ATTRIB_BITRATE +* Ramping-out when stopping/pausing playback + BASS_ChannelStop + BASS_ChannelPause +* Disabling of playback ramping + BASS_ATTRIB_NORAMP (BASS_ChannelSetAttribute option) +* Pre-buffering when playback buffering is disabled + BASS_ChannelUpdate + BASS_ATTRIB_NOBUFFER (BASS_ChannelSetAttribute option) +* Net agent and proxy config options now make a copy of the provided string + BASS_CONFIG_NET_AGENT/PROXY (BASS_SetConfigPtr options) + NETRADIO example updated +* Unicode net agent and proxy config options on Windows + BASS_CONFIG_NET_AGENT/PROXY (BASS_SetConfigPtr options) +* 32768 sample FFT + BASS_DATA_FFT32768 (BASS_ChannelGetData flag) +* Support for iTunes gapless info in MP3 files + BASS_StreamCreateFile/User +* 529 sample delay removed from start of MP3 files without delay info + BASS_StreamCreateFile/User/URL +* Support for numerical MP4 genre (gnre) tags + BASS_TAG_MP4 (BASS_ChannelGetTags type) +* Support for BASSWMA's tag option when using Media Foundation WMA codec + BASS_TAG_WMA (BASS_ChannelGetTags type) +* OpenMPT author tag retrieval + BASS_TAG_MUSIC_AUTH (BASS_ChannelGetTags type) +* FastTracker2 panning for XM files + BASS_MUSIC_FT2PAN (BASS_MusicLoad flag) +* Support for longer device names on Windows + BASS_DEVICEINFO (name member) +* Checking for floating-point support on platforms that might not have it + BASS_CONFIG_FLOAT (BASS_GetConfig option) +* Attribute size retrieval fix + BASS_ChannelGetAttributeEx +* Fix for missing LC_VERSION_MIN issue with Xcode 7 on OSX, ppc architecture (PowerPC) support dropped +* LIST example renamed to DEVLIST + +2.4.11 - 22/12/2014 +------------------- +* Support for custom HTTP request headers + BASS_StreamCreateURL +* HTTPS support on Linux/Android + BASS_StreamCreateURL +* Redirection HTTP headers provided during connection + BASS_STREAM_STATUS (BASS_StreamCreateURL flag) + DOWNLOADPROC +* Adjustable stalled internet stream resumption buffer level + BASS_ATTRIB_NET_RESUME (BASS_ChannelSetAttribute option) +* Extended level retrieval inc. multi-channel and RMS options + BASS_ChannelGetLevelEx +* Inexact/faster seeking + BASS_POS_INEXACT (BASS_ChannelSetPosition flag) +* Post-stream creation scanning (seek table building) + BASS_POS_SCAN (BASS_ChannelSetPosition flag) +* Extended attribute support + BASS_ChannelGet/SetAttributeEx +* Scanned info retrieval and setting + BASS_ATTRIB_SCANINFO (BASS_ChannelGet/SetAttributeEx option) +* Built-in ADPCM WAVE file support on Linux/Android/WinCE + BASS_StreamCreateFile/User/URL + BASS_SampleLoad +* Active MOD channel count retrieval + BASS_ATTRIB_MUSIC_ACTIVE (BASS_ChannelGetAttribute option) +* Fractional sample rates + BASS_ATTRIB_FREQ (BASS_ChannelSetAttribute option) +* Device type information + BASS_DEVICE_TYPE_xxx (BASS_DEVICEINFO flags) +* Unicode support for recording input names + BASS_CONFIG_UNICODE (BASS_SetConfig option) + BASS_RecordGetInputName +* File size retrieval + BASS_FILEPOS_SIZE (BASS_StreamGetFilePosition mode) +* Asynchronous file reading buffer level retrieval + BASS_FILEPOS_ASYNCBUF (BASS_StreamGetFilePosition mode) +* MPEG data search limit raised to 1MB + BASS_CONFIG_VERIFY (BASS_SetConfig option) +* Separate MPEG data search limit for internet/buffered streams + BASS_CONFIG_VERIFY_NET (BASS_SetConfig option) +* Support for iTunes gapless info with Media Foundation and CoreAudio codecs + BASS_StreamCreateFile/User +* Airplay receiver enumeration and selection on OSX + BASS_DEVICES_AIRPLAY (BASS_GetDeviceInfo flag) + BASS_CONFIG_AIRPLAY (BASS_SetConfig option) +* Media Foundation playback of audio from videos is now optional + BASS_CONFIG_MF_VIDEO (BASS_SetConfig option) +* Optional floating-point or fixed-point data retrieval on Android/WinCE + BASS_DATA_FLOAT/FIXED (BASS_ChannelGetData flags) +* Continuous output when nothing is playing on Linux/Android/WinCE + BASS_CONFIG_DEV_NONSTOP (BASS_SetConfig option) +* Fix for decoding channels being ended when stopping the output device + BASS_Stop +* Fix for Media Foundation internet/buffered streaming on Windows 8 + BASS_StreamCreateURL + BASS_StreamCreateFileUser +* Improved compatibility with recent PulseAudio versions on Linux +* LIST and MODTEST examples added +* MASM API and examples removed (available as separate download) + +2.4.10 - 16/2/2013 +------------------ +* Asynchronous file reading/buffering + BASS_ASYNCFILE (BASS_StreamCreateFile/User flag) + BASS_CONFIG_ASYNCFILE_BUFFER (BASS_SetConfig option) +* Support for chained OGG files (multiple logical bitstreams) + BASS_StreamCreateFile/User + BASS_CONFIG_OGG_PRESCAN (BASS_SetConfig option) + BASS_POS_OGG (BASS_ChannelSetPosition/ChannelGetLength mode) +* OGG logical bitstream syncs are no longer automatically "mixtime" + BASS_SYNC_OGG_CHANGE (BASS_ChannelSetSync type) +* Support for Soundtracker MOD files + BASS_MusicLoad +* Complex FFT data + BASS_DATA_FFT_COMPLEX (BASS_ChannelGetData flag) +* Volume levels above 1.0 for decoding channels + BASS_ATTRIB_VOL (BASS_ChannelSetAttribute option) +* Recording device channel count retrieval on Windows/OSX/iOS + BASS_RECORDINFO (formats member) +* Minimum recording period reduced to 5ms + BASS_RecordStart +* Recording device period adjustment on OSX + BASS_RecordStart +* Device UID retrieval on OSX + BASS_DEVICEINFO (driver member) +* The desktop window handle is used when none is provided + BASS_Init + +2.4.9 - 3/5/2012 +---------------- +* Improved and adjustable sample rate conversion quality + BASS_ATTRIB_SRC (BASS_ChannelSetAttribute option) + BASS_CONFIG_SRC/_SAMPLE (BASS_SetConfig options) +* Support for buffered file & internet streams with CoreAudio codecs on OSX/iOS + BASS_StreamCreateURL + BASS_StreamCreateUser +* Data and level retrieval from sample channels + BASS_ChannelGetData + BASS_ChannelGetLevel +* Oldest sample channel will be overridden when there are multiple candidates + BASS_SampleGetChannel +* Use of the device's output rate with MODs + BASS_MusicLoad +* Optional device output rate setting on OSX/iOS + BASS_DEVICE_FREQ (BASS_Init flag) +* UTF-8 device information on Windows + BASS_CONFIG_UNICODE (BASS_SetConfig option) +* Speaker assignment with panning/balance control on Windows Vista/7 + BASS_CONFIG_VISTA_SPEAKERS (BASS_SetConfig option) + BASS_ATTRIB_PAN (BASS_ChannelGet/Set/SlideAttribute option) +* Push stream queue level can be checked after using BASS_STREAMPROC_END + BASS_StreamPutData +* Support for ALSA subdevices on Linux + BASS_Init + BASS_GetDeviceInfo + BASS_RecordInit + BASS_RecordGetDeviceInfo +* Device list fix on 64-bit OSX + BASS_GetDeviceInfo + BASS_RecordGetDeviceInfo +* BASS_UNICODE support fix on Linux + BASS_PluginLoad +* Internet streaming tweaks/fixes on Windows +* SYNTH example updated to use device output rate +* RECTEST example updated (C version) for better Windows Vista/7 support +* Documentation updated with platform-specific info for Android + +2.4.8 - 29/8/2011 +----------------- +* Support for Media Foundation codecs on Windows 7 and updated Vista + BASS_StreamCreateFile/User/URL + BASS_TAG_MF (BASS_ChannelGetTags type) + PLUGINS example updated +* Built-in support for MP4 tags on Win32/OSX/iOS (for Media Foundation & CoreAudio AAC/ALAC codecs) + BASS_TAG_MP4 (BASS_ChannelGetTags type) +* WAVE format chunk retrieval + BASS_TAG_WAVEFORMAT (BASS_ChannelGetTags type) +* Adjustable sample channel limit + BASS_SampleSetInfo +* Per-channel CPU usage monitoring + BASS_ATTRIB_CPU (BASS_ChannelGetAttribute option) +* Pre-allocation of push stream queue space + BASS_StreamPutData +* Support for AIFF files with the data chunk before the format info chunk + BASS_StreamCreateFile/User/URL +* Ramping-in disabled for all but the XM format (and MODs in FT2 mode) in "normal" ramping mode + BASS_MUSIC_RAMP (BASS_MusicLoad flag) +* RIFF "INFO" tag reading fix + BASS_TAG_RIFF_INFO (BASS_ChannelGetTags type) +* OSX 10.7 compatibility fix +* x86_64 architecture support on OSX +* Delphi dynamic loading unit removed (now available as separate download) + +2.4.7 - 30/11/2010 +------------------ +* Decode-to-position seeking + BASS_POS_DECODETO (BASS_ChannelSetPosition flag) +* Support for RIFF "DISP" text tags + BASS_TAG_RIFF_DISP (BASS_ChannelGetTags type) +* Support for APEv1 tags + BASS_TAG_APE (BASS_ChannelGetTags type) + BASS_TAG_APE_BINARY (BASS_ChannelGetTags type) +* 16384 sample FFT + BASS_DATA_FFT16384 (BASS_ChannelGetData flag) +* Support for AIFF files larger than 4GB + BASS_StreamCreateFile/User/URL +* Acceptance of self-signed and invalid certificates + BASS_StreamCreateURL +* Internet stream reading timeout + BASS_CONFIG_NET_READTIMEOUT (BASS_SetConfig option) +* Support for removing a DSP within its DSPPROC + BASS_ChannelRemoveDSP +* Buffer bypassing for lower latency output (not available on Windows) + BASS_ATTRIB_NOBUFFER (BASS_ChannelSetAttribute option) + SYNTH example added (OSX) +* A "Default" device that follows default device changes on Windows 7 + BASS_CONFIG_DEV_DEFAULT (BASS_SetConfig option) +* Xcode examples project added for OSX +* Documentation updated with platform-specific info for iOS/Linux/WinCE + +2.4.6 - 17/6/2010 +----------------- +* Support for APEv2 tags, including binary + BASS_TAG_APE (BASS_ChannelGetTags type) + BASS_TAG_APE_BINARY (BASS_ChannelGetTags type) +* Unicode/IDN URL support + BASS_StreamCreateURL +* Decoding position retrieval + BASS_POS_DECODE (BASS_ChannelGetPosition flag) +* Support for OGG 6/7.1 channel configs + BASS_StreamCreateFile/User/URL +* Support for setting syncs within mixtime SYNCPROCs + BASS_ChannelSetSync +* Support for setting additional DSP/FX within DSPPROCs + BASS_ChannelSetDSP/FX +* DC bias removal in FFT processing + BASS_DATA_FFT_REMOVEDC (BASS_ChannelGetData flag) +* Fix for incorrect (2x) return value when getting FFT data from a 16-bit channel + BASS_ChannelGetData +* Fix for incorrect (STOPPED instead of PAUSED) channel status following BASS_Pause + BASS_ChannelIsActive + +2.4.5 - 18/12/2009 +------------------ +* Support for little-endian AIFF files + BASS_StreamCreateFile/User/URL + BASS_SampleLoad +* Support for 64-bit floating-point WAVE/AIFF files + BASS_StreamCreateFile/User/URL + BASS_SampleLoad +* Input volume retrieval failure results in a reading of -1 instead of 1 + BASS_RecordGetInput + RECTEST example updated +* Input volume support on OSX + BASS_RecordSetInput + BASS_RecordGetInput + RECTEST example updated +* Fix for deferred input settings on Vista + BASS_RecordSetInput +* Windows MP3 codec given preference over other installed MP3 codecs (MP3-FREE version) + BASS_StreamCreateFile/User/URL + BASS_SampleLoad + +2.4.4 - 13/10/2009 +------------------ +* RIFF/BWF "radio traffic" tag retrieval + BASS_TAG_RIFF_CART (BASS_ChannelGetTags type) + TAG_CART structure +* Support for ID3v2 tags in RIFF/WAVE/AIFF files ("ID3 " chunk) + BASS_TAG_ID3V2 (BASS_ChannelGetTags type) +* Pushed fractional samples are refused rather than discarded + BASS_StreamPutData +* DX8 effect emulation on OSX + BASS_FX_DX8_CHORUS/DISTORTION/ECHO/FLANGER/PARAMEQ/REVERB (BASS_ChannelSetFX types) + FXTEST example added +* UTF-16 support on OSX + BASS_UNICODE (BASS_StreamCreateFile/SampleLoad/MusicLoad/PluginLoad flag) + +2.4.3 - 8/5/2009 +---------------- +* MOD order list retrieval + BASS_TAG_MUSIC_ORDERS (BASS_ChannelGetTags type) +* Support for ID3v2 tags in RIFF/WAVE files ("id3 " chunk) + BASS_TAG_ID3V2 (BASS_ChannelGetTags type) +* Improved position reporting precision on Vista + BASS_ChannelGetPosition +* Length retrieval when streaming in blocks (BASS_STREAM_BLOCK) + BASS_ChannelGetLength +* Support for CoreAudio codecs on OSX + BASS_StreamCreateFile/User + BASS_SampleLoad + BASS_TAG_CA_CODEC (BASS_ChannelGetTags type) + TAG_CA_CODEC structure +* 3D algorithm option support on OSX + BASS_CONFIG_3DALGORITHM (BASS_SetConfig option) + +2.4.2 - 18/9/2008 +----------------- +* RF64 support + BASS_StreamCreateFile/User +* RIFF/BWF "Broadcast Audio Extension" tag retrieval + BASS_TAG_RIFF_BEXT (BASS_ChannelGetTags type) + TAG_BEXT structure +* ID3v1 tag structure + TAG_ID3 structure +* Multiple simultaneous recordings per device on Vista & OSX (as on XP) + BASS_RecordStart +* DX8 effect parameter defaults updated/corrected in documentation + +2.4 - 2/4/2008 +-------------- +* "Push" streaming + STREAMPROC_PUSH (BASS_StreamCreate option) + BASS_StreamPutData + LIVEFX and MULTI examples updated +* "Push" buffered file streaming + STREAMFILE_BUFFERPUSH (BASS_StreamCreateFileUser system) + BASS_StreamPutFileData +* STREAMFILEPROC replaced by table of callbacks for each file operation + BASS_FILEPROCS (FILECLOSEPROC/FILELENPROC/FILEREADPROC/FILESEEKPROC) + STREAMFILEPROC *removed* +* 64-bit file positioning + BASS_SampleLoad + BASS_MusicLoad + BASS_StreamCreateFile + BASS_StreamGetFilePosition +* File buffer level retrieval + BASS_FILEPOS_BUFFER (BASS_StreamGetFilePosition mode) +* Sinc interpolated MOD music mixing + BASS_MUSIC_SINCINTER (BASS_MusicLoad flag) +* MO3 2.4 support + BASS_MusicLoad +* MOD orders positioning incorporated into channel functions + BASS_ChannelGetLength + BASS_ChannelSetPosition + BASS_ChannelGetPosition + BASS_MusicGetOrderPosition *removed* + BASS_MusicGetOrders *removed* +* Channel attribute functions consolidated + BASS_ChannelSetAttribute + BASS_ChannelGetAttribute + BASS_ChannelSlideAttribute + BASS_ChannelIsSliding + BASS_ChannelSetAttributes *removed* + BASS_ChannelGetAttributes *removed* + BASS_ChannelSlideAttributes *removed* + BASS_ChannelSetEAXMix *removed* + BASS_ChannelGetEAXMix *removed* + BASS_MusicSetAttribute *removed* + BASS_MusicGetAttribute *removed* +* Floating-point volume and panning + BASS_SetVolume + BASS_GetVolume + BASS_RecordSetInput + BASS_RecordGetInput + BASS_ATTRIB_PAN/VOL (BASS_ChannelGet/Set/SlideAttribute options) + BASS_ATTRIB_MUSIC_VOL_CHAN/INST (BASS_ChannelGet/Set/SlideAttribute options) + BASS_SAMPLE (volume/pan/outvol members) + BASS_CONFIG_MAXVOL *removed* + BASSTEST and RECTEST examples updated +* Output device volume control on Vista (as on other OS) + BASS_SetVolume + BASS_GetVolume +* Multiple update threads + BASS_CONFIG_UPDATETHREADS (BASS_SetConfig option) + BASSTEST example updated +* Global volume range increased to 10000 + BASS_CONFIG_GVOL_SAMPLE/STREAM/MUSIC (BASS_SetConfig options) + BASSTEST example updated +* Setting and retrieving of a sample's data + BASS_SampleSetData + BASS_SampleGetData + BASS_SampleCreate + BASS_SampleCreateDone *removed* +* Channel flag setting mask + BASS_ChannelFlags + BASS_ChannelSetFlags *removed* + SPEAKERS example updated +* 256 sample FFT + BASS_DATA_FFT256 (BASS_ChannelGetData flag) +* Channel locking to prevent access by other threads + BASS_ChannelLock +* Manual channel buffer updating + BASS_ChannelUpdate + BASS_ChannelPreBuf *removed* +* Configurable manual update length + BASS_Update +* Extended device information retrieval and detection of new/removed devices + BASS_GetDeviceInfo + BASS_RecordGetDeviceInfo + BASS_DEVICEINFO structure + BASS_GetDeviceDescription *removed* + BASS_RecordGetDeviceDescription *removed* + BASS_INFO (driver member) *removed* + BASS_RECORDINFO (driver member) *removed* + MULTI example updated +* Default device change tracking on Windows (as on OSX) + BASS_Init + BASS_RecordInit +* Speaker detection from Windows control panel + BASS_DEVICE_CPSPEAKERS (BASS_Init flag) +* Channel automatically stopped & resumed for DX8 effects + BASS_ChannelSetFX + BASS_ChannelRemoveFX +* "double" precision position conversion + BASS_ChannelBytes2Seconds + BASS_ChannelSeconds2Bytes +* Separate config functions for pointers + BASS_SetConfigPtr + BASS_GetConfigPtr + BASS_CONFIG_NET_AGENT/PROXY (BASS_SetConfigPtr options) +* Configurable file format verification length + BASS_CONFIG_VERIFY (BASS_SetConfig option) +* Stream filename retrieval + BASS_CHANNELINFO (file member) +* Channel sample retrieval + BASS_CHANNELINFO (sample member) +* META syncs no longer receive metadata in the "data" parameter + BASS_SYNC_META (BASS_ChannelSetSync type) +* Separate sync for OGG logical bitstream changes (instead of BASS_SYNC_META) + BASS_SYNC_OGG_CHANGE (BASS_ChannelSetSync type) + NETRADIO example updated (C version) +* Message syncing removed (use PostMessage instead) + BASS_SYNC_MESSAGE (BASS_ChannelSetSync flag) *removed* +* Data retrieval from stopped/paused channels + BASS_ChannelGetData +* Callback "user" parameters changed to pointers + BASS_StreamCreate / STREAMPROC + BASS_StreamCreateFileUser + BASS_StreamCreateURL / DOWNLOADPROC + BASS_RecordStart / RECORDPROC + BASS_ChannelSetDSP / DSPPROC + BASS_ChannelSetSync / SYNCPROC + +2.3.0.3 - 30/7/2007 +------------------- +* FX state resetting + BASS_FXReset +* PLS/M3U playlist URL processing + BASS_CONFIG_NET_PLAYLIST (BASS_SetConfig option) + NETRADIO example updated +* Internet stream connection status retrieval + BASS_FILEPOS_CONNECTED (BASS_StreamGetFilePosition mode) +* Lyrics3v2 tags + BASS_TAG_LYRICS3 (BASS_ChannelGetTags type) +* IT virtual channel configuration + BASS_CONFIG_MUSIC_VIRTUAL (BASS_SetConfig option) +* Accurate speaker detection on Vista + BASS_INFO (speakers member) +* Device output/input rate retrieval on Vista + BASS_INFO (freq member) + BASS_RECORDINFO (freq member) +* Syncing upon position changes + BASS_SYNC_SETPOS (BASS_ChannelSetSync type) +* Improved stall handling + BASS_SYNC_STALL +* Invalid decoding channel flags produce an error instead of being ignored + BASS_StreamCreate/File/User/URL + BASS_MusicLoad + +2.3.0.2 - 22/1/2007 +------------------- +* Retrieval of a sample's existing channel handles + BASS_SampleGetChannels +* 8192 sample FFT + BASS_DATA_FFT8192 (BASS_ChannelGetData flag) +* Adjustable recording buffer + BASS_CONFIG_REC_BUFFER (BASS_SetConfig option) +* Stopping decoding channels before the end + BASS_ChannelStop +* Sample channels created paused to prevent overriding before playback + BASS_SampleGetChannel +* Separate "MP3-FREE" version using the OS's MP3 decoder + BASS_CONFIG_MP3_CODEC *removed* + +2.3.0.1 - 12/6/2006 +------------------- +* Ability to move a channel to another device + BASS_ChannelSetDevice + MULTI example updated +* Support for ID3v2.4 tags at end of file + BASS_TAG_ID3V2 (BASS_ChannelGetTags type) + +2.3 - 21/5/2006 +--------------- +* MOD message/instrument/sample text retrieval, merged with stream tag retrieval function + BASS_ChannelGetTags + BASS_TAG_MUSIC_NAME/MESSAGE/INST/SAMPLE (BASS_ChannelGetTags types) + BASS_MusicGetName *removed* + BASS_StreamGetTags *removed* +* Plugin information retrieval + BASS_PluginGetInfo + BASS_PLUGININFO/FORM structures + BASS_CHANNELINFO (plugin member) + PLUGINS example updated +* RIFF/WAVE "INFO" tag retrieval + BASS_TAG_RIFF_INFO (BASS_StreamGetTags type) +* More specific WAVE format information + BASS_CTYPE_STREAM_WAV_PCM/FLOAT (channel types) + BASS_CTYPE_STREAM_WAV (channel type flag) +* Proxy server configuration + BASS_CONFIG_NET_PROXY (BASS_SetConfig option) + BASS_CONFIG_NET_NOPROXY *removed* + NETRADIO example updated +* Passive FTP mode + BASS_CONFIG_NET_PASSIVE (BASS_SetConfig option) +* Agent changes take immediate effect + BASS_CONFIG_NET_AGENT (BASS_SetConfig option) +* Minimum time gap between creating new sample channels + BASS_SAMPLE (mingap member) + BASS_SampleGetChannel +* Support for Unicode plugin filenames + BASS_PluginLoad +* Device output/input rate retrieval (MacOSX only) + BASS_INFO (freq member) + BASS_RECORDINFO (freq member) +* Extended version info (minor revision) + BASS_GetVersion +* Unsupported codec error code + BASS_ERROR_CODEC +* Optional use of the Windows MP3 codec + BASS_CONFIG_MP3_CODEC (BASS_SetConfig option) +* 3D support for MacOSX + BASS_Set3DFactors + BASS_Get3DFactors + BASS_Set3DPosition + BASS_Get3DPosition + BASS_Apply3D + BASS_ChannelSet3DAttributes + BASS_ChannelGet3DAttributes + BASS_ChannelSet3DPosition + BASS_ChannelGet3DPosition + 3DTEST example added (Win32 example also updated) +* VB version of SYNTH example added + +2.2 - 2/10/2005 +--------------- +* Add-on plugin system + BASS_PluginLoad + BASS_PluginFree + BASS_StreamCreateFile/User/URL + BASS_SampleLoad + PLUGINS example added +* MOD position & syncing in bytes + BASS_ChannelSetPosition + BASS_ChannelGetPosition + BASS_MusicGetOrderPosition added for orders position + BASS_SYNC_MUSICPOS added for orders syncing + MAKEMUSICPOS macro/define + CUSTLOOP example updated +* Stream/MOD "length" functions combined (also works with samples), new MOD orders length function + BASS_ChannelGetLength + BASS_MusicGetOrders + BASS_StreamGetLength *removed* + BASS_MusicGetLength *removed* +* Support for AIFF files + BASS_StreamCreateFile/User/URL + BASS_SampleLoad +* Support for 24 and 32-bit (integer) WAV files + BASS_StreamCreateFile/User/URL + BASS_SampleLoad +* WAV files are no longer converted to the "device" resolution + BASS_StreamCreateFile/User/URL +* Recording master control + BASS_RecordGetInput + BASS_RecordSetInput +* Adjustable pre-buffering + BASS_ChannelPreBuf +* Floating-point data retrieval + BASS_DATA_FLOAT (BASS_ChannelGetData flag) +* Support for floating-point samples + BASS_SampleLoad + BASS_SampleCreate +* Multi-channel samples + BASS_SampleLoad/Create + BASS_SAMPLE (chans member) +* Sample lengths given in bytes + BASS_SampleCreate + BASS_SAMPLE (length member) +* MOD music 8-bit resolution option + BASS_MusicLoad +* OGG vendor tag retrieval + BASS_TAG_VENDOR (BASS_StreamGetTags type) +* Configurable "User-Agent" header for internet streams + BASS_CONFIG_NET_AGENT (BASS_SetConfig option) +* Shoutcast metadata is now requested automatically + BASS_STREAM_META flag *removed* +* Download callbacks receive all data from start of file/stream (including any non-audio data) + DOWNLOADPROC +* Length when streaming in blocks is unavailable (BASS_ERROR_NOTAVAIL, not just 0) + BASS_ChannelGetLength +* Support for growing custom file streams + BASS_FILE_LEN (STREAMFILEPROC action) +* Query file action removed + BASS_FILE_QUERY *removed* +* Recording channel syncing + BASS_ChannelSetSync +* Info structure "size" members removed + BASS_INFO structure + BASS_RECORDINFO structure +* Little bit of flag reshuffling + BASS_MP3_SETPOS renamed to BASS_STREAM_PRESCAN + BASS_MUSIC_CALCLEN value changed and renamed to BASS_MUSIC_PRESCAN + BASS_MUSIC_POSRESET value changed +* Add-on API enhancements +* MacOSX port introduced + +2.1 - 28/11/2004 +---------------- +* Improved "mixtime" sync system, allowing custom looping + SYNCPROC + CUSTLOOP example added +* FX can now be in the DSP chain, so can be prioritized and applied in floating-point + BASS_ChannelSetFX + BASS_CONFIG_FLOATDSP (BASS_SetConfig option) +* Ability to set channel flags (eg. looping) independent of playback + BASS_ChannelSetFlags + SPEAKERS example updated +* Stream/MOD "play" and channel "resume" functions combined + BASS_ChannelPlay + BASS_StreamPlay *removed* + BASS_MusicPlay *removed* + BASS_MusicPlayEx *removed* + BASS_ChannelResume *removed* +* Stream/MOD pre-buffering functions combined + BASS_ChannelPreBuf + BASS_StreamPreBuf *removed* + BASS_MusicPreBuf *removed* +* MOD attribute functions combined, with added BPM/speed/globalvolume options + BASS_MusicSetAttribute + BASS_MusicGetAttribute + BASS_MUSIC_ATTRIB_AMPLIFY + BASS_MUSIC_ATTRIB_PANSEP + BASS_MUSIC_ATTRIB_PSCALER + BASS_MUSIC_ATTRIB_BPM + BASS_MUSIC_ATTRIB_SPEED + BASS_MUSIC_ATTRIB_VOL_GLOBAL + BASS_MUSIC_ATTRIB_VOL_CHAN + BASS_MUSIC_ATTRIB_VOL_INST + BASS_MusicSetAmplify *removed* + BASS_MusicSetPanSep *removed* + BASS_MusicSetPositionScaler *removed* + BASS_MusicSetVolume *removed* + BASS_MusicGetVolume *removed* +* Flag to reset bpm/etc as well as notes when seeking in MOD musics + BASS_MUSIC_POSRESETEX (BASS_MusicLoad & BASS_ChannelSetFlags flag) +* More flexible and concise sample channel creation system + BASS_SampleGetChannel + BASS_SamplePlay *removed* + BASS_SamplePlayEx *removed* + BASS_SamplePlay3D *removed* + BASS_SamplePlay3DEx *removed* +* Support for up to 30 speakers + BASS_SPEAKER_N macro/define +* More precise level measurement + BASS_ChannelGetLevel +* Level can now be retrieved from decoding channels + BASS_ChannelGetLevel +* Retrieval of a sample/channel's original sample resolution + BASS_SAMPLE (origres member) + BASS_CHANNELINFO (origres member) +* Support for streaming WAV files in "blocks" + BASS_StreamCreateURL + BASS_StreamCreateFileUser +* Status info (HTTP/ICY tags) available during connection to server + BASS_STREAM_STATUS (BASS_StreamCreateURL flag) + DOWNLOADPROC + NETRADIO example updated (Delphi version also added) +* Adjustable internet stream pre-buffering + BASS_CONFIG_NET_PREBUF (BASS_SetConfig option) +* Option to bypass proxy server + BASS_CONFIG_NET_NOPROXY (BASS_SetConfig option) +* Option whether to allow channels to be played after BASS_Pause + BASS_CONFIG_PAUSE_NOPLAY (BASS_SetConfig option) +* Recording channel count now a separate parameter + BASS_RecordStart (chans parameter) +* Synchronizer for when a channel is freed + BASS_SYNC_FREE (BASS_ChannelSetSync type) +* Data start file position retrieval + BASS_FILEPOS_START (BASS_StreamGetFilePosition mode) +* Performance improvements + MP2 decoding ~20% faster + MP3/MP1 decoding & FFT processing all up to 10% faster + OGG decoding ~3% faster +* C/C++ examples reorganised, with makefiles & VC++ projects +* Add-on API enhancements +* More DLL shrinkage :) + +2.0 - 31/10/2003 +---------------- +* Multiple output device support + BASS_Init (device number changes) + BASS_SetDevice + BASS_GetDevice + BASS_ChannelGetDevice + MULTI example updated (VB version also added) +* Multiple recording device support + BASS_RecordSetDevice + BASS_RecordGetDevice + BASS_RecordStart + BASS_ChannelGetDevice + HRECORD handle + RECORDPROC (handle parameter) +* Recording with DSP/FX + BASS_ChannelSetDSP + BASS_ChannelSetFX +* Recording position retrieval + BASS_ChannelGetPosition +* Start recording paused + BASS_RECORD_PAUSE (BASS_RecordStart flag) +* Multi-channel streams, inc. support for multichannel OGG & WAV files + BASS_StreamCreate + BASS_StreamCreateFile/User/URL +* FFT for individual channels, inc. multi-channel streams + BASS_DATA_FFT_INDIVIDUAL (BASS_ChannelGetData flag) + BASS_DATA_FFT512S/1024S/2048S/4096S *removed* +* DSP prioritizing + BASS_ChannelSetDSP + DSPTEST example updated +* Seeking in internet streamed files + BASS_ChannelSetPosition +* Enhanced custom file stream systems + BASS_StreamCreateFileUser + BASS_FILE_SEEK (STREAMFILEPROC action) + BASS_STREAM_FILEPROC flag *removed* +* Enhanced custom stream system with automatic stalling/resuming + STREAMPROC + BASS_STREAMPROC_END (STREAMPROC flag) +* Synchronizer for stalled/resumed playback + BASS_SYNC_STALL (BASS_ChannelSetSync type) +* Synchronizer for completed download + BASS_SYNC_DOWNLOAD (BASS_ChannelSetSync type) +* End sync support for custom streams + BASS_SYNC_END (BASS_ChannelSetSync type) +* Synchronizer support for decoding channels + BASS_ChannelSetSync +* Unified configuration function + BASS_SetConfig + BASS_GetConfig + BASS_SetBufferLength *removed* + BASS_SetNetConfig *removed* + BASS_SetGlobalVolumes *removed* + BASS_GetGlobalVolumes *removed* + BASS_SetLogCurves *removed* + BASS_Set3DAlgorithm *removed* + BASS_DEVICE_FLOATDSP flag *removed* +* Internet stream saving to disk replaced by more flexible callback + BASS_StreamCreateURL + DOWNLOADPROC + VB NETRADIO example updated +* Buffer length retrieval when "streaming in blocks" + BASS_FILEPOS_END (BASS_StreamGetFilePosition mode) +* Individual sample rate setting for MOD musics + BASS_MusicLoad +* Channel type and default sample rate retrieval + BASS_ChannelGetInfo (replaces BASS_ChannelGetFlags) + BASS_CHANNELINFO +* MOD music flag retrieval + BASS_CHANNELINFO (flags member) +* Adjustable instrument volumes in MOD musics + BASS_MusicSetVolume (replaces BASS_MusicSetChannelVol) + BASS_MusicGetVolume (replaces BASS_MusicGetChannelVol) +* Automatically free a MOD music when it stops or ends + BASS_MUSIC_AUTOFREE (BASS_MusicLoad flag) +* Class GUID added to initialization parameters + BASS_Init + BASS_SetCLSID *removed* +* Update period adjustable at any time + BASS_CONFIG_UPDATEPERIOD (BASS_SetConfig option) + BASS_DEVICE_NOTHREAD flag *removed* +* Customizable maximum volume setting + BASS_CONFIG_MAXVOL (BASS_SetConfig option) + BASS_DEVICE_VOL1000 flag *removed* +* Device volume is now always left as it is during init/freeing + BASS_DEVICE_LEAVEVOL flag *removed* +* Device driver name retrieval + BASS_INFO (driver member) + BASS_RECORDINFO (driver member) +* Error codes are local to the current thread + BASS_ErrorGetCode +* Performance improvements + MP2 decoding 15-20% faster + MP3 decoding ~5% faster +* Built-in CD functions removed (replaced in BASSCD) + BASS_CDDoor *removed* + BASS_CDFree *removed* + BASS_CDGetID *removed* + BASS_CDGetTrackLength *removed* + BASS_CDGetTracks *removed* + BASS_CDInDrive *removed* + BASS_CDInit *removed* + BASS_CDPlay *removed* +* Force channels to use software mixing + BASS_SAMPLE_SOFTWARE (BASS_StreamCreate/File/User/URL & BASS_MusicLoad flag) +* Support for high-pass filter and forward/reverse (S9E/F) IT/MPT effects +* BASS_MUSIC flags rearranged to mirror BASS_SAMPLE/STREAM counterparts +* Output automatically started during initialization +* BASS_ChannelGetData once again accepts any "length" param +* All function comments have been removed from the API headers to avoid + outdated/incorrect information - the documentation should be used. +* TMT Pascal API removed from main distribution - now available on the website +* A few more 'K' knocked off the DLL size :) + +1.8a - 18/6/2003 +---------------- +* Tweaks 'n' fixes, including... + Fixed seeking bug on 32-bit OGG streams + Fixed seeking on a decoding channel after it has reached the end + Low FPU precision (eg. when using Direct3D) issue addressed + Improved speakers (BASS_INFO) detection + BASS_ChannelSeconds2Bytes return value is rounded down to nearest sample + BASS_ChannelGetData "length" param must equal a whole number of samples + Slide syncs are triggered by "-2" volume slides on "autofree" streams +* Support for Unicode filenames + BASS_UNICODE (BASS_SampleLoad/BASS_StreamCreateFile/BASS_MusicLoad flag) +* 4096 sample FFT + BASS_DATA_FFT4096/S (BASS_ChannelGetData flags) +* Another 'K' knocked off the DLL size + +1.8 - 9/3/2003 +-------------- +* 32-bit floating-point channels + BASS_SAMPLE_FLOAT (BASS_StreamCreate/File/URL flag) + BASS_MUSIC_FLOAT (BASS_MusicLoad flag) + BASS_SAMPLE_FLOAT (BASS_RecordStart flag) + BASS_DEVICE_FLOATDSP (BASS_Init flag) + DSPTEST example updated +* Support for 32-bit floating-point (type 3) WAV files + BASS_StreamCreateFile/URL + BASS_SampleLoad +* Channel speaker assignment + BASS_SPEAKER_FRONT (BASS_MusicLoad/BASS_StreamCreate/File/URL flag) + BASS_SPEAKER_REAR " + BASS_SPEAKER_CENLFE " + BASS_SPEAKER_REAR2 " + BASS_SPEAKER_FRONTLEFT " + BASS_SPEAKER_FRONTRIGHT " + BASS_SPEAKER_REARLEFT " + BASS_SPEAKER_REARRIGHT " + BASS_SPEAKER_CENTER " + BASS_SPEAKER_LFE " + BASS_SPEAKER_REAR2LEFT " + BASS_SPEAKER_REAR2RIGHT " + BASS_INFO (speakers member) + BASS_DEVICE_SPEAKERS (BASS_Init flag) + 4SPEAKER example replaced by SPEAKERS example +* Recording input type retrieval + BASS_INPUT_TYPE_xxx (BASS_RecordGetInput) + RECTEST example updated +* Non-interpolated MOD mixing + BASS_MUSIC_NONINTER (BASS_MusicLoad/PlayEx flag) +* Performance improvements + FFT up to 100% faster! + MP3(MPEG2/2.5) decoding up to 60% faster + MMX mixers 5-10% faster + MP3(MPEG1)/MP2/MP1/OGG decoding all ~5% faster +* Optional disabling of FFT windowing + BASS_DATA_FFT_NOWINDOW (BASS_ChannelGetData flag) +* BASS_ERROR_FILEFORM - error code to distinguish between file and sample format + BASS_MusicLoad + BASS_SampleLoad + BASS_StreamCreate/File/URL +* BASS_StreamGetFilePosition mode flags added + BASS_FILEPOS_DECODE/DOWNLOAD/END +* DirectSound 9 detection + BASS_INFO (dsver member) +* Initialization flags retrieval + BASS_INFO (initflags member) +* Half-rate MP3 playback option removed + BASS_MP3_HALFRATE flag *removed* +* New internal "plugin" system - BASSWMA is further integrated as a result +* Improved documentation - integrated with BASSWMA, search option added +* VB version of DSPTEST example added +* Delphi RECORDTEST example added +* Guess what... reduced DLL size again :) + +1.7 - 27/10/2002 +---------------- +* New alternative DX8 (DMO) effects implementation + BASS_StreamCreate/File/URL + BASS_MusicLoad + BASS_ChannelSetFX + SYNTH example updated +* User file streaming + BASS_STREAM_FILEPROC (BASS_StreamCreate flag) + STREAMFILEPROC +* DSP & FX support for decoding channels + BASS_ChannelSetDSP + BASS_ChannelSetFX +* Support for DX8 (DMO) effects in IT/XM/MO3 files + BASS_MusicLoad +* Support for chained OGG streaming (and syncing) + BASS_StreamCreateURL + BASS_SYNC_META (BASS_ChannelSetSync type) +* Attribute (volume/frequency/pan) sliding + BASS_ChannelSlideAttributes + BASS_ChannelIsSliding + BASS_SYNC_SLIDE (BASS_ChannelSetSync type) +* Recording without a callback function + BASS_RecordStart + LIVEFX example added +* Query a channel's buffered data + BASS_DATA_AVAILABLE (BASS_ChannelGetData flag) +* Discard data from the recording buffer + BASS_ChannelGetData +* Adjustable internet stream config (timeout/buffer lengths) + BASS_SetNetConfig +* Recommended minimum buffer length + BASS_INFO (minbuf member) +* MOD music flags adjustment without changing playback position + BASS_MusicPlayEx + PLAYER (MASM) example updated +* More functions are now useable in MOD music "mixtime" syncs + SYNCPROC + BASS_ChannelSetPosition + BASS_MusicPlayEx + BASS_MusicSetAmplify + BASS_MusicSetPanSep +* Maximum buffer length increased to 5 seconds + BASS_SetBufferLength +* Support for extended filter range in IT files + BASS_MusicLoad +* Speedier MOD music file verification + BASS_MusicLoad +* Delphi 3DTEST example fixed +* Magically reduced DLL size again :) + +1.6a - 25/8/2002 +---------------- +* OGG support updated to 1.0 +* Stereo FFT + BASS_DATA_FFT512S/1024S/2048S (BASS_ChannelGetData flags) +* Support for "Invert Loop" (EFx) MOD effect +* Reduced DLL size +* New Delphi examples + WRITEWAV - WAVE writer example + SAMPLEVIS - Visualisation example + +1.6 - 13/6/2002 +--------------- +* 64-bit stream lengths and positions + BASS_StreamGetLength + BASS_ChannelBytes2Seconds + BASS_ChannelSeconds2Bytes + BASS_ChannelGetPosition + BASS_ChannelSetPosition + BASS_ChannelSetSync +* Recording input selection + BASS_RECORDINFO (inputs & singlein members) + BASS_RecordGetInputName + BASS_RecordGetInput + BASS_RecordSetInput +* Adjustable recording update period + BASS_RecordStart +* Load OGG files as samples + BASS_SampleLoad +* CD drive door opening & closing + BASS_CDDoor +* CDDB2 ID retrieval + BASS_CDID_CDDB2 (BASS_CDGetID flag) +* Streaming beyond initial file length + BASS_StreamCreateFile +* Recording position bytes<->seconds translation + BASS_ChannelBytes2Seconds + BASS_ChannelSeconds2Bytes +* Improved multi-threaded support (play from any thread) + BASS_MusicPlay/Ex + BASS_SamplePlay/3D/Ex + BASS_StreamPlay + BASS_DEVICE_NOSYNC flag *removed* +* Paused channel status + BASS_ACTIVE_PAUSED (BASS_ChannelIsActive) +* Integrated WMA stream freeing + BASS_StreamFree + BASS_Free +* Pin-point accurate OGG seeking without BASS_MP3_SETPOS flag +* Win2k DS buffer bug fix + +1.5a - 14/4/2002 +---------------- +* NT4 fix (also enables "nosound" device without DX installed) + BASS_ERROR_DX error code +* MOD music loading without the samples + BASS_MUSIC_NOSAMPLE (BASS_MusicLoad flag) +* Custom decoding channels + BASS_STREAM_DECODE (BASS_StreamCreate flag) +* 5 second HTTP connection timeout + BASS_ERROR_TIMEOUT (BASS_StreamCreateURL error code) + +1.5 - 31/3/2002 +--------------- +* Improved performance + MMX mixers lot faster (over 50% faster in some cases!) + OGG decoding 15-20% faster + MP3 decoding 5-10% faster +* Recording + BASS_RecordGetDeviceDescription + BASS_RecordInit + BASS_RecordFree + BASS_RecordGetInfo + BASS_RecordStart +* OGG support built-in (OGG/VORBIS DLLs not required) + BASS_DEVICE_OGG flag *removed* +* MOD music seeking in seconds + BASS_MusicPlayEx + BASS_ChannelSetPosition +* Shoutcast metadata retrieval + BASS_STREAM_META (BASS_StreamCreateURL flag) + BASS_TAG_META (BASS_StreamGetTags type) + BASS_SYNC_META (BASS_ChannelSetSync type) +* 1000 volume levels + BASS_DEVICE_VOL1000 (BASS_Init/CDInit flag) +* CDDB ID retrieval + BASS_CDID_CDDB (BASS_CDGetID flag) +* Leave the CD volume as it is during init/closing + BASS_DEVICE_LEAVEVOL (BASS_CDInit flag) +* FFT enabled on decoding channels + BASS_ChannelGetData +* Left level duplicated on right for mono channels + BASS_ChannelGetLevel +* Improved MPEG length estimation without BASS_MP3_SETPOS flag + BASS_StreamGetLength +* Support for Modplug/ADPCM compressed files + BASS_MusicLoad +* Device description function parameter change + BASS_GetDeviceDescription +* MASM API + +1.4 - 30/1/2002 +--------------- +* Channel decoding without playback + BASS_MUSIC_DECODE (BASS_MusicLoad flag) + BASS_STREAM_DECODE (BASS_StreamCreateFile/URL flag) + BASS_ChannelGetData +* Windows message sync callbacks + BASS_SYNC_MESSAGE (BASS_ChannelSetSync flag) +* Adjustable channel volumes in MOD musics + BASS_MusicSetChannelVol + BASS_MusicGetChannelVol +* Customizable DirectSound initialization object + BASS_SetCLSID +* Retrieve HMUSIC/HSTREAM/HCHANNEL IDirectSoundBuffer interfaces + BASS_GetDSoundObject +* A3D functions removed (use BASS_SetCLSID/BASS_GetDSoundObject to access A3D) + BASS_DEVICE_A3D (BASS_Init flag) + BASS_SetA3DResManager + BASS_GetA3DResManager + BASS_SetA3DHFAbsorbtion + BASS_GetA3DHFAbsorbtion +* Callback functions now work in VB6 + DSPPROC + STREAMPROC + SYNCPROC +* Improved PCM WAVE streaming performance + BASS_StreamCreateFile + BASS_StreamCreateURL +* OGG modules updated to RC3 +* Stereo sample support in MO3 format +* MO3 encoder now distributed separately from BASS + +1.3 - 17/11/2001 +---------------- +* Manual buffer updating + BASS_DEVICE_NOTHREAD (BASS_Init flag) + BASS_Update +* Adjustable buffer update period (allows small buffer sizes) + BASS_Init +* Output device latency retrieval + BASS_INFO (latency member) +* MPEG/OGG seeking without BASS_MP3_SETPOS flag + BASS_ChannelSetPosition +* Internet file streaming from offsets + BASS_StreamCreateURL +* File stream tag/comment retrieval (ID3/ID3v2/OGG/HTTP/ICY tags) + BASS_StreamGetTags +* Byte<->time position translation + BASS_ChannelBytes2Seconds + BASS_ChannelSeconds2Bytes +* UMX (Unreal/Tournament music package) format support + BASS_MusicLoad +* S3M/IT sync fx changed to S2x (S0x conflicted with S00) + BASS_SYNC_MUSICFX +* Stereo sample support in IT/XM/S3M formats +* MO3: OGG compression supported + +1.2 - 25/9/2001 +--------------- +* OGG (Ogg Vorbis) stream support + BASS_DEVICE_OGG (BASS_Init flag) + BASS_StreamCreateFile + BASS_StreamCreateURL +* Channel linking (start/stop/pause/resume channels together) + BASS_ChannelSetLink + BASS_ChannelRemoveLink +* MOD music playback length calculation + BASS_MUSIC_CALCLEN (BASS_MusicLoad flag) + BASS_MusicGetLength +* Pre-buffering + BASS_MusicPreBuf + BASS_StreamPreBuf +* Samples with single simultaneous playbacks have same HSAMPLE/HCHANNEL handle + BASS_SamplePlay/Ex +* Stopping a custom stream flushes its buffer contents + BASS_ChannelStop + +1.1a - 31/8/2001 +---------------- +* NT4 bug fixed +* XM Wxx effect syncing + BASS_SYNC_MUSICFX +* MP3/2/1 rewinding without BASS_MP3_SETPOS + BASS_ChannelSetPosition + +1.1 - 11/8/2001 +--------------- +* DX8 (DMO) effects + BASS_SAMPLE_FX (BASS_StreamCreate/File/URL flag) + BASS_MUSIC_FX (BASS_MusicLoad flag) + BASS_ChannelSetFX + BASS_ChannelRemoveFX + BASS_FXSetParameters + BASS_FXGetParameters + BASS_FXCHORUS structure + BASS_FXCOMPRESSOR structure + BASS_FXDISTORTION structure + BASS_FXECHO structure + BASS_FXFLANGER structure + BASS_FXGARGLE structure + BASS_FXI3DL2REVERB structure + BASS_FXPARAMEQ structure + BASS_FXREVERB structure +* Internet file streaming in blocks (inc. Shoutcast/Icecast stream support) + BASS_STREAM_BLOCK (BASS_StreamCreateURL flag) +* 512/1024/2048 sample FFT + BASS_DATA_FFT512/1024/2048 (BASS_ChannelGetData flags) +* CD identification + BASS_CDGetID +* Improved DX version detection + BASS_INFO (dsver member) + +1.0 - 20/6/2001 +--------------- +* Load MP3/MP2/MP1 files as samples + BASS_SampleLoad +* Internet file streaming from FTP servers + BASS_StreamCreateURL +* Save a local copy of internet file streams + BASS_StreamCreateURL +* Sample accurate file stream seeking + BASS_ChannelSetPosition + BASS_StreamGetBlockLength *removed* +* Stream position synchronizer + BASS_SYNC_POS +* Increased synchronizer precision +* Improved MPEG file detection and error detection +* Stop MOD musics on a backwards jump effect + BASS_MUSIC_STOPBACK (BASS_MusicLoad/PlayEx flag) +* Leave the volume as it is during closing (as well as initialization) + BASS_DEVICE_LEAVEVOL (BASS_Init flag) +* Optional automatic use of foreground window handle during initialization + BASS_Init +* Reduced DLL size +* VB API fixes + +0.9 - 18/4/2001 +--------------- +* Internet file streaming + BASS_StreamCreateURL +* MP1 & MP2 (MPEG layer 1 & 2) support + BASS_StreamCreateFile/URL +* MPEG 2.5 support (12000/11025/8000hz sample rates) + BASS_StreamCreateFile/URL +* Decoding/download/end file stream position retrieval + BASS_StreamGetFilePosition +* XMPlay surround sound for MOD musics + BASS_MUSIC_SURROUND (BASS_MusicLoad/PlayEx flag) + BASS_MUSIC_SURROUND2 (BASS_MusicLoad/PlayEx flag) +* Restrict the download rate of internet file streams + BASS_STREAM_RESTRATE (BASS_StreamCreateURL flag) +* Check if an internet file stream is stalled + BASS_ChannelIsActive +* Automatically free a stream when it stops or ends + BASS_STREAM_AUTOFREE (BASS_StreamCreate/File/URL flag) +* Leave the volume as it is during initialization + BASS_DEVICE_LEAVEVOL (BASS_Init flag) +* Number of CD tracks retrieval + BASS_CDGetTracks +* CD track length retrieval + BASS_CDGetTrackLength +* Exact stream length set after whole file is streamed + BASS_StreamGetLength +* TMT Pascal API and samples +* Dynamic-loading Delphi API + +0.8a - 28/2/2000 +---------------- +* Updated Delphi API and samples + +0.8 - 24/1/2000 +--------------- +* Improved MP3 performance on P2/K6 and above CPUs +* User DSP functions on streams and MOD musics + BASS_ChannelSetDSP + BASS_ChannelRemoveDSP +* DX7 voice allocation & management + BASS_SAMPLE_VAM (BASS_SampleLoad/Create flag) + BASS_VAM_xxx flags + BASS_SAMPLE (vam & priority members) +* DX7 software 3D algorithm selection + BASS_Set3DAlgorithm +* DirectSound interface retrieval + BASS_GetDSoundObject +* Log/linear volume & panning curves + BASS_SetLogCurves +* User data passed to callback functions + STREAMPROC - BASS_StreamCreate + SYNCPROC - BASS_ChannelSetSync +* New synchronizer + BASS_SYNC_MUSICFX +* New synchronizer flag + BASS_SYNC_MIXTIME +* Disable synchronizers option - saves a little CPU time + BASS_DEVICE_NOSYNC (BASS_Init flag) +* Hi-res floating-point CPU usage monitoring + BASS_GetCPU +* Wait for playback to start when playing a CD + BASS_CDPlay +* DirectSound (dsound.dll) version retrieval + BASS_INFO (dsver member) +* Removed volume sliding functions (they were fairly pointless) + BASS_SlideVolume + BASS_IsSliding +* MO3: read/write encoder settings +* MO3: remove inst/samp/message texts now optional +* MO3: LAME encoder settings + +0.7 - 3/10/1999 +--------------- +* MO3 (MP3 compressed MODs) +* A3D functions + BASS_DEVICE_A3D (BASS_Init flag) + BASS_INFO (a3d member) + BASS_SetA3DResManager + BASS_GetA3DResManager + BASS_SetA3DHFAbsorbtion + BASS_GetA3DHFAbsorbtion +* Music/stream immediate sample data retrieval + BASS_ChannelGetData +* File stream (WAV/MP3) length retrieval + BASS_StreamGetLength + BASS_StreamGetBlockLength +* File stream seeking + BASS_ChannelSetPosition +* Mono MP3 option (lower CPU usage) + BASS_StreamCreateFile +* Music length retrieval + BASS_MusicGetLength +* Music name retrieval + BASS_MusicGetName +* Stop notes when moving MOD music position + BASS_MUSIC_POSRESET (BASS_MusicLoad/BASS_MusicPlayEx flag) +* BASS_ERROR_FREQ - invalid sample rate error code + BASS_SampleCreate + BASS_SamplePlayEx + BASS_SamplePlay3DEx + BASS_StreamCreate + BASS_ChannelSetAttributes +* Delphi and VB APIs + +0.6a - 26/7/1999 +---------------- +* Half rate MP3 option (lower CPU usage) + BASS_MP3_HALFRATE +* Loading/streaming from file offsets + BASS_MusicLoad + BASS_SampleLoad + BASS_StreamCreateFile +* Global music/sample/stream volume levels + BASS_SetGlobalVolumes + BASS_GetGlobalVolumes +* Other new function + BASS_SampleStop +* New synchronizer + BASS_SYNC_END +* New sample overrider + BASS_SAMPLE_OVER_DIST +* LoadLibrary/GetProcAddress instructions and example + +0.5 - 4/7/1999 +-------------- +* Documentation! +* File streaming (MP3 and WAV) + BASS_StreamCreateFile +* Custom generated samples + BASS_SampleCreate + BASS_SampleCreateDone +* Other new function + BASS_MusicSetPositionScaler +* Renamed function + BASS_ChannelClearSync -> BASS_ChannelRemoveSync +* Alterations made to + BASS_ChannelGetPosition + BASS_SampleLoad + BASS_StreamPlay + +0.4 - 30/3/1999 +--------------- +* Compressed WAV samples support (using audio CODECs) +* Updated CD volume handling - now works with SB Live +* More linear channel volume/pan scales (were slightly off before) +* "No sound" device option +* 3D sound functions + BASS_Set3DFactors + BASS_Get3DFactors + BASS_Set3DPosition + BASS_Get3DPosition + BASS_Apply3D + BASS_SamplePlay3D + BASS_SamplePlay3DEx + BASS_ChannelSet3DAttributes + BASS_ChannelGet3DAttributes + BASS_ChannelSet3DPosition + BASS_ChannelGet3DPosition +* EAX functions + BASS_SetEAXParameters + BASS_GetEAXParameters + BASS_ChannelSetEAXMix + BASS_ChannelGetEAXMix +* Other new functions + BASS_GetDeviceDescription + BASS_SetBufferLen + BASS_ChannelGetFlags + BASS_ChannelPause + BASS_ChannelResume + BASS_ChannelSetPosition +* Replaced function + BASS_CDResume -> BASS_ChannelResume +* Alterations made to + BASS_Init + BASS_CDInit + BASS_SampleLoad + BASS_StreamPlay + BASS_INFO structure + BASS_SAMPLE structure + BASS_DEVICE_xxx flags + BASS_SAMPLE_xxx flags + +0.3 - 8/3/1999 +-------------- +* Synchronization functions + BASS_ChannelSetSync + BASS_ChannelClearSync +* Other new functions + BASS_GetVersion + BASS_ChannelGetPosition + BASS_ChannelGetLevel + BASS_ChannelGetAttributes + BASS_ChannelSetAttributes +* Replaced functions + BASS_MusicStop -> BASS_ChannelStop + BASS_MusicSetVolume -> BASS_ChannelSetAttributes + BASS_CDStop -> BASS_ChannelStop + BASS_CDSetVolume -> BASS_ChannelSetAttributes + BASS_CDGetVolume -> BASS_ChannelGetAttributes + BASS_ChannelUpdate -> BASS_ChannelSetAttributes +* Alterations made to + BASS_MusicPlayEx + BASS_StreamPlay + BASS_INFO structure + +0.2 - 28/2/1999 +--------------- +* First public release + + +Bug reports, Suggestions, Comments, Enquiries, etc +================================================== +If you have any of the aforementioned please visit the BASS forum at the +website. If you can't find an answer there, you can also email: + + bass@un4seen.com + diff --git a/bass-sys/bass24/c/3dtest/3dtest.c b/bass-sys/win/bass24/c/3dtest/3dtest.c similarity index 100% rename from bass-sys/bass24/c/3dtest/3dtest.c rename to bass-sys/win/bass24/c/3dtest/3dtest.c diff --git a/bass-sys/bass24/c/3dtest/3dtest.dsp b/bass-sys/win/bass24/c/3dtest/3dtest.dsp similarity index 100% rename from bass-sys/bass24/c/3dtest/3dtest.dsp rename to bass-sys/win/bass24/c/3dtest/3dtest.dsp diff --git a/bass-sys/bass24/c/3dtest/3dtest.rc b/bass-sys/win/bass24/c/3dtest/3dtest.rc similarity index 100% rename from bass-sys/bass24/c/3dtest/3dtest.rc rename to bass-sys/win/bass24/c/3dtest/3dtest.rc diff --git a/bass-sys/bass24/c/3dtest/3dtest.vcproj b/bass-sys/win/bass24/c/3dtest/3dtest.vcproj similarity index 100% rename from bass-sys/bass24/c/3dtest/3dtest.vcproj rename to bass-sys/win/bass24/c/3dtest/3dtest.vcproj diff --git a/bass-sys/bass24/c/3dtest/3dtest.vcxproj b/bass-sys/win/bass24/c/3dtest/3dtest.vcxproj similarity index 100% rename from bass-sys/bass24/c/3dtest/3dtest.vcxproj rename to bass-sys/win/bass24/c/3dtest/3dtest.vcxproj diff --git a/bass-sys/bass24/c/3dtest/makefile b/bass-sys/win/bass24/c/3dtest/makefile similarity index 100% rename from bass-sys/bass24/c/3dtest/makefile rename to bass-sys/win/bass24/c/3dtest/makefile diff --git a/bass-sys/bass24/c/bass.dsw b/bass-sys/win/bass24/c/bass.dsw similarity index 100% rename from bass-sys/bass24/c/bass.dsw rename to bass-sys/win/bass24/c/bass.dsw diff --git a/bass-sys/win/bass24/c/bass.h b/bass-sys/win/bass24/c/bass.h new file mode 100644 index 0000000..901f9a2 --- /dev/null +++ b/bass-sys/win/bass24/c/bass.h @@ -0,0 +1,1160 @@ +/* + BASS 2.4 C/C++ header file + Copyright (c) 1999-2019 Un4seen Developments Ltd. + + See the BASS.CHM file for more detailed documentation +*/ + +#ifndef BASS_H +#define BASS_H + +#ifdef _WIN32 +#include +typedef unsigned __int64 QWORD; +#else +#include +#define WINAPI +#define CALLBACK +typedef uint8_t BYTE; +typedef uint16_t WORD; +typedef uint32_t DWORD; +typedef uint64_t QWORD; +#ifdef __OBJC__ +#include +#else +typedef int BOOL; +#endif +#ifndef TRUE +#define TRUE 1 +#define FALSE 0 +#endif +#define LOBYTE(a) (BYTE)(a) +#define HIBYTE(a) (BYTE)((a)>>8) +#define LOWORD(a) (WORD)(a) +#define HIWORD(a) (WORD)((a)>>16) +#define MAKEWORD(a,b) (WORD)(((a)&0xff)|((b)<<8)) +#define MAKELONG(a,b) (DWORD)(((a)&0xffff)|((b)<<16)) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define BASSVERSION 0x204 // API version +#define BASSVERSIONTEXT "2.4" + +#ifndef BASSDEF +#define BASSDEF(f) WINAPI f +#else +#define NOBASSOVERLOADS +#endif + +typedef DWORD HMUSIC; // MOD music handle +typedef DWORD HSAMPLE; // sample handle +typedef DWORD HCHANNEL; // playing sample's channel handle +typedef DWORD HSTREAM; // sample stream handle +typedef DWORD HRECORD; // recording handle +typedef DWORD HSYNC; // synchronizer handle +typedef DWORD HDSP; // DSP handle +typedef DWORD HFX; // DX8 effect handle +typedef DWORD HPLUGIN; // Plugin handle + +// Error codes returned by BASS_ErrorGetCode +#define BASS_OK 0 // all is OK +#define BASS_ERROR_MEM 1 // memory error +#define BASS_ERROR_FILEOPEN 2 // can't open the file +#define BASS_ERROR_DRIVER 3 // can't find a free/valid driver +#define BASS_ERROR_BUFLOST 4 // the sample buffer was lost +#define BASS_ERROR_HANDLE 5 // invalid handle +#define BASS_ERROR_FORMAT 6 // unsupported sample format +#define BASS_ERROR_POSITION 7 // invalid position +#define BASS_ERROR_INIT 8 // BASS_Init has not been successfully called +#define BASS_ERROR_START 9 // BASS_Start has not been successfully called +#define BASS_ERROR_SSL 10 // SSL/HTTPS support isn't available +#define BASS_ERROR_ALREADY 14 // already initialized/paused/whatever +#define BASS_ERROR_NOTAUDIO 17 // file does not contain audio +#define BASS_ERROR_NOCHAN 18 // can't get a free channel +#define BASS_ERROR_ILLTYPE 19 // an illegal type was specified +#define BASS_ERROR_ILLPARAM 20 // an illegal parameter was specified +#define BASS_ERROR_NO3D 21 // no 3D support +#define BASS_ERROR_NOEAX 22 // no EAX support +#define BASS_ERROR_DEVICE 23 // illegal device number +#define BASS_ERROR_NOPLAY 24 // not playing +#define BASS_ERROR_FREQ 25 // illegal sample rate +#define BASS_ERROR_NOTFILE 27 // the stream is not a file stream +#define BASS_ERROR_NOHW 29 // no hardware voices available +#define BASS_ERROR_EMPTY 31 // the MOD music has no sequence data +#define BASS_ERROR_NONET 32 // no internet connection could be opened +#define BASS_ERROR_CREATE 33 // couldn't create the file +#define BASS_ERROR_NOFX 34 // effects are not available +#define BASS_ERROR_NOTAVAIL 37 // requested data/action is not available +#define BASS_ERROR_DECODE 38 // the channel is/isn't a "decoding channel" +#define BASS_ERROR_DX 39 // a sufficient DirectX version is not installed +#define BASS_ERROR_TIMEOUT 40 // connection timedout +#define BASS_ERROR_FILEFORM 41 // unsupported file format +#define BASS_ERROR_SPEAKER 42 // unavailable speaker +#define BASS_ERROR_VERSION 43 // invalid BASS version (used by add-ons) +#define BASS_ERROR_CODEC 44 // codec is not available/supported +#define BASS_ERROR_ENDED 45 // the channel/file has ended +#define BASS_ERROR_BUSY 46 // the device is busy +#define BASS_ERROR_UNSTREAMABLE 47 // unstreamable file +#define BASS_ERROR_UNKNOWN -1 // some other mystery problem + +// BASS_SetConfig options +#define BASS_CONFIG_BUFFER 0 +#define BASS_CONFIG_UPDATEPERIOD 1 +#define BASS_CONFIG_GVOL_SAMPLE 4 +#define BASS_CONFIG_GVOL_STREAM 5 +#define BASS_CONFIG_GVOL_MUSIC 6 +#define BASS_CONFIG_CURVE_VOL 7 +#define BASS_CONFIG_CURVE_PAN 8 +#define BASS_CONFIG_FLOATDSP 9 +#define BASS_CONFIG_3DALGORITHM 10 +#define BASS_CONFIG_NET_TIMEOUT 11 +#define BASS_CONFIG_NET_BUFFER 12 +#define BASS_CONFIG_PAUSE_NOPLAY 13 +#define BASS_CONFIG_NET_PREBUF 15 +#define BASS_CONFIG_NET_PASSIVE 18 +#define BASS_CONFIG_REC_BUFFER 19 +#define BASS_CONFIG_NET_PLAYLIST 21 +#define BASS_CONFIG_MUSIC_VIRTUAL 22 +#define BASS_CONFIG_VERIFY 23 +#define BASS_CONFIG_UPDATETHREADS 24 +#define BASS_CONFIG_DEV_BUFFER 27 +#define BASS_CONFIG_REC_LOOPBACK 28 +#define BASS_CONFIG_VISTA_TRUEPOS 30 +#define BASS_CONFIG_IOS_SESSION 34 +#define BASS_CONFIG_IOS_MIXAUDIO 34 +#define BASS_CONFIG_DEV_DEFAULT 36 +#define BASS_CONFIG_NET_READTIMEOUT 37 +#define BASS_CONFIG_VISTA_SPEAKERS 38 +#define BASS_CONFIG_IOS_SPEAKER 39 +#define BASS_CONFIG_MF_DISABLE 40 +#define BASS_CONFIG_HANDLES 41 +#define BASS_CONFIG_UNICODE 42 +#define BASS_CONFIG_SRC 43 +#define BASS_CONFIG_SRC_SAMPLE 44 +#define BASS_CONFIG_ASYNCFILE_BUFFER 45 +#define BASS_CONFIG_OGG_PRESCAN 47 +#define BASS_CONFIG_MF_VIDEO 48 +#define BASS_CONFIG_AIRPLAY 49 +#define BASS_CONFIG_DEV_NONSTOP 50 +#define BASS_CONFIG_IOS_NOCATEGORY 51 +#define BASS_CONFIG_VERIFY_NET 52 +#define BASS_CONFIG_DEV_PERIOD 53 +#define BASS_CONFIG_FLOAT 54 +#define BASS_CONFIG_NET_SEEK 56 +#define BASS_CONFIG_AM_DISABLE 58 +#define BASS_CONFIG_NET_PLAYLIST_DEPTH 59 +#define BASS_CONFIG_NET_PREBUF_WAIT 60 +#define BASS_CONFIG_ANDROID_SESSIONID 62 +#define BASS_CONFIG_WASAPI_PERSIST 65 +#define BASS_CONFIG_REC_WASAPI 66 +#define BASS_CONFIG_ANDROID_AAUDIO 67 + +// BASS_SetConfigPtr options +#define BASS_CONFIG_NET_AGENT 16 +#define BASS_CONFIG_NET_PROXY 17 +#define BASS_CONFIG_IOS_NOTIFY 46 +#define BASS_CONFIG_LIBSSL 64 + +// BASS_CONFIG_IOS_SESSION flags +#define BASS_IOS_SESSION_MIX 1 +#define BASS_IOS_SESSION_DUCK 2 +#define BASS_IOS_SESSION_AMBIENT 4 +#define BASS_IOS_SESSION_SPEAKER 8 +#define BASS_IOS_SESSION_DISABLE 16 + +// BASS_Init flags +#define BASS_DEVICE_8BITS 1 // 8 bit +#define BASS_DEVICE_MONO 2 // mono +#define BASS_DEVICE_3D 4 // enable 3D functionality +#define BASS_DEVICE_16BITS 8 // limit output to 16 bit +#define BASS_DEVICE_LATENCY 0x100 // calculate device latency (BASS_INFO struct) +#define BASS_DEVICE_CPSPEAKERS 0x400 // detect speakers via Windows control panel +#define BASS_DEVICE_SPEAKERS 0x800 // force enabling of speaker assignment +#define BASS_DEVICE_NOSPEAKER 0x1000 // ignore speaker arrangement +#define BASS_DEVICE_DMIX 0x2000 // use ALSA "dmix" plugin +#define BASS_DEVICE_FREQ 0x4000 // set device sample rate +#define BASS_DEVICE_STEREO 0x8000 // limit output to stereo +#define BASS_DEVICE_HOG 0x10000 // hog/exclusive mode +#define BASS_DEVICE_AUDIOTRACK 0x20000 // use AudioTrack output +#define BASS_DEVICE_DSOUND 0x40000 // use DirectSound output + +// DirectSound interfaces (for use with BASS_GetDSoundObject) +#define BASS_OBJECT_DS 1 // IDirectSound +#define BASS_OBJECT_DS3DL 2 // IDirectSound3DListener + +// Device info structure +typedef struct { +#if defined(_WIN32_WCE) || (WINAPI_FAMILY && WINAPI_FAMILY!=WINAPI_FAMILY_DESKTOP_APP) + const wchar_t *name; // description + const wchar_t *driver; // driver +#else + const char *name; // description + const char *driver; // driver +#endif + DWORD flags; +} BASS_DEVICEINFO; + +// BASS_DEVICEINFO flags +#define BASS_DEVICE_ENABLED 1 +#define BASS_DEVICE_DEFAULT 2 +#define BASS_DEVICE_INIT 4 +#define BASS_DEVICE_LOOPBACK 8 + +#define BASS_DEVICE_TYPE_MASK 0xff000000 +#define BASS_DEVICE_TYPE_NETWORK 0x01000000 +#define BASS_DEVICE_TYPE_SPEAKERS 0x02000000 +#define BASS_DEVICE_TYPE_LINE 0x03000000 +#define BASS_DEVICE_TYPE_HEADPHONES 0x04000000 +#define BASS_DEVICE_TYPE_MICROPHONE 0x05000000 +#define BASS_DEVICE_TYPE_HEADSET 0x06000000 +#define BASS_DEVICE_TYPE_HANDSET 0x07000000 +#define BASS_DEVICE_TYPE_DIGITAL 0x08000000 +#define BASS_DEVICE_TYPE_SPDIF 0x09000000 +#define BASS_DEVICE_TYPE_HDMI 0x0a000000 +#define BASS_DEVICE_TYPE_DISPLAYPORT 0x40000000 + +// BASS_GetDeviceInfo flags +#define BASS_DEVICES_AIRPLAY 0x1000000 + +typedef struct { + DWORD flags; // device capabilities (DSCAPS_xxx flags) + DWORD hwsize; // size of total device hardware memory + DWORD hwfree; // size of free device hardware memory + DWORD freesam; // number of free sample slots in the hardware + DWORD free3d; // number of free 3D sample slots in the hardware + DWORD minrate; // min sample rate supported by the hardware + DWORD maxrate; // max sample rate supported by the hardware + BOOL eax; // device supports EAX? (always FALSE if BASS_DEVICE_3D was not used) + DWORD minbuf; // recommended minimum buffer length in ms (requires BASS_DEVICE_LATENCY) + DWORD dsver; // DirectSound version + DWORD latency; // delay (in ms) before start of playback (requires BASS_DEVICE_LATENCY) + DWORD initflags; // BASS_Init "flags" parameter + DWORD speakers; // number of speakers available + DWORD freq; // current output rate +} BASS_INFO; + +// BASS_INFO flags (from DSOUND.H) +#define DSCAPS_CONTINUOUSRATE 0x00000010 // supports all sample rates between min/maxrate +#define DSCAPS_EMULDRIVER 0x00000020 // device does NOT have hardware DirectSound support +#define DSCAPS_CERTIFIED 0x00000040 // device driver has been certified by Microsoft +#define DSCAPS_SECONDARYMONO 0x00000100 // mono +#define DSCAPS_SECONDARYSTEREO 0x00000200 // stereo +#define DSCAPS_SECONDARY8BIT 0x00000400 // 8 bit +#define DSCAPS_SECONDARY16BIT 0x00000800 // 16 bit + +// Recording device info structure +typedef struct { + DWORD flags; // device capabilities (DSCCAPS_xxx flags) + DWORD formats; // supported standard formats (WAVE_FORMAT_xxx flags) + DWORD inputs; // number of inputs + BOOL singlein; // TRUE = only 1 input can be set at a time + DWORD freq; // current input rate +} BASS_RECORDINFO; + +// BASS_RECORDINFO flags (from DSOUND.H) +#define DSCCAPS_EMULDRIVER DSCAPS_EMULDRIVER // device does NOT have hardware DirectSound recording support +#define DSCCAPS_CERTIFIED DSCAPS_CERTIFIED // device driver has been certified by Microsoft + +// defines for formats field of BASS_RECORDINFO (from MMSYSTEM.H) +#ifndef WAVE_FORMAT_1M08 +#define WAVE_FORMAT_1M08 0x00000001 /* 11.025 kHz, Mono, 8-bit */ +#define WAVE_FORMAT_1S08 0x00000002 /* 11.025 kHz, Stereo, 8-bit */ +#define WAVE_FORMAT_1M16 0x00000004 /* 11.025 kHz, Mono, 16-bit */ +#define WAVE_FORMAT_1S16 0x00000008 /* 11.025 kHz, Stereo, 16-bit */ +#define WAVE_FORMAT_2M08 0x00000010 /* 22.05 kHz, Mono, 8-bit */ +#define WAVE_FORMAT_2S08 0x00000020 /* 22.05 kHz, Stereo, 8-bit */ +#define WAVE_FORMAT_2M16 0x00000040 /* 22.05 kHz, Mono, 16-bit */ +#define WAVE_FORMAT_2S16 0x00000080 /* 22.05 kHz, Stereo, 16-bit */ +#define WAVE_FORMAT_4M08 0x00000100 /* 44.1 kHz, Mono, 8-bit */ +#define WAVE_FORMAT_4S08 0x00000200 /* 44.1 kHz, Stereo, 8-bit */ +#define WAVE_FORMAT_4M16 0x00000400 /* 44.1 kHz, Mono, 16-bit */ +#define WAVE_FORMAT_4S16 0x00000800 /* 44.1 kHz, Stereo, 16-bit */ +#endif + +// Sample info structure +typedef struct { + DWORD freq; // default playback rate + float volume; // default volume (0-1) + float pan; // default pan (-1=left, 0=middle, 1=right) + DWORD flags; // BASS_SAMPLE_xxx flags + DWORD length; // length (in bytes) + DWORD max; // maximum simultaneous playbacks + DWORD origres; // original resolution + DWORD chans; // number of channels + DWORD mingap; // minimum gap (ms) between creating channels + DWORD mode3d; // BASS_3DMODE_xxx mode + float mindist; // minimum distance + float maxdist; // maximum distance + DWORD iangle; // angle of inside projection cone + DWORD oangle; // angle of outside projection cone + float outvol; // delta-volume outside the projection cone + DWORD vam; // voice allocation/management flags (BASS_VAM_xxx) + DWORD priority; // priority (0=lowest, 0xffffffff=highest) +} BASS_SAMPLE; + +#define BASS_SAMPLE_8BITS 1 // 8 bit +#define BASS_SAMPLE_FLOAT 256 // 32 bit floating-point +#define BASS_SAMPLE_MONO 2 // mono +#define BASS_SAMPLE_LOOP 4 // looped +#define BASS_SAMPLE_3D 8 // 3D functionality +#define BASS_SAMPLE_SOFTWARE 16 // not using hardware mixing +#define BASS_SAMPLE_MUTEMAX 32 // mute at max distance (3D only) +#define BASS_SAMPLE_VAM 64 // DX7 voice allocation & management +#define BASS_SAMPLE_FX 128 // old implementation of DX8 effects +#define BASS_SAMPLE_OVER_VOL 0x10000 // override lowest volume +#define BASS_SAMPLE_OVER_POS 0x20000 // override longest playing +#define BASS_SAMPLE_OVER_DIST 0x30000 // override furthest from listener (3D only) + +#define BASS_STREAM_PRESCAN 0x20000 // enable pin-point seeking/length (MP3/MP2/MP1) +#define BASS_STREAM_AUTOFREE 0x40000 // automatically free the stream when it stop/ends +#define BASS_STREAM_RESTRATE 0x80000 // restrict the download rate of internet file streams +#define BASS_STREAM_BLOCK 0x100000 // download/play internet file stream in small blocks +#define BASS_STREAM_DECODE 0x200000 // don't play the stream, only decode (BASS_ChannelGetData) +#define BASS_STREAM_STATUS 0x800000 // give server status info (HTTP/ICY tags) in DOWNLOADPROC + +#define BASS_MP3_IGNOREDELAY 0x200 // ignore LAME/Xing/VBRI/iTunes delay & padding info +#define BASS_MP3_SETPOS BASS_STREAM_PRESCAN + +#define BASS_MUSIC_FLOAT BASS_SAMPLE_FLOAT +#define BASS_MUSIC_MONO BASS_SAMPLE_MONO +#define BASS_MUSIC_LOOP BASS_SAMPLE_LOOP +#define BASS_MUSIC_3D BASS_SAMPLE_3D +#define BASS_MUSIC_FX BASS_SAMPLE_FX +#define BASS_MUSIC_AUTOFREE BASS_STREAM_AUTOFREE +#define BASS_MUSIC_DECODE BASS_STREAM_DECODE +#define BASS_MUSIC_PRESCAN BASS_STREAM_PRESCAN // calculate playback length +#define BASS_MUSIC_CALCLEN BASS_MUSIC_PRESCAN +#define BASS_MUSIC_RAMP 0x200 // normal ramping +#define BASS_MUSIC_RAMPS 0x400 // sensitive ramping +#define BASS_MUSIC_SURROUND 0x800 // surround sound +#define BASS_MUSIC_SURROUND2 0x1000 // surround sound (mode 2) +#define BASS_MUSIC_FT2PAN 0x2000 // apply FastTracker 2 panning to XM files +#define BASS_MUSIC_FT2MOD 0x2000 // play .MOD as FastTracker 2 does +#define BASS_MUSIC_PT1MOD 0x4000 // play .MOD as ProTracker 1 does +#define BASS_MUSIC_NONINTER 0x10000 // non-interpolated sample mixing +#define BASS_MUSIC_SINCINTER 0x800000 // sinc interpolated sample mixing +#define BASS_MUSIC_POSRESET 0x8000 // stop all notes when moving position +#define BASS_MUSIC_POSRESETEX 0x400000 // stop all notes and reset bmp/etc when moving position +#define BASS_MUSIC_STOPBACK 0x80000 // stop the music on a backwards jump effect +#define BASS_MUSIC_NOSAMPLE 0x100000 // don't load the samples + +// Speaker assignment flags +#define BASS_SPEAKER_FRONT 0x1000000 // front speakers +#define BASS_SPEAKER_REAR 0x2000000 // rear/side speakers +#define BASS_SPEAKER_CENLFE 0x3000000 // center & LFE speakers (5.1) +#define BASS_SPEAKER_REAR2 0x4000000 // rear center speakers (7.1) +#define BASS_SPEAKER_N(n) ((n)<<24) // n'th pair of speakers (max 15) +#define BASS_SPEAKER_LEFT 0x10000000 // modifier: left +#define BASS_SPEAKER_RIGHT 0x20000000 // modifier: right +#define BASS_SPEAKER_FRONTLEFT BASS_SPEAKER_FRONT|BASS_SPEAKER_LEFT +#define BASS_SPEAKER_FRONTRIGHT BASS_SPEAKER_FRONT|BASS_SPEAKER_RIGHT +#define BASS_SPEAKER_REARLEFT BASS_SPEAKER_REAR|BASS_SPEAKER_LEFT +#define BASS_SPEAKER_REARRIGHT BASS_SPEAKER_REAR|BASS_SPEAKER_RIGHT +#define BASS_SPEAKER_CENTER BASS_SPEAKER_CENLFE|BASS_SPEAKER_LEFT +#define BASS_SPEAKER_LFE BASS_SPEAKER_CENLFE|BASS_SPEAKER_RIGHT +#define BASS_SPEAKER_REAR2LEFT BASS_SPEAKER_REAR2|BASS_SPEAKER_LEFT +#define BASS_SPEAKER_REAR2RIGHT BASS_SPEAKER_REAR2|BASS_SPEAKER_RIGHT + +#define BASS_ASYNCFILE 0x40000000 +#define BASS_UNICODE 0x80000000 + +#define BASS_RECORD_PAUSE 0x8000 // start recording paused +#define BASS_RECORD_ECHOCANCEL 0x2000 +#define BASS_RECORD_AGC 0x4000 + +// DX7 voice allocation & management flags +#define BASS_VAM_HARDWARE 1 +#define BASS_VAM_SOFTWARE 2 +#define BASS_VAM_TERM_TIME 4 +#define BASS_VAM_TERM_DIST 8 +#define BASS_VAM_TERM_PRIO 16 + +// Channel info structure +typedef struct { + DWORD freq; // default playback rate + DWORD chans; // channels + DWORD flags; // BASS_SAMPLE/STREAM/MUSIC/SPEAKER flags + DWORD ctype; // type of channel + DWORD origres; // original resolution + HPLUGIN plugin; // plugin + HSAMPLE sample; // sample + const char *filename; // filename +} BASS_CHANNELINFO; + +#define BASS_ORIGRES_FLOAT 0x10000 + +// BASS_CHANNELINFO types +#define BASS_CTYPE_SAMPLE 1 +#define BASS_CTYPE_RECORD 2 +#define BASS_CTYPE_STREAM 0x10000 +#define BASS_CTYPE_STREAM_VORBIS 0x10002 +#define BASS_CTYPE_STREAM_OGG 0x10002 +#define BASS_CTYPE_STREAM_MP1 0x10003 +#define BASS_CTYPE_STREAM_MP2 0x10004 +#define BASS_CTYPE_STREAM_MP3 0x10005 +#define BASS_CTYPE_STREAM_AIFF 0x10006 +#define BASS_CTYPE_STREAM_CA 0x10007 +#define BASS_CTYPE_STREAM_MF 0x10008 +#define BASS_CTYPE_STREAM_AM 0x10009 +#define BASS_CTYPE_STREAM_DUMMY 0x18000 +#define BASS_CTYPE_STREAM_DEVICE 0x18001 +#define BASS_CTYPE_STREAM_WAV 0x40000 // WAVE flag, LOWORD=codec +#define BASS_CTYPE_STREAM_WAV_PCM 0x50001 +#define BASS_CTYPE_STREAM_WAV_FLOAT 0x50003 +#define BASS_CTYPE_MUSIC_MOD 0x20000 +#define BASS_CTYPE_MUSIC_MTM 0x20001 +#define BASS_CTYPE_MUSIC_S3M 0x20002 +#define BASS_CTYPE_MUSIC_XM 0x20003 +#define BASS_CTYPE_MUSIC_IT 0x20004 +#define BASS_CTYPE_MUSIC_MO3 0x00100 // MO3 flag + +typedef struct { + DWORD ctype; // channel type +#if defined(_WIN32_WCE) || (WINAPI_FAMILY && WINAPI_FAMILY!=WINAPI_FAMILY_DESKTOP_APP) + const wchar_t *name; // format description + const wchar_t *exts; // file extension filter (*.ext1;*.ext2;etc...) +#else + const char *name; // format description + const char *exts; // file extension filter (*.ext1;*.ext2;etc...) +#endif +} BASS_PLUGINFORM; + +typedef struct { + DWORD version; // version (same form as BASS_GetVersion) + DWORD formatc; // number of formats + const BASS_PLUGINFORM *formats; // the array of formats +} BASS_PLUGININFO; + +// 3D vector (for 3D positions/velocities/orientations) +typedef struct BASS_3DVECTOR { +#ifdef __cplusplus + BASS_3DVECTOR() {}; + BASS_3DVECTOR(float _x, float _y, float _z) : x(_x), y(_y), z(_z) {}; +#endif + float x; // +=right, -=left + float y; // +=up, -=down + float z; // +=front, -=behind +} BASS_3DVECTOR; + +// 3D channel modes +#define BASS_3DMODE_NORMAL 0 // normal 3D processing +#define BASS_3DMODE_RELATIVE 1 // position is relative to the listener +#define BASS_3DMODE_OFF 2 // no 3D processing + +// software 3D mixing algorithms (used with BASS_CONFIG_3DALGORITHM) +#define BASS_3DALG_DEFAULT 0 +#define BASS_3DALG_OFF 1 +#define BASS_3DALG_FULL 2 +#define BASS_3DALG_LIGHT 3 + +// EAX environments, use with BASS_SetEAXParameters +enum +{ + EAX_ENVIRONMENT_GENERIC, + EAX_ENVIRONMENT_PADDEDCELL, + EAX_ENVIRONMENT_ROOM, + EAX_ENVIRONMENT_BATHROOM, + EAX_ENVIRONMENT_LIVINGROOM, + EAX_ENVIRONMENT_STONEROOM, + EAX_ENVIRONMENT_AUDITORIUM, + EAX_ENVIRONMENT_CONCERTHALL, + EAX_ENVIRONMENT_CAVE, + EAX_ENVIRONMENT_ARENA, + EAX_ENVIRONMENT_HANGAR, + EAX_ENVIRONMENT_CARPETEDHALLWAY, + EAX_ENVIRONMENT_HALLWAY, + EAX_ENVIRONMENT_STONECORRIDOR, + EAX_ENVIRONMENT_ALLEY, + EAX_ENVIRONMENT_FOREST, + EAX_ENVIRONMENT_CITY, + EAX_ENVIRONMENT_MOUNTAINS, + EAX_ENVIRONMENT_QUARRY, + EAX_ENVIRONMENT_PLAIN, + EAX_ENVIRONMENT_PARKINGLOT, + EAX_ENVIRONMENT_SEWERPIPE, + EAX_ENVIRONMENT_UNDERWATER, + EAX_ENVIRONMENT_DRUGGED, + EAX_ENVIRONMENT_DIZZY, + EAX_ENVIRONMENT_PSYCHOTIC, + + EAX_ENVIRONMENT_COUNT // total number of environments +}; + +// EAX presets, usage: BASS_SetEAXParameters(EAX_PRESET_xxx) +#define EAX_PRESET_GENERIC EAX_ENVIRONMENT_GENERIC,0.5F,1.493F,0.5F +#define EAX_PRESET_PADDEDCELL EAX_ENVIRONMENT_PADDEDCELL,0.25F,0.1F,0.0F +#define EAX_PRESET_ROOM EAX_ENVIRONMENT_ROOM,0.417F,0.4F,0.666F +#define EAX_PRESET_BATHROOM EAX_ENVIRONMENT_BATHROOM,0.653F,1.499F,0.166F +#define EAX_PRESET_LIVINGROOM EAX_ENVIRONMENT_LIVINGROOM,0.208F,0.478F,0.0F +#define EAX_PRESET_STONEROOM EAX_ENVIRONMENT_STONEROOM,0.5F,2.309F,0.888F +#define EAX_PRESET_AUDITORIUM EAX_ENVIRONMENT_AUDITORIUM,0.403F,4.279F,0.5F +#define EAX_PRESET_CONCERTHALL EAX_ENVIRONMENT_CONCERTHALL,0.5F,3.961F,0.5F +#define EAX_PRESET_CAVE EAX_ENVIRONMENT_CAVE,0.5F,2.886F,1.304F +#define EAX_PRESET_ARENA EAX_ENVIRONMENT_ARENA,0.361F,7.284F,0.332F +#define EAX_PRESET_HANGAR EAX_ENVIRONMENT_HANGAR,0.5F,10.0F,0.3F +#define EAX_PRESET_CARPETEDHALLWAY EAX_ENVIRONMENT_CARPETEDHALLWAY,0.153F,0.259F,2.0F +#define EAX_PRESET_HALLWAY EAX_ENVIRONMENT_HALLWAY,0.361F,1.493F,0.0F +#define EAX_PRESET_STONECORRIDOR EAX_ENVIRONMENT_STONECORRIDOR,0.444F,2.697F,0.638F +#define EAX_PRESET_ALLEY EAX_ENVIRONMENT_ALLEY,0.25F,1.752F,0.776F +#define EAX_PRESET_FOREST EAX_ENVIRONMENT_FOREST,0.111F,3.145F,0.472F +#define EAX_PRESET_CITY EAX_ENVIRONMENT_CITY,0.111F,2.767F,0.224F +#define EAX_PRESET_MOUNTAINS EAX_ENVIRONMENT_MOUNTAINS,0.194F,7.841F,0.472F +#define EAX_PRESET_QUARRY EAX_ENVIRONMENT_QUARRY,1.0F,1.499F,0.5F +#define EAX_PRESET_PLAIN EAX_ENVIRONMENT_PLAIN,0.097F,2.767F,0.224F +#define EAX_PRESET_PARKINGLOT EAX_ENVIRONMENT_PARKINGLOT,0.208F,1.652F,1.5F +#define EAX_PRESET_SEWERPIPE EAX_ENVIRONMENT_SEWERPIPE,0.652F,2.886F,0.25F +#define EAX_PRESET_UNDERWATER EAX_ENVIRONMENT_UNDERWATER,1.0F,1.499F,0.0F +#define EAX_PRESET_DRUGGED EAX_ENVIRONMENT_DRUGGED,0.875F,8.392F,1.388F +#define EAX_PRESET_DIZZY EAX_ENVIRONMENT_DIZZY,0.139F,17.234F,0.666F +#define EAX_PRESET_PSYCHOTIC EAX_ENVIRONMENT_PSYCHOTIC,0.486F,7.563F,0.806F + +typedef DWORD (CALLBACK STREAMPROC)(HSTREAM handle, void *buffer, DWORD length, void *user); +/* User stream callback function. +handle : The stream that needs writing +buffer : Buffer to write the samples in +length : Number of bytes to write +user : The 'user' parameter value given when calling BASS_StreamCreate +RETURN : Number of bytes written. Set the BASS_STREAMPROC_END flag to end the stream. */ + +#define BASS_STREAMPROC_END 0x80000000 // end of user stream flag + +// special STREAMPROCs +#define STREAMPROC_DUMMY (STREAMPROC*)0 // "dummy" stream +#define STREAMPROC_PUSH (STREAMPROC*)-1 // push stream +#define STREAMPROC_DEVICE (STREAMPROC*)-2 // device mix stream +#define STREAMPROC_DEVICE_3D (STREAMPROC*)-3 // device 3D mix stream + +// BASS_StreamCreateFileUser file systems +#define STREAMFILE_NOBUFFER 0 +#define STREAMFILE_BUFFER 1 +#define STREAMFILE_BUFFERPUSH 2 + +// User file stream callback functions +typedef void (CALLBACK FILECLOSEPROC)(void *user); +typedef QWORD (CALLBACK FILELENPROC)(void *user); +typedef DWORD (CALLBACK FILEREADPROC)(void *buffer, DWORD length, void *user); +typedef BOOL (CALLBACK FILESEEKPROC)(QWORD offset, void *user); + +typedef struct { + FILECLOSEPROC *close; + FILELENPROC *length; + FILEREADPROC *read; + FILESEEKPROC *seek; +} BASS_FILEPROCS; + +// BASS_StreamPutFileData options +#define BASS_FILEDATA_END 0 // end & close the file + +// BASS_StreamGetFilePosition modes +#define BASS_FILEPOS_CURRENT 0 +#define BASS_FILEPOS_DECODE BASS_FILEPOS_CURRENT +#define BASS_FILEPOS_DOWNLOAD 1 +#define BASS_FILEPOS_END 2 +#define BASS_FILEPOS_START 3 +#define BASS_FILEPOS_CONNECTED 4 +#define BASS_FILEPOS_BUFFER 5 +#define BASS_FILEPOS_SOCKET 6 +#define BASS_FILEPOS_ASYNCBUF 7 +#define BASS_FILEPOS_SIZE 8 +#define BASS_FILEPOS_BUFFERING 9 + +typedef void (CALLBACK DOWNLOADPROC)(const void *buffer, DWORD length, void *user); +/* Internet stream download callback function. +buffer : Buffer containing the downloaded data... NULL=end of download +length : Number of bytes in the buffer +user : The 'user' parameter value given when calling BASS_StreamCreateURL */ + +// BASS_ChannelSetSync types +#define BASS_SYNC_POS 0 +#define BASS_SYNC_END 2 +#define BASS_SYNC_META 4 +#define BASS_SYNC_SLIDE 5 +#define BASS_SYNC_STALL 6 +#define BASS_SYNC_DOWNLOAD 7 +#define BASS_SYNC_FREE 8 +#define BASS_SYNC_SETPOS 11 +#define BASS_SYNC_MUSICPOS 10 +#define BASS_SYNC_MUSICINST 1 +#define BASS_SYNC_MUSICFX 3 +#define BASS_SYNC_OGG_CHANGE 12 +#define BASS_SYNC_DEV_FAIL 14 +#define BASS_SYNC_DEV_FORMAT 15 +#define BASS_SYNC_THREAD 0x20000000 // flag: call sync in other thread +#define BASS_SYNC_MIXTIME 0x40000000 // flag: sync at mixtime, else at playtime +#define BASS_SYNC_ONETIME 0x80000000 // flag: sync only once, else continuously + +typedef void (CALLBACK SYNCPROC)(HSYNC handle, DWORD channel, DWORD data, void *user); +/* Sync callback function. +handle : The sync that has occured +channel: Channel that the sync occured in +data : Additional data associated with the sync's occurance +user : The 'user' parameter given when calling BASS_ChannelSetSync */ + +typedef void (CALLBACK DSPPROC)(HDSP handle, DWORD channel, void *buffer, DWORD length, void *user); +/* DSP callback function. +handle : The DSP handle +channel: Channel that the DSP is being applied to +buffer : Buffer to apply the DSP to +length : Number of bytes in the buffer +user : The 'user' parameter given when calling BASS_ChannelSetDSP */ + +typedef BOOL (CALLBACK RECORDPROC)(HRECORD handle, const void *buffer, DWORD length, void *user); +/* Recording callback function. +handle : The recording handle +buffer : Buffer containing the recorded sample data +length : Number of bytes +user : The 'user' parameter value given when calling BASS_RecordStart +RETURN : TRUE = continue recording, FALSE = stop */ + +// BASS_ChannelIsActive return values +#define BASS_ACTIVE_STOPPED 0 +#define BASS_ACTIVE_PLAYING 1 +#define BASS_ACTIVE_STALLED 2 +#define BASS_ACTIVE_PAUSED 3 +#define BASS_ACTIVE_PAUSED_DEVICE 4 + +// Channel attributes +#define BASS_ATTRIB_FREQ 1 +#define BASS_ATTRIB_VOL 2 +#define BASS_ATTRIB_PAN 3 +#define BASS_ATTRIB_EAXMIX 4 +#define BASS_ATTRIB_NOBUFFER 5 +#define BASS_ATTRIB_VBR 6 +#define BASS_ATTRIB_CPU 7 +#define BASS_ATTRIB_SRC 8 +#define BASS_ATTRIB_NET_RESUME 9 +#define BASS_ATTRIB_SCANINFO 10 +#define BASS_ATTRIB_NORAMP 11 +#define BASS_ATTRIB_BITRATE 12 +#define BASS_ATTRIB_BUFFER 13 +#define BASS_ATTRIB_GRANULE 14 +#define BASS_ATTRIB_MUSIC_AMPLIFY 0x100 +#define BASS_ATTRIB_MUSIC_PANSEP 0x101 +#define BASS_ATTRIB_MUSIC_PSCALER 0x102 +#define BASS_ATTRIB_MUSIC_BPM 0x103 +#define BASS_ATTRIB_MUSIC_SPEED 0x104 +#define BASS_ATTRIB_MUSIC_VOL_GLOBAL 0x105 +#define BASS_ATTRIB_MUSIC_ACTIVE 0x106 +#define BASS_ATTRIB_MUSIC_VOL_CHAN 0x200 // + channel # +#define BASS_ATTRIB_MUSIC_VOL_INST 0x300 // + instrument # + +// BASS_ChannelSlideAttribute flags +#define BASS_SLIDE_LOG 0x1000000 + +// BASS_ChannelGetData flags +#define BASS_DATA_AVAILABLE 0 // query how much data is buffered +#define BASS_DATA_FIXED 0x20000000 // flag: return 8.24 fixed-point data +#define BASS_DATA_FLOAT 0x40000000 // flag: return floating-point sample data +#define BASS_DATA_FFT256 0x80000000 // 256 sample FFT +#define BASS_DATA_FFT512 0x80000001 // 512 FFT +#define BASS_DATA_FFT1024 0x80000002 // 1024 FFT +#define BASS_DATA_FFT2048 0x80000003 // 2048 FFT +#define BASS_DATA_FFT4096 0x80000004 // 4096 FFT +#define BASS_DATA_FFT8192 0x80000005 // 8192 FFT +#define BASS_DATA_FFT16384 0x80000006 // 16384 FFT +#define BASS_DATA_FFT32768 0x80000007 // 32768 FFT +#define BASS_DATA_FFT_INDIVIDUAL 0x10 // FFT flag: FFT for each channel, else all combined +#define BASS_DATA_FFT_NOWINDOW 0x20 // FFT flag: no Hanning window +#define BASS_DATA_FFT_REMOVEDC 0x40 // FFT flag: pre-remove DC bias +#define BASS_DATA_FFT_COMPLEX 0x80 // FFT flag: return complex data +#define BASS_DATA_FFT_NYQUIST 0x100 // FFT flag: return extra Nyquist value + +// BASS_ChannelGetLevelEx flags +#define BASS_LEVEL_MONO 1 +#define BASS_LEVEL_STEREO 2 +#define BASS_LEVEL_RMS 4 +#define BASS_LEVEL_VOLPAN 8 + +// BASS_ChannelGetTags types : what's returned +#define BASS_TAG_ID3 0 // ID3v1 tags : TAG_ID3 structure +#define BASS_TAG_ID3V2 1 // ID3v2 tags : variable length block +#define BASS_TAG_OGG 2 // OGG comments : series of null-terminated UTF-8 strings +#define BASS_TAG_HTTP 3 // HTTP headers : series of null-terminated ANSI strings +#define BASS_TAG_ICY 4 // ICY headers : series of null-terminated ANSI strings +#define BASS_TAG_META 5 // ICY metadata : ANSI string +#define BASS_TAG_APE 6 // APE tags : series of null-terminated UTF-8 strings +#define BASS_TAG_MP4 7 // MP4/iTunes metadata : series of null-terminated UTF-8 strings +#define BASS_TAG_WMA 8 // WMA tags : series of null-terminated UTF-8 strings +#define BASS_TAG_VENDOR 9 // OGG encoder : UTF-8 string +#define BASS_TAG_LYRICS3 10 // Lyric3v2 tag : ASCII string +#define BASS_TAG_CA_CODEC 11 // CoreAudio codec info : TAG_CA_CODEC structure +#define BASS_TAG_MF 13 // Media Foundation tags : series of null-terminated UTF-8 strings +#define BASS_TAG_WAVEFORMAT 14 // WAVE format : WAVEFORMATEEX structure +#define BASS_TAG_AM_MIME 15 // Android Media MIME type : ASCII string +#define BASS_TAG_AM_NAME 16 // Android Media codec name : ASCII string +#define BASS_TAG_RIFF_INFO 0x100 // RIFF "INFO" tags : series of null-terminated ANSI strings +#define BASS_TAG_RIFF_BEXT 0x101 // RIFF/BWF "bext" tags : TAG_BEXT structure +#define BASS_TAG_RIFF_CART 0x102 // RIFF/BWF "cart" tags : TAG_CART structure +#define BASS_TAG_RIFF_DISP 0x103 // RIFF "DISP" text tag : ANSI string +#define BASS_TAG_RIFF_CUE 0x104 // RIFF "cue " chunk : TAG_CUE structure +#define BASS_TAG_RIFF_SMPL 0x105 // RIFF "smpl" chunk : TAG_SMPL structure +#define BASS_TAG_APE_BINARY 0x1000 // + index #, binary APE tag : TAG_APE_BINARY structure +#define BASS_TAG_MUSIC_NAME 0x10000 // MOD music name : ANSI string +#define BASS_TAG_MUSIC_MESSAGE 0x10001 // MOD message : ANSI string +#define BASS_TAG_MUSIC_ORDERS 0x10002 // MOD order list : BYTE array of pattern numbers +#define BASS_TAG_MUSIC_AUTH 0x10003 // MOD author : UTF-8 string +#define BASS_TAG_MUSIC_INST 0x10100 // + instrument #, MOD instrument name : ANSI string +#define BASS_TAG_MUSIC_SAMPLE 0x10300 // + sample #, MOD sample name : ANSI string + +// ID3v1 tag structure +typedef struct { + char id[3]; + char title[30]; + char artist[30]; + char album[30]; + char year[4]; + char comment[30]; + BYTE genre; +} TAG_ID3; + +// Binary APE tag structure +typedef struct { + const char *key; + const void *data; + DWORD length; +} TAG_APE_BINARY; + +// BWF "bext" tag structure +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable:4200) +#endif +#pragma pack(push,1) +typedef struct { + char Description[256]; // description + char Originator[32]; // name of the originator + char OriginatorReference[32]; // reference of the originator + char OriginationDate[10]; // date of creation (yyyy-mm-dd) + char OriginationTime[8]; // time of creation (hh-mm-ss) + QWORD TimeReference; // first sample count since midnight (little-endian) + WORD Version; // BWF version (little-endian) + BYTE UMID[64]; // SMPTE UMID + BYTE Reserved[190]; +#if defined(__GNUC__) && __GNUC__<3 + char CodingHistory[0]; // history +#elif 1 // change to 0 if compiler fails the following line + char CodingHistory[]; // history +#else + char CodingHistory[1]; // history +#endif +} TAG_BEXT; +#pragma pack(pop) + +// BWF "cart" tag structures +typedef struct +{ + DWORD dwUsage; // FOURCC timer usage ID + DWORD dwValue; // timer value in samples from head +} TAG_CART_TIMER; + +typedef struct +{ + char Version[4]; // version of the data structure + char Title[64]; // title of cart audio sequence + char Artist[64]; // artist or creator name + char CutID[64]; // cut number identification + char ClientID[64]; // client identification + char Category[64]; // category ID, PSA, NEWS, etc + char Classification[64]; // classification or auxiliary key + char OutCue[64]; // out cue text + char StartDate[10]; // yyyy-mm-dd + char StartTime[8]; // hh:mm:ss + char EndDate[10]; // yyyy-mm-dd + char EndTime[8]; // hh:mm:ss + char ProducerAppID[64]; // name of vendor or application + char ProducerAppVersion[64]; // version of producer application + char UserDef[64]; // user defined text + DWORD dwLevelReference; // sample value for 0 dB reference + TAG_CART_TIMER PostTimer[8]; // 8 time markers after head + char Reserved[276]; + char URL[1024]; // uniform resource locator +#if defined(__GNUC__) && __GNUC__<3 + char TagText[0]; // free form text for scripts or tags +#elif 1 // change to 0 if compiler fails the following line + char TagText[]; // free form text for scripts or tags +#else + char TagText[1]; // free form text for scripts or tags +#endif +} TAG_CART; + +// RIFF "cue " tag structures +typedef struct +{ + DWORD dwName; + DWORD dwPosition; + DWORD fccChunk; + DWORD dwChunkStart; + DWORD dwBlockStart; + DWORD dwSampleOffset; +} TAG_CUE_POINT; + +typedef struct +{ + DWORD dwCuePoints; +#if defined(__GNUC__) && __GNUC__<3 + TAG_CUE_POINT CuePoints[0]; +#elif 1 // change to 0 if compiler fails the following line + TAG_CUE_POINT CuePoints[]; +#else + TAG_CUE_POINT CuePoints[1]; +#endif +} TAG_CUE; + +// RIFF "smpl" tag structures +typedef struct +{ + DWORD dwIdentifier; + DWORD dwType; + DWORD dwStart; + DWORD dwEnd; + DWORD dwFraction; + DWORD dwPlayCount; +} TAG_SMPL_LOOP; + +typedef struct +{ + DWORD dwManufacturer; + DWORD dwProduct; + DWORD dwSamplePeriod; + DWORD dwMIDIUnityNote; + DWORD dwMIDIPitchFraction; + DWORD dwSMPTEFormat; + DWORD dwSMPTEOffset; + DWORD cSampleLoops; + DWORD cbSamplerData; +#if defined(__GNUC__) && __GNUC__<3 + TAG_SMPL_LOOP SampleLoops[0]; +#elif 1 // change to 0 if compiler fails the following line + TAG_SMPL_LOOP SampleLoops[]; +#else + TAG_SMPL_LOOP SampleLoops[1]; +#endif +} TAG_SMPL; +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +// CoreAudio codec info structure +typedef struct { + DWORD ftype; // file format + DWORD atype; // audio format + const char *name; // description +} TAG_CA_CODEC; + +#ifndef _WAVEFORMATEX_ +#define _WAVEFORMATEX_ +#pragma pack(push,1) +typedef struct tWAVEFORMATEX +{ + WORD wFormatTag; + WORD nChannels; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; + WORD wBitsPerSample; + WORD cbSize; +} WAVEFORMATEX, *PWAVEFORMATEX, *LPWAVEFORMATEX; +typedef const WAVEFORMATEX *LPCWAVEFORMATEX; +#pragma pack(pop) +#endif + +// BASS_ChannelGetLength/GetPosition/SetPosition modes +#define BASS_POS_BYTE 0 // byte position +#define BASS_POS_MUSIC_ORDER 1 // order.row position, MAKELONG(order,row) +#define BASS_POS_OGG 3 // OGG bitstream number +#define BASS_POS_RESET 0x2000000 // flag: reset user file buffers +#define BASS_POS_RELATIVE 0x4000000 // flag: seek relative to the current position +#define BASS_POS_INEXACT 0x8000000 // flag: allow seeking to inexact position +#define BASS_POS_DECODE 0x10000000 // flag: get the decoding (not playing) position +#define BASS_POS_DECODETO 0x20000000 // flag: decode to the position instead of seeking +#define BASS_POS_SCAN 0x40000000 // flag: scan to the position + +// BASS_ChannelSetDevice/GetDevice option +#define BASS_NODEVICE 0x20000 + +// BASS_RecordSetInput flags +#define BASS_INPUT_OFF 0x10000 +#define BASS_INPUT_ON 0x20000 + +#define BASS_INPUT_TYPE_MASK 0xff000000 +#define BASS_INPUT_TYPE_UNDEF 0x00000000 +#define BASS_INPUT_TYPE_DIGITAL 0x01000000 +#define BASS_INPUT_TYPE_LINE 0x02000000 +#define BASS_INPUT_TYPE_MIC 0x03000000 +#define BASS_INPUT_TYPE_SYNTH 0x04000000 +#define BASS_INPUT_TYPE_CD 0x05000000 +#define BASS_INPUT_TYPE_PHONE 0x06000000 +#define BASS_INPUT_TYPE_SPEAKER 0x07000000 +#define BASS_INPUT_TYPE_WAVE 0x08000000 +#define BASS_INPUT_TYPE_AUX 0x09000000 +#define BASS_INPUT_TYPE_ANALOG 0x0a000000 + +// BASS_ChannelSetFX effect types +#define BASS_FX_DX8_CHORUS 0 +#define BASS_FX_DX8_COMPRESSOR 1 +#define BASS_FX_DX8_DISTORTION 2 +#define BASS_FX_DX8_ECHO 3 +#define BASS_FX_DX8_FLANGER 4 +#define BASS_FX_DX8_GARGLE 5 +#define BASS_FX_DX8_I3DL2REVERB 6 +#define BASS_FX_DX8_PARAMEQ 7 +#define BASS_FX_DX8_REVERB 8 +#define BASS_FX_VOLUME 9 + +typedef struct { + float fWetDryMix; + float fDepth; + float fFeedback; + float fFrequency; + DWORD lWaveform; // 0=triangle, 1=sine + float fDelay; + DWORD lPhase; // BASS_DX8_PHASE_xxx +} BASS_DX8_CHORUS; + +typedef struct { + float fGain; + float fAttack; + float fRelease; + float fThreshold; + float fRatio; + float fPredelay; +} BASS_DX8_COMPRESSOR; + +typedef struct { + float fGain; + float fEdge; + float fPostEQCenterFrequency; + float fPostEQBandwidth; + float fPreLowpassCutoff; +} BASS_DX8_DISTORTION; + +typedef struct { + float fWetDryMix; + float fFeedback; + float fLeftDelay; + float fRightDelay; + BOOL lPanDelay; +} BASS_DX8_ECHO; + +typedef struct { + float fWetDryMix; + float fDepth; + float fFeedback; + float fFrequency; + DWORD lWaveform; // 0=triangle, 1=sine + float fDelay; + DWORD lPhase; // BASS_DX8_PHASE_xxx +} BASS_DX8_FLANGER; + +typedef struct { + DWORD dwRateHz; // Rate of modulation in hz + DWORD dwWaveShape; // 0=triangle, 1=square +} BASS_DX8_GARGLE; + +typedef struct { + int lRoom; // [-10000, 0] default: -1000 mB + int lRoomHF; // [-10000, 0] default: 0 mB + float flRoomRolloffFactor; // [0.0, 10.0] default: 0.0 + float flDecayTime; // [0.1, 20.0] default: 1.49s + float flDecayHFRatio; // [0.1, 2.0] default: 0.83 + int lReflections; // [-10000, 1000] default: -2602 mB + float flReflectionsDelay; // [0.0, 0.3] default: 0.007 s + int lReverb; // [-10000, 2000] default: 200 mB + float flReverbDelay; // [0.0, 0.1] default: 0.011 s + float flDiffusion; // [0.0, 100.0] default: 100.0 % + float flDensity; // [0.0, 100.0] default: 100.0 % + float flHFReference; // [20.0, 20000.0] default: 5000.0 Hz +} BASS_DX8_I3DL2REVERB; + +typedef struct { + float fCenter; + float fBandwidth; + float fGain; +} BASS_DX8_PARAMEQ; + +typedef struct { + float fInGain; // [-96.0,0.0] default: 0.0 dB + float fReverbMix; // [-96.0,0.0] default: 0.0 db + float fReverbTime; // [0.001,3000.0] default: 1000.0 ms + float fHighFreqRTRatio; // [0.001,0.999] default: 0.001 +} BASS_DX8_REVERB; + +#define BASS_DX8_PHASE_NEG_180 0 +#define BASS_DX8_PHASE_NEG_90 1 +#define BASS_DX8_PHASE_ZERO 2 +#define BASS_DX8_PHASE_90 3 +#define BASS_DX8_PHASE_180 4 + +typedef struct { + float fTarget; + float fCurrent; + float fTime; + DWORD lCurve; +} BASS_FX_VOLUME_PARAM; + +typedef void (CALLBACK IOSNOTIFYPROC)(DWORD status); +/* iOS notification callback function. +status : The notification (BASS_IOSNOTIFY_xxx) */ + +#define BASS_IOSNOTIFY_INTERRUPT 1 // interruption started +#define BASS_IOSNOTIFY_INTERRUPT_END 2 // interruption ended + +BOOL BASSDEF(BASS_SetConfig)(DWORD option, DWORD value); +DWORD BASSDEF(BASS_GetConfig)(DWORD option); +BOOL BASSDEF(BASS_SetConfigPtr)(DWORD option, const void *value); +void *BASSDEF(BASS_GetConfigPtr)(DWORD option); +DWORD BASSDEF(BASS_GetVersion)(); +int BASSDEF(BASS_ErrorGetCode)(); +BOOL BASSDEF(BASS_GetDeviceInfo)(DWORD device, BASS_DEVICEINFO *info); +#if defined(_WIN32) && !defined(_WIN32_WCE) && !(WINAPI_FAMILY && WINAPI_FAMILY!=WINAPI_FAMILY_DESKTOP_APP) +BOOL BASSDEF(BASS_Init)(int device, DWORD freq, DWORD flags, HWND win, const GUID *dsguid); +#else +BOOL BASSDEF(BASS_Init)(int device, DWORD freq, DWORD flags, void *win, void *dsguid); +#endif +BOOL BASSDEF(BASS_SetDevice)(DWORD device); +DWORD BASSDEF(BASS_GetDevice)(); +BOOL BASSDEF(BASS_Free)(); +#if defined(_WIN32) && !defined(_WIN32_WCE) && !(WINAPI_FAMILY && WINAPI_FAMILY!=WINAPI_FAMILY_DESKTOP_APP) +void *BASSDEF(BASS_GetDSoundObject)(DWORD object); +#endif +BOOL BASSDEF(BASS_GetInfo)(BASS_INFO *info); +BOOL BASSDEF(BASS_Update)(DWORD length); +float BASSDEF(BASS_GetCPU)(); +BOOL BASSDEF(BASS_Start)(); +BOOL BASSDEF(BASS_Stop)(); +BOOL BASSDEF(BASS_Pause)(); +BOOL BASSDEF(BASS_IsStarted)(); +BOOL BASSDEF(BASS_SetVolume)(float volume); +float BASSDEF(BASS_GetVolume)(); + +HPLUGIN BASSDEF(BASS_PluginLoad)(const char *file, DWORD flags); +BOOL BASSDEF(BASS_PluginFree)(HPLUGIN handle); +const BASS_PLUGININFO *BASSDEF(BASS_PluginGetInfo)(HPLUGIN handle); + +BOOL BASSDEF(BASS_Set3DFactors)(float distf, float rollf, float doppf); +BOOL BASSDEF(BASS_Get3DFactors)(float *distf, float *rollf, float *doppf); +BOOL BASSDEF(BASS_Set3DPosition)(const BASS_3DVECTOR *pos, const BASS_3DVECTOR *vel, const BASS_3DVECTOR *front, const BASS_3DVECTOR *top); +BOOL BASSDEF(BASS_Get3DPosition)(BASS_3DVECTOR *pos, BASS_3DVECTOR *vel, BASS_3DVECTOR *front, BASS_3DVECTOR *top); +void BASSDEF(BASS_Apply3D)(); +#if defined(_WIN32) && !defined(_WIN32_WCE) && !(WINAPI_FAMILY && WINAPI_FAMILY!=WINAPI_FAMILY_DESKTOP_APP) +BOOL BASSDEF(BASS_SetEAXParameters)(int env, float vol, float decay, float damp); +BOOL BASSDEF(BASS_GetEAXParameters)(DWORD *env, float *vol, float *decay, float *damp); +#endif + +HMUSIC BASSDEF(BASS_MusicLoad)(BOOL mem, const void *file, QWORD offset, DWORD length, DWORD flags, DWORD freq); +BOOL BASSDEF(BASS_MusicFree)(HMUSIC handle); + +HSAMPLE BASSDEF(BASS_SampleLoad)(BOOL mem, const void *file, QWORD offset, DWORD length, DWORD max, DWORD flags); +HSAMPLE BASSDEF(BASS_SampleCreate)(DWORD length, DWORD freq, DWORD chans, DWORD max, DWORD flags); +BOOL BASSDEF(BASS_SampleFree)(HSAMPLE handle); +BOOL BASSDEF(BASS_SampleSetData)(HSAMPLE handle, const void *buffer); +BOOL BASSDEF(BASS_SampleGetData)(HSAMPLE handle, void *buffer); +BOOL BASSDEF(BASS_SampleGetInfo)(HSAMPLE handle, BASS_SAMPLE *info); +BOOL BASSDEF(BASS_SampleSetInfo)(HSAMPLE handle, const BASS_SAMPLE *info); +HCHANNEL BASSDEF(BASS_SampleGetChannel)(HSAMPLE handle, BOOL onlynew); +DWORD BASSDEF(BASS_SampleGetChannels)(HSAMPLE handle, HCHANNEL *channels); +BOOL BASSDEF(BASS_SampleStop)(HSAMPLE handle); + +HSTREAM BASSDEF(BASS_StreamCreate)(DWORD freq, DWORD chans, DWORD flags, STREAMPROC *proc, void *user); +HSTREAM BASSDEF(BASS_StreamCreateFile)(BOOL mem, const void *file, QWORD offset, QWORD length, DWORD flags); +HSTREAM BASSDEF(BASS_StreamCreateURL)(const char *url, DWORD offset, DWORD flags, DOWNLOADPROC *proc, void *user); +HSTREAM BASSDEF(BASS_StreamCreateFileUser)(DWORD system, DWORD flags, const BASS_FILEPROCS *proc, void *user); +BOOL BASSDEF(BASS_StreamFree)(HSTREAM handle); +QWORD BASSDEF(BASS_StreamGetFilePosition)(HSTREAM handle, DWORD mode); +DWORD BASSDEF(BASS_StreamPutData)(HSTREAM handle, const void *buffer, DWORD length); +DWORD BASSDEF(BASS_StreamPutFileData)(HSTREAM handle, const void *buffer, DWORD length); + +BOOL BASSDEF(BASS_RecordGetDeviceInfo)(DWORD device, BASS_DEVICEINFO *info); +BOOL BASSDEF(BASS_RecordInit)(int device); +BOOL BASSDEF(BASS_RecordSetDevice)(DWORD device); +DWORD BASSDEF(BASS_RecordGetDevice)(); +BOOL BASSDEF(BASS_RecordFree)(); +BOOL BASSDEF(BASS_RecordGetInfo)(BASS_RECORDINFO *info); +const char *BASSDEF(BASS_RecordGetInputName)(int input); +BOOL BASSDEF(BASS_RecordSetInput)(int input, DWORD flags, float volume); +DWORD BASSDEF(BASS_RecordGetInput)(int input, float *volume); +HRECORD BASSDEF(BASS_RecordStart)(DWORD freq, DWORD chans, DWORD flags, RECORDPROC *proc, void *user); + +double BASSDEF(BASS_ChannelBytes2Seconds)(DWORD handle, QWORD pos); +QWORD BASSDEF(BASS_ChannelSeconds2Bytes)(DWORD handle, double pos); +DWORD BASSDEF(BASS_ChannelGetDevice)(DWORD handle); +BOOL BASSDEF(BASS_ChannelSetDevice)(DWORD handle, DWORD device); +DWORD BASSDEF(BASS_ChannelIsActive)(DWORD handle); +BOOL BASSDEF(BASS_ChannelGetInfo)(DWORD handle, BASS_CHANNELINFO *info); +const char *BASSDEF(BASS_ChannelGetTags)(DWORD handle, DWORD tags); +DWORD BASSDEF(BASS_ChannelFlags)(DWORD handle, DWORD flags, DWORD mask); +BOOL BASSDEF(BASS_ChannelUpdate)(DWORD handle, DWORD length); +BOOL BASSDEF(BASS_ChannelLock)(DWORD handle, BOOL lock); +BOOL BASSDEF(BASS_ChannelPlay)(DWORD handle, BOOL restart); +BOOL BASSDEF(BASS_ChannelStop)(DWORD handle); +BOOL BASSDEF(BASS_ChannelPause)(DWORD handle); +BOOL BASSDEF(BASS_ChannelSetAttribute)(DWORD handle, DWORD attrib, float value); +BOOL BASSDEF(BASS_ChannelGetAttribute)(DWORD handle, DWORD attrib, float *value); +BOOL BASSDEF(BASS_ChannelSlideAttribute)(DWORD handle, DWORD attrib, float value, DWORD time); +BOOL BASSDEF(BASS_ChannelIsSliding)(DWORD handle, DWORD attrib); +BOOL BASSDEF(BASS_ChannelSetAttributeEx)(DWORD handle, DWORD attrib, void *value, DWORD size); +DWORD BASSDEF(BASS_ChannelGetAttributeEx)(DWORD handle, DWORD attrib, void *value, DWORD size); +BOOL BASSDEF(BASS_ChannelSet3DAttributes)(DWORD handle, int mode, float min, float max, int iangle, int oangle, float outvol); +BOOL BASSDEF(BASS_ChannelGet3DAttributes)(DWORD handle, DWORD *mode, float *min, float *max, DWORD *iangle, DWORD *oangle, float *outvol); +BOOL BASSDEF(BASS_ChannelSet3DPosition)(DWORD handle, const BASS_3DVECTOR *pos, const BASS_3DVECTOR *orient, const BASS_3DVECTOR *vel); +BOOL BASSDEF(BASS_ChannelGet3DPosition)(DWORD handle, BASS_3DVECTOR *pos, BASS_3DVECTOR *orient, BASS_3DVECTOR *vel); +QWORD BASSDEF(BASS_ChannelGetLength)(DWORD handle, DWORD mode); +BOOL BASSDEF(BASS_ChannelSetPosition)(DWORD handle, QWORD pos, DWORD mode); +QWORD BASSDEF(BASS_ChannelGetPosition)(DWORD handle, DWORD mode); +DWORD BASSDEF(BASS_ChannelGetLevel)(DWORD handle); +BOOL BASSDEF(BASS_ChannelGetLevelEx)(DWORD handle, float *levels, float length, DWORD flags); +DWORD BASSDEF(BASS_ChannelGetData)(DWORD handle, void *buffer, DWORD length); +HSYNC BASSDEF(BASS_ChannelSetSync)(DWORD handle, DWORD type, QWORD param, SYNCPROC *proc, void *user); +BOOL BASSDEF(BASS_ChannelRemoveSync)(DWORD handle, HSYNC sync); +HDSP BASSDEF(BASS_ChannelSetDSP)(DWORD handle, DSPPROC *proc, void *user, int priority); +BOOL BASSDEF(BASS_ChannelRemoveDSP)(DWORD handle, HDSP dsp); +BOOL BASSDEF(BASS_ChannelSetLink)(DWORD handle, DWORD chan); +BOOL BASSDEF(BASS_ChannelRemoveLink)(DWORD handle, DWORD chan); +HFX BASSDEF(BASS_ChannelSetFX)(DWORD handle, DWORD type, int priority); +BOOL BASSDEF(BASS_ChannelRemoveFX)(DWORD handle, HFX fx); + +BOOL BASSDEF(BASS_FXSetParameters)(HFX handle, const void *params); +BOOL BASSDEF(BASS_FXGetParameters)(HFX handle, void *params); +BOOL BASSDEF(BASS_FXReset)(HFX handle); +BOOL BASSDEF(BASS_FXSetPriority)(HFX handle, int priority); + +#ifdef __cplusplus +} + +#if defined(_WIN32) && !defined(NOBASSOVERLOADS) +static inline HPLUGIN BASS_PluginLoad(const WCHAR *file, DWORD flags) +{ + return BASS_PluginLoad((const char*)file, flags|BASS_UNICODE); +} + +static inline HMUSIC BASS_MusicLoad(BOOL mem, const WCHAR *file, QWORD offset, DWORD length, DWORD flags, DWORD freq) +{ + return BASS_MusicLoad(mem, (const void*)file, offset, length, flags|BASS_UNICODE, freq); +} + +static inline HSAMPLE BASS_SampleLoad(BOOL mem, const WCHAR *file, QWORD offset, DWORD length, DWORD max, DWORD flags) +{ + return BASS_SampleLoad(mem, (const void*)file, offset, length, max, flags|BASS_UNICODE); +} + +static inline HSTREAM BASS_StreamCreateFile(BOOL mem, const WCHAR *file, QWORD offset, QWORD length, DWORD flags) +{ + return BASS_StreamCreateFile(mem, (const void*)file, offset, length, flags|BASS_UNICODE); +} + +static inline HSTREAM BASS_StreamCreateURL(const WCHAR *url, DWORD offset, DWORD flags, DOWNLOADPROC *proc, void *user) +{ + return BASS_StreamCreateURL((const char*)url, offset, flags|BASS_UNICODE, proc, user); +} + +static inline BOOL BASS_SetConfigPtr(DWORD option, const WCHAR *value) +{ + return BASS_SetConfigPtr(option|BASS_UNICODE, (const void*)value); +} +#endif +#endif + +#endif diff --git a/bass-sys/bass24/c/bass.lib b/bass-sys/win/bass24/c/bass.lib similarity index 100% rename from bass-sys/bass24/c/bass.lib rename to bass-sys/win/bass24/c/bass.lib diff --git a/bass-sys/bass24/c/bass.sln b/bass-sys/win/bass24/c/bass.sln similarity index 100% rename from bass-sys/bass24/c/bass.sln rename to bass-sys/win/bass24/c/bass.sln diff --git a/bass-sys/bass24/c/basstest/basstest.c b/bass-sys/win/bass24/c/basstest/basstest.c similarity index 100% rename from bass-sys/bass24/c/basstest/basstest.c rename to bass-sys/win/bass24/c/basstest/basstest.c diff --git a/bass-sys/bass24/c/basstest/basstest.dsp b/bass-sys/win/bass24/c/basstest/basstest.dsp similarity index 100% rename from bass-sys/bass24/c/basstest/basstest.dsp rename to bass-sys/win/bass24/c/basstest/basstest.dsp diff --git a/bass-sys/bass24/c/basstest/basstest.rc b/bass-sys/win/bass24/c/basstest/basstest.rc similarity index 100% rename from bass-sys/bass24/c/basstest/basstest.rc rename to bass-sys/win/bass24/c/basstest/basstest.rc diff --git a/bass-sys/bass24/c/basstest/basstest.vcproj b/bass-sys/win/bass24/c/basstest/basstest.vcproj similarity index 100% rename from bass-sys/bass24/c/basstest/basstest.vcproj rename to bass-sys/win/bass24/c/basstest/basstest.vcproj diff --git a/bass-sys/bass24/c/basstest/basstest.vcxproj b/bass-sys/win/bass24/c/basstest/basstest.vcxproj similarity index 100% rename from bass-sys/bass24/c/basstest/basstest.vcxproj rename to bass-sys/win/bass24/c/basstest/basstest.vcxproj diff --git a/bass-sys/bass24/c/basstest/makefile b/bass-sys/win/bass24/c/basstest/makefile similarity index 100% rename from bass-sys/bass24/c/basstest/makefile rename to bass-sys/win/bass24/c/basstest/makefile diff --git a/bass-sys/bass24/c/bin/3dtest.exe b/bass-sys/win/bass24/c/bin/3dtest.exe similarity index 100% rename from bass-sys/bass24/c/bin/3dtest.exe rename to bass-sys/win/bass24/c/bin/3dtest.exe diff --git a/bass-sys/bass24/c/bin/basstest.exe b/bass-sys/win/bass24/c/bin/basstest.exe similarity index 100% rename from bass-sys/bass24/c/bin/basstest.exe rename to bass-sys/win/bass24/c/bin/basstest.exe diff --git a/bass-sys/bass24/c/bin/contest.exe b/bass-sys/win/bass24/c/bin/contest.exe similarity index 100% rename from bass-sys/bass24/c/bin/contest.exe rename to bass-sys/win/bass24/c/bin/contest.exe diff --git a/bass-sys/bass24/c/bin/custloop.exe b/bass-sys/win/bass24/c/bin/custloop.exe similarity index 100% rename from bass-sys/bass24/c/bin/custloop.exe rename to bass-sys/win/bass24/c/bin/custloop.exe diff --git a/bass-sys/bass24/c/bin/devlist.exe b/bass-sys/win/bass24/c/bin/devlist.exe similarity index 100% rename from bass-sys/bass24/c/bin/devlist.exe rename to bass-sys/win/bass24/c/bin/devlist.exe diff --git a/bass-sys/bass24/c/bin/dsptest.exe b/bass-sys/win/bass24/c/bin/dsptest.exe similarity index 100% rename from bass-sys/bass24/c/bin/dsptest.exe rename to bass-sys/win/bass24/c/bin/dsptest.exe diff --git a/bass-sys/bass24/c/bin/fxtest.exe b/bass-sys/win/bass24/c/bin/fxtest.exe similarity index 100% rename from bass-sys/bass24/c/bin/fxtest.exe rename to bass-sys/win/bass24/c/bin/fxtest.exe diff --git a/bass-sys/bass24/c/bin/livefx.exe b/bass-sys/win/bass24/c/bin/livefx.exe similarity index 100% rename from bass-sys/bass24/c/bin/livefx.exe rename to bass-sys/win/bass24/c/bin/livefx.exe diff --git a/bass-sys/bass24/c/bin/livespec.exe b/bass-sys/win/bass24/c/bin/livespec.exe similarity index 100% rename from bass-sys/bass24/c/bin/livespec.exe rename to bass-sys/win/bass24/c/bin/livespec.exe diff --git a/bass-sys/bass24/c/bin/modtest.exe b/bass-sys/win/bass24/c/bin/modtest.exe similarity index 100% rename from bass-sys/bass24/c/bin/modtest.exe rename to bass-sys/win/bass24/c/bin/modtest.exe diff --git a/bass-sys/bass24/c/bin/multi.exe b/bass-sys/win/bass24/c/bin/multi.exe similarity index 100% rename from bass-sys/bass24/c/bin/multi.exe rename to bass-sys/win/bass24/c/bin/multi.exe diff --git a/bass-sys/bass24/c/bin/netradio.exe b/bass-sys/win/bass24/c/bin/netradio.exe similarity index 100% rename from bass-sys/bass24/c/bin/netradio.exe rename to bass-sys/win/bass24/c/bin/netradio.exe diff --git a/bass-sys/bass24/c/bin/plugins.exe b/bass-sys/win/bass24/c/bin/plugins.exe similarity index 100% rename from bass-sys/bass24/c/bin/plugins.exe rename to bass-sys/win/bass24/c/bin/plugins.exe diff --git a/bass-sys/bass24/c/bin/rectest.exe b/bass-sys/win/bass24/c/bin/rectest.exe similarity index 100% rename from bass-sys/bass24/c/bin/rectest.exe rename to bass-sys/win/bass24/c/bin/rectest.exe diff --git a/bass-sys/bass24/c/bin/speakers.exe b/bass-sys/win/bass24/c/bin/speakers.exe similarity index 100% rename from bass-sys/bass24/c/bin/speakers.exe rename to bass-sys/win/bass24/c/bin/speakers.exe diff --git a/bass-sys/bass24/c/bin/spectrum.exe b/bass-sys/win/bass24/c/bin/spectrum.exe similarity index 100% rename from bass-sys/bass24/c/bin/spectrum.exe rename to bass-sys/win/bass24/c/bin/spectrum.exe diff --git a/bass-sys/bass24/c/bin/synth.exe b/bass-sys/win/bass24/c/bin/synth.exe similarity index 100% rename from bass-sys/bass24/c/bin/synth.exe rename to bass-sys/win/bass24/c/bin/synth.exe diff --git a/bass-sys/bass24/c/bin/writewav.exe b/bass-sys/win/bass24/c/bin/writewav.exe similarity index 100% rename from bass-sys/bass24/c/bin/writewav.exe rename to bass-sys/win/bass24/c/bin/writewav.exe diff --git a/bass-sys/win/bass24/c/contest/contest.c b/bass-sys/win/bass24/c/contest/contest.c new file mode 100644 index 0000000..8052807 --- /dev/null +++ b/bass-sys/win/bass24/c/contest/contest.c @@ -0,0 +1,163 @@ +/* + BASS simple console player + Copyright (c) 1999-2019 Un4seen Developments Ltd. +*/ + +#include +#include +#include "bass.h" + +#ifdef _WIN32 // Windows +#include +#else // OSX/Linux +#include +#include +#include +#include + +#define Sleep(x) usleep(x*1000) + +int _kbhit() +{ + int r; + fd_set rfds; + struct timeval tv = { 0 }; + struct termios term, oterm; + tcgetattr(0, &oterm); + memcpy(&term, &oterm, sizeof(term)); + cfmakeraw(&term); + tcsetattr(0, TCSANOW, &term); + FD_ZERO(&rfds); + FD_SET(0, &rfds); + r = select(1, &rfds, NULL, NULL, &tv); + tcsetattr(0, TCSANOW, &oterm); + return r; +} +#endif + +// display error messages +void Error(const char *text) +{ + printf("Error(%d): %s\n", BASS_ErrorGetCode(), text); + BASS_Free(); + exit(0); +} + +void ListDevices() +{ + BASS_DEVICEINFO di; + int a; + for (a = 0; BASS_GetDeviceInfo(a, &di); a++) { + if (di.flags & BASS_DEVICE_ENABLED) // enabled output device + printf("dev %d: %s\n", a, di.name); + } +} + +void main(int argc, char **argv) +{ + DWORD chan, act, time, level; + BOOL ismod; + QWORD pos; + int a, filep, device = -1; + + printf("BASS simple console player\n" + "--------------------------\n"); + + // check the correct BASS was loaded + if (HIWORD(BASS_GetVersion()) != BASSVERSION) { + printf("An incorrect version of BASS was loaded"); + return; + } + + for (filep = 1; filep < argc; filep++) { + if (!strcmp(argv[filep], "-l")) { + ListDevices(); + return; + } else if (!strcmp(argv[filep], "-d") && filep + 1 < argc) device = atoi(argv[++filep]); + else break; + } + if (filep == argc) { + printf("\tusage: contest [-l] [-d #] \n" + "\t-l = list devices\n" + "\t-d = device number\n"); + return; + } + + BASS_SetConfig(BASS_CONFIG_NET_PLAYLIST, 1); // enable playlist processing + BASS_SetConfig(BASS_CONFIG_NET_PREBUF_WAIT, 0); // disable BASS_StreamCreateURL pre-buffering + + // initialize output device + if (!BASS_Init(device, 44100, 0, 0, NULL)) + Error("Can't initialize device"); + + // try streaming the file/url + if ((chan = BASS_StreamCreateFile(FALSE, argv[filep], 0, 0, BASS_SAMPLE_LOOP)) + || (chan = BASS_StreamCreateURL(argv[filep], 0, BASS_SAMPLE_LOOP, 0, 0))) { + pos = BASS_ChannelGetLength(chan, BASS_POS_BYTE); + if (BASS_StreamGetFilePosition(chan, BASS_FILEPOS_DOWNLOAD) != -1) { + // streaming from the internet + if (pos != -1) + printf("streaming internet file [%lld bytes]", pos); + else + printf("streaming internet file"); + } else + printf("streaming file [%lld bytes]", pos); + ismod = FALSE; + } else { + // try loading the MOD (with looping, sensitive ramping, and calculate the duration) + if (!(chan = BASS_MusicLoad(FALSE, argv[filep], 0, 0, BASS_SAMPLE_LOOP | BASS_MUSIC_RAMPS | BASS_MUSIC_PRESCAN, 1))) + // not a MOD either + Error("Can't play the file"); + { // count channels + float dummy; + for (a = 0; BASS_ChannelGetAttribute(chan, BASS_ATTRIB_MUSIC_VOL_CHAN + a, &dummy); a++); + } + printf("playing MOD music \"%s\" [%u chans, %u orders]", + BASS_ChannelGetTags(chan, BASS_TAG_MUSIC_NAME), a, (DWORD)BASS_ChannelGetLength(chan, BASS_POS_MUSIC_ORDER)); + pos = BASS_ChannelGetLength(chan, BASS_POS_BYTE); + ismod = TRUE; + } + + // display the time length + if (pos != -1) { + time = (DWORD)BASS_ChannelBytes2Seconds(chan, pos); + printf(" %u:%02u\n", time / 60, time % 60); + } else // no time length available + printf("\n"); + + BASS_ChannelPlay(chan, FALSE); + + while (!_kbhit() && (act = BASS_ChannelIsActive(chan))) { + // display some stuff and wait a bit + level = BASS_ChannelGetLevel(chan); + pos = BASS_ChannelGetPosition(chan, BASS_POS_BYTE); + time = BASS_ChannelBytes2Seconds(chan, pos); + printf("pos %09llu", pos); + if (ismod) { + pos = BASS_ChannelGetPosition(chan, BASS_POS_MUSIC_ORDER); + printf(" (%03u:%03u)", LOWORD(pos), HIWORD(pos)); + } + printf(" - %u:%02u - L ", time / 60, time % 60); + if (act == BASS_ACTIVE_STALLED) { // playback has stalled + printf("- buffering: %3u%% -", 100 - (DWORD)BASS_StreamGetFilePosition(chan, BASS_FILEPOS_BUFFERING)); + } else { + for (a = 27204; a > 200; a = a * 2 / 3) putchar(LOWORD(level) >= a ? '*' : '-'); + putchar(' '); + for (a = 210; a < 32768; a = a * 3 / 2) putchar(HIWORD(level) >= a ? '*' : '-'); + } + printf(" R - cpu %.2f%% \r", BASS_GetCPU()); + fflush(stdout); + Sleep(50); + } + printf(" \r"); + + // wind the frequency down... + BASS_ChannelSlideAttribute(chan, BASS_ATTRIB_FREQ, 1000, 500); + Sleep(400); + // ...and fade-out to avoid a "click" + BASS_ChannelSlideAttribute(chan, BASS_ATTRIB_VOL | BASS_SLIDE_LOG, -1, 100); + // wait for slide to finish (could use BASS_SYNC_SLIDE instead) + while (BASS_ChannelIsSliding(chan, 0)) Sleep(1); + + BASS_Free(); +} diff --git a/bass-sys/bass24/c/contest/contest.dsp b/bass-sys/win/bass24/c/contest/contest.dsp similarity index 100% rename from bass-sys/bass24/c/contest/contest.dsp rename to bass-sys/win/bass24/c/contest/contest.dsp diff --git a/bass-sys/bass24/c/contest/contest.vcproj b/bass-sys/win/bass24/c/contest/contest.vcproj similarity index 100% rename from bass-sys/bass24/c/contest/contest.vcproj rename to bass-sys/win/bass24/c/contest/contest.vcproj diff --git a/bass-sys/bass24/c/contest/contest.vcxproj b/bass-sys/win/bass24/c/contest/contest.vcxproj similarity index 100% rename from bass-sys/bass24/c/contest/contest.vcxproj rename to bass-sys/win/bass24/c/contest/contest.vcxproj diff --git a/bass-sys/bass24/c/contest/makefile b/bass-sys/win/bass24/c/contest/makefile similarity index 100% rename from bass-sys/bass24/c/contest/makefile rename to bass-sys/win/bass24/c/contest/makefile diff --git a/bass-sys/bass24/c/custloop/custloop.c b/bass-sys/win/bass24/c/custloop/custloop.c similarity index 100% rename from bass-sys/bass24/c/custloop/custloop.c rename to bass-sys/win/bass24/c/custloop/custloop.c diff --git a/bass-sys/bass24/c/custloop/custloop.dsp b/bass-sys/win/bass24/c/custloop/custloop.dsp similarity index 100% rename from bass-sys/bass24/c/custloop/custloop.dsp rename to bass-sys/win/bass24/c/custloop/custloop.dsp diff --git a/bass-sys/bass24/c/custloop/custloop.vcproj b/bass-sys/win/bass24/c/custloop/custloop.vcproj similarity index 100% rename from bass-sys/bass24/c/custloop/custloop.vcproj rename to bass-sys/win/bass24/c/custloop/custloop.vcproj diff --git a/bass-sys/bass24/c/custloop/custloop.vcxproj b/bass-sys/win/bass24/c/custloop/custloop.vcxproj similarity index 100% rename from bass-sys/bass24/c/custloop/custloop.vcxproj rename to bass-sys/win/bass24/c/custloop/custloop.vcxproj diff --git a/bass-sys/bass24/c/custloop/makefile b/bass-sys/win/bass24/c/custloop/makefile similarity index 100% rename from bass-sys/bass24/c/custloop/makefile rename to bass-sys/win/bass24/c/custloop/makefile diff --git a/bass-sys/win/bass24/c/devlist/devlist.c b/bass-sys/win/bass24/c/devlist/devlist.c new file mode 100644 index 0000000..c09f8e8 --- /dev/null +++ b/bass-sys/win/bass24/c/devlist/devlist.c @@ -0,0 +1,76 @@ +/* + BASS device list example + Copyright (c) 2014-2019 Un4seen Developments Ltd. +*/ + +#include +#include "bass.h" + +void DisplayDeviceInfo(BASS_DEVICEINFO *di) +{ +#if 0//def _WIN32 + const char *path = di->driver + strlen(di->driver) + 1; + if (path[0]) + printf("%s\n\tdriver: %s\n\tpath: %s\n\ttype: ", di->name, di->driver, path); + else +#endif + printf("%s\n\tdriver: %s\n\ttype: ", di->name, di->driver); + switch (di->flags & BASS_DEVICE_TYPE_MASK) { + case BASS_DEVICE_TYPE_NETWORK: + printf("Remote Network"); + break; + case BASS_DEVICE_TYPE_SPEAKERS: + printf("Speakers"); + break; + case BASS_DEVICE_TYPE_LINE: + printf("Line"); + break; + case BASS_DEVICE_TYPE_HEADPHONES: + printf("Headphones"); + break; + case BASS_DEVICE_TYPE_MICROPHONE: + printf("Microphone"); + break; + case BASS_DEVICE_TYPE_HEADSET: + printf("Headset"); + break; + case BASS_DEVICE_TYPE_HANDSET: + printf("Handset"); + break; + case BASS_DEVICE_TYPE_DIGITAL: + printf("Digital"); + break; + case BASS_DEVICE_TYPE_SPDIF: + printf("SPDIF"); + break; + case BASS_DEVICE_TYPE_HDMI: + printf("HDMI"); + break; + case BASS_DEVICE_TYPE_DISPLAYPORT: + printf("DisplayPort"); + break; + default: + printf("Unknown"); + } + printf("\n\tflags:"); + if (di->flags & BASS_DEVICE_LOOPBACK) printf(" loopback"); + if (di->flags & BASS_DEVICE_ENABLED) printf(" enabled"); + if (di->flags & BASS_DEVICE_DEFAULT) printf(" default"); + printf(" (%x)\n", di->flags); +} + +void main() +{ + BASS_DEVICEINFO di; + int a; + printf("Output Devices\n"); + for (a = 1; BASS_GetDeviceInfo(a, &di); a++) { + printf("%d: ", a); + DisplayDeviceInfo(&di); + } + printf("\nInput Devices\n"); + for (a = 0; BASS_RecordGetDeviceInfo(a, &di); a++) { + printf("%d: ", a); + DisplayDeviceInfo(&di); + } +} diff --git a/bass-sys/bass24/c/devlist/devlist.dsp b/bass-sys/win/bass24/c/devlist/devlist.dsp similarity index 100% rename from bass-sys/bass24/c/devlist/devlist.dsp rename to bass-sys/win/bass24/c/devlist/devlist.dsp diff --git a/bass-sys/bass24/c/devlist/devlist.vcproj b/bass-sys/win/bass24/c/devlist/devlist.vcproj similarity index 100% rename from bass-sys/bass24/c/devlist/devlist.vcproj rename to bass-sys/win/bass24/c/devlist/devlist.vcproj diff --git a/bass-sys/bass24/c/devlist/devlist.vcxproj b/bass-sys/win/bass24/c/devlist/devlist.vcxproj similarity index 100% rename from bass-sys/bass24/c/devlist/devlist.vcxproj rename to bass-sys/win/bass24/c/devlist/devlist.vcxproj diff --git a/bass-sys/bass24/c/devlist/makefile b/bass-sys/win/bass24/c/devlist/makefile similarity index 100% rename from bass-sys/bass24/c/devlist/makefile rename to bass-sys/win/bass24/c/devlist/makefile diff --git a/bass-sys/bass24/c/dsptest/dsptest.c b/bass-sys/win/bass24/c/dsptest/dsptest.c similarity index 100% rename from bass-sys/bass24/c/dsptest/dsptest.c rename to bass-sys/win/bass24/c/dsptest/dsptest.c diff --git a/bass-sys/bass24/c/dsptest/dsptest.dsp b/bass-sys/win/bass24/c/dsptest/dsptest.dsp similarity index 100% rename from bass-sys/bass24/c/dsptest/dsptest.dsp rename to bass-sys/win/bass24/c/dsptest/dsptest.dsp diff --git a/bass-sys/bass24/c/dsptest/dsptest.rc b/bass-sys/win/bass24/c/dsptest/dsptest.rc similarity index 100% rename from bass-sys/bass24/c/dsptest/dsptest.rc rename to bass-sys/win/bass24/c/dsptest/dsptest.rc diff --git a/bass-sys/bass24/c/dsptest/dsptest.vcproj b/bass-sys/win/bass24/c/dsptest/dsptest.vcproj similarity index 100% rename from bass-sys/bass24/c/dsptest/dsptest.vcproj rename to bass-sys/win/bass24/c/dsptest/dsptest.vcproj diff --git a/bass-sys/bass24/c/dsptest/dsptest.vcxproj b/bass-sys/win/bass24/c/dsptest/dsptest.vcxproj similarity index 100% rename from bass-sys/bass24/c/dsptest/dsptest.vcxproj rename to bass-sys/win/bass24/c/dsptest/dsptest.vcxproj diff --git a/bass-sys/bass24/c/dsptest/makefile b/bass-sys/win/bass24/c/dsptest/makefile similarity index 100% rename from bass-sys/bass24/c/dsptest/makefile rename to bass-sys/win/bass24/c/dsptest/makefile diff --git a/bass-sys/bass24/c/fxtest/fxtest.c b/bass-sys/win/bass24/c/fxtest/fxtest.c similarity index 100% rename from bass-sys/bass24/c/fxtest/fxtest.c rename to bass-sys/win/bass24/c/fxtest/fxtest.c diff --git a/bass-sys/bass24/c/fxtest/fxtest.dsp b/bass-sys/win/bass24/c/fxtest/fxtest.dsp similarity index 100% rename from bass-sys/bass24/c/fxtest/fxtest.dsp rename to bass-sys/win/bass24/c/fxtest/fxtest.dsp diff --git a/bass-sys/bass24/c/fxtest/fxtest.rc b/bass-sys/win/bass24/c/fxtest/fxtest.rc similarity index 100% rename from bass-sys/bass24/c/fxtest/fxtest.rc rename to bass-sys/win/bass24/c/fxtest/fxtest.rc diff --git a/bass-sys/bass24/c/fxtest/fxtest.vcproj b/bass-sys/win/bass24/c/fxtest/fxtest.vcproj similarity index 100% rename from bass-sys/bass24/c/fxtest/fxtest.vcproj rename to bass-sys/win/bass24/c/fxtest/fxtest.vcproj diff --git a/bass-sys/bass24/c/fxtest/fxtest.vcxproj b/bass-sys/win/bass24/c/fxtest/fxtest.vcxproj similarity index 100% rename from bass-sys/bass24/c/fxtest/fxtest.vcxproj rename to bass-sys/win/bass24/c/fxtest/fxtest.vcxproj diff --git a/bass-sys/bass24/c/fxtest/makefile b/bass-sys/win/bass24/c/fxtest/makefile similarity index 100% rename from bass-sys/bass24/c/fxtest/makefile rename to bass-sys/win/bass24/c/fxtest/makefile diff --git a/bass-sys/bass24/c/livefx/livefx.c b/bass-sys/win/bass24/c/livefx/livefx.c similarity index 100% rename from bass-sys/bass24/c/livefx/livefx.c rename to bass-sys/win/bass24/c/livefx/livefx.c diff --git a/bass-sys/bass24/c/livefx/livefx.dsp b/bass-sys/win/bass24/c/livefx/livefx.dsp similarity index 100% rename from bass-sys/bass24/c/livefx/livefx.dsp rename to bass-sys/win/bass24/c/livefx/livefx.dsp diff --git a/bass-sys/bass24/c/livefx/livefx.rc b/bass-sys/win/bass24/c/livefx/livefx.rc similarity index 100% rename from bass-sys/bass24/c/livefx/livefx.rc rename to bass-sys/win/bass24/c/livefx/livefx.rc diff --git a/bass-sys/bass24/c/livefx/livefx.vcproj b/bass-sys/win/bass24/c/livefx/livefx.vcproj similarity index 100% rename from bass-sys/bass24/c/livefx/livefx.vcproj rename to bass-sys/win/bass24/c/livefx/livefx.vcproj diff --git a/bass-sys/bass24/c/livefx/livefx.vcxproj b/bass-sys/win/bass24/c/livefx/livefx.vcxproj similarity index 100% rename from bass-sys/bass24/c/livefx/livefx.vcxproj rename to bass-sys/win/bass24/c/livefx/livefx.vcxproj diff --git a/bass-sys/bass24/c/livefx/makefile b/bass-sys/win/bass24/c/livefx/makefile similarity index 100% rename from bass-sys/bass24/c/livefx/makefile rename to bass-sys/win/bass24/c/livefx/makefile diff --git a/bass-sys/bass24/c/livespec/livespec.c b/bass-sys/win/bass24/c/livespec/livespec.c similarity index 100% rename from bass-sys/bass24/c/livespec/livespec.c rename to bass-sys/win/bass24/c/livespec/livespec.c diff --git a/bass-sys/bass24/c/livespec/livespec.dsp b/bass-sys/win/bass24/c/livespec/livespec.dsp similarity index 100% rename from bass-sys/bass24/c/livespec/livespec.dsp rename to bass-sys/win/bass24/c/livespec/livespec.dsp diff --git a/bass-sys/bass24/c/livespec/livespec.vcproj b/bass-sys/win/bass24/c/livespec/livespec.vcproj similarity index 100% rename from bass-sys/bass24/c/livespec/livespec.vcproj rename to bass-sys/win/bass24/c/livespec/livespec.vcproj diff --git a/bass-sys/bass24/c/livespec/livespec.vcxproj b/bass-sys/win/bass24/c/livespec/livespec.vcxproj similarity index 100% rename from bass-sys/bass24/c/livespec/livespec.vcxproj rename to bass-sys/win/bass24/c/livespec/livespec.vcxproj diff --git a/bass-sys/bass24/c/livespec/makefile b/bass-sys/win/bass24/c/livespec/makefile similarity index 100% rename from bass-sys/bass24/c/livespec/makefile rename to bass-sys/win/bass24/c/livespec/makefile diff --git a/bass-sys/bass24/c/makefile b/bass-sys/win/bass24/c/makefile similarity index 100% rename from bass-sys/bass24/c/makefile rename to bass-sys/win/bass24/c/makefile diff --git a/bass-sys/bass24/c/makefile.in b/bass-sys/win/bass24/c/makefile.in similarity index 100% rename from bass-sys/bass24/c/makefile.in rename to bass-sys/win/bass24/c/makefile.in diff --git a/bass-sys/bass24/c/modtest/makefile b/bass-sys/win/bass24/c/modtest/makefile similarity index 100% rename from bass-sys/bass24/c/modtest/makefile rename to bass-sys/win/bass24/c/modtest/makefile diff --git a/bass-sys/bass24/c/modtest/modtest.c b/bass-sys/win/bass24/c/modtest/modtest.c similarity index 100% rename from bass-sys/bass24/c/modtest/modtest.c rename to bass-sys/win/bass24/c/modtest/modtest.c diff --git a/bass-sys/bass24/c/modtest/modtest.dsp b/bass-sys/win/bass24/c/modtest/modtest.dsp similarity index 100% rename from bass-sys/bass24/c/modtest/modtest.dsp rename to bass-sys/win/bass24/c/modtest/modtest.dsp diff --git a/bass-sys/bass24/c/modtest/modtest.rc b/bass-sys/win/bass24/c/modtest/modtest.rc similarity index 100% rename from bass-sys/bass24/c/modtest/modtest.rc rename to bass-sys/win/bass24/c/modtest/modtest.rc diff --git a/bass-sys/bass24/c/modtest/modtest.vcproj b/bass-sys/win/bass24/c/modtest/modtest.vcproj similarity index 100% rename from bass-sys/bass24/c/modtest/modtest.vcproj rename to bass-sys/win/bass24/c/modtest/modtest.vcproj diff --git a/bass-sys/bass24/c/modtest/modtest.vcxproj b/bass-sys/win/bass24/c/modtest/modtest.vcxproj similarity index 100% rename from bass-sys/bass24/c/modtest/modtest.vcxproj rename to bass-sys/win/bass24/c/modtest/modtest.vcxproj diff --git a/bass-sys/bass24/c/multi/makefile b/bass-sys/win/bass24/c/multi/makefile similarity index 100% rename from bass-sys/bass24/c/multi/makefile rename to bass-sys/win/bass24/c/multi/makefile diff --git a/bass-sys/bass24/c/multi/multi.c b/bass-sys/win/bass24/c/multi/multi.c similarity index 100% rename from bass-sys/bass24/c/multi/multi.c rename to bass-sys/win/bass24/c/multi/multi.c diff --git a/bass-sys/bass24/c/multi/multi.dsp b/bass-sys/win/bass24/c/multi/multi.dsp similarity index 100% rename from bass-sys/bass24/c/multi/multi.dsp rename to bass-sys/win/bass24/c/multi/multi.dsp diff --git a/bass-sys/bass24/c/multi/multi.rc b/bass-sys/win/bass24/c/multi/multi.rc similarity index 100% rename from bass-sys/bass24/c/multi/multi.rc rename to bass-sys/win/bass24/c/multi/multi.rc diff --git a/bass-sys/bass24/c/multi/multi.vcproj b/bass-sys/win/bass24/c/multi/multi.vcproj similarity index 100% rename from bass-sys/bass24/c/multi/multi.vcproj rename to bass-sys/win/bass24/c/multi/multi.vcproj diff --git a/bass-sys/bass24/c/multi/multi.vcxproj b/bass-sys/win/bass24/c/multi/multi.vcxproj similarity index 100% rename from bass-sys/bass24/c/multi/multi.vcxproj rename to bass-sys/win/bass24/c/multi/multi.vcxproj diff --git a/bass-sys/bass24/c/netradio/makefile b/bass-sys/win/bass24/c/netradio/makefile similarity index 100% rename from bass-sys/bass24/c/netradio/makefile rename to bass-sys/win/bass24/c/netradio/makefile diff --git a/bass-sys/bass24/c/netradio/netradio.c b/bass-sys/win/bass24/c/netradio/netradio.c similarity index 100% rename from bass-sys/bass24/c/netradio/netradio.c rename to bass-sys/win/bass24/c/netradio/netradio.c diff --git a/bass-sys/bass24/c/netradio/netradio.dsp b/bass-sys/win/bass24/c/netradio/netradio.dsp similarity index 100% rename from bass-sys/bass24/c/netradio/netradio.dsp rename to bass-sys/win/bass24/c/netradio/netradio.dsp diff --git a/bass-sys/bass24/c/netradio/netradio.rc b/bass-sys/win/bass24/c/netradio/netradio.rc similarity index 100% rename from bass-sys/bass24/c/netradio/netradio.rc rename to bass-sys/win/bass24/c/netradio/netradio.rc diff --git a/bass-sys/bass24/c/netradio/netradio.vcproj b/bass-sys/win/bass24/c/netradio/netradio.vcproj similarity index 100% rename from bass-sys/bass24/c/netradio/netradio.vcproj rename to bass-sys/win/bass24/c/netradio/netradio.vcproj diff --git a/bass-sys/bass24/c/netradio/netradio.vcxproj b/bass-sys/win/bass24/c/netradio/netradio.vcxproj similarity index 100% rename from bass-sys/bass24/c/netradio/netradio.vcxproj rename to bass-sys/win/bass24/c/netradio/netradio.vcxproj diff --git a/bass-sys/bass24/c/plugins/makefile b/bass-sys/win/bass24/c/plugins/makefile similarity index 100% rename from bass-sys/bass24/c/plugins/makefile rename to bass-sys/win/bass24/c/plugins/makefile diff --git a/bass-sys/bass24/c/plugins/plugins.c b/bass-sys/win/bass24/c/plugins/plugins.c similarity index 100% rename from bass-sys/bass24/c/plugins/plugins.c rename to bass-sys/win/bass24/c/plugins/plugins.c diff --git a/bass-sys/bass24/c/plugins/plugins.dsp b/bass-sys/win/bass24/c/plugins/plugins.dsp similarity index 100% rename from bass-sys/bass24/c/plugins/plugins.dsp rename to bass-sys/win/bass24/c/plugins/plugins.dsp diff --git a/bass-sys/bass24/c/plugins/plugins.rc b/bass-sys/win/bass24/c/plugins/plugins.rc similarity index 100% rename from bass-sys/bass24/c/plugins/plugins.rc rename to bass-sys/win/bass24/c/plugins/plugins.rc diff --git a/bass-sys/bass24/c/plugins/plugins.vcproj b/bass-sys/win/bass24/c/plugins/plugins.vcproj similarity index 100% rename from bass-sys/bass24/c/plugins/plugins.vcproj rename to bass-sys/win/bass24/c/plugins/plugins.vcproj diff --git a/bass-sys/bass24/c/plugins/plugins.vcxproj b/bass-sys/win/bass24/c/plugins/plugins.vcxproj similarity index 100% rename from bass-sys/bass24/c/plugins/plugins.vcxproj rename to bass-sys/win/bass24/c/plugins/plugins.vcxproj diff --git a/bass-sys/bass24/c/rectest/makefile b/bass-sys/win/bass24/c/rectest/makefile similarity index 100% rename from bass-sys/bass24/c/rectest/makefile rename to bass-sys/win/bass24/c/rectest/makefile diff --git a/bass-sys/bass24/c/rectest/rectest.c b/bass-sys/win/bass24/c/rectest/rectest.c similarity index 100% rename from bass-sys/bass24/c/rectest/rectest.c rename to bass-sys/win/bass24/c/rectest/rectest.c diff --git a/bass-sys/bass24/c/rectest/rectest.dsp b/bass-sys/win/bass24/c/rectest/rectest.dsp similarity index 100% rename from bass-sys/bass24/c/rectest/rectest.dsp rename to bass-sys/win/bass24/c/rectest/rectest.dsp diff --git a/bass-sys/bass24/c/rectest/rectest.rc b/bass-sys/win/bass24/c/rectest/rectest.rc similarity index 100% rename from bass-sys/bass24/c/rectest/rectest.rc rename to bass-sys/win/bass24/c/rectest/rectest.rc diff --git a/bass-sys/bass24/c/rectest/rectest.vcproj b/bass-sys/win/bass24/c/rectest/rectest.vcproj similarity index 100% rename from bass-sys/bass24/c/rectest/rectest.vcproj rename to bass-sys/win/bass24/c/rectest/rectest.vcproj diff --git a/bass-sys/bass24/c/rectest/rectest.vcxproj b/bass-sys/win/bass24/c/rectest/rectest.vcxproj similarity index 100% rename from bass-sys/bass24/c/rectest/rectest.vcxproj rename to bass-sys/win/bass24/c/rectest/rectest.vcxproj diff --git a/bass-sys/bass24/c/speakers/makefile b/bass-sys/win/bass24/c/speakers/makefile similarity index 100% rename from bass-sys/bass24/c/speakers/makefile rename to bass-sys/win/bass24/c/speakers/makefile diff --git a/bass-sys/bass24/c/speakers/speakers.c b/bass-sys/win/bass24/c/speakers/speakers.c similarity index 100% rename from bass-sys/bass24/c/speakers/speakers.c rename to bass-sys/win/bass24/c/speakers/speakers.c diff --git a/bass-sys/bass24/c/speakers/speakers.dsp b/bass-sys/win/bass24/c/speakers/speakers.dsp similarity index 100% rename from bass-sys/bass24/c/speakers/speakers.dsp rename to bass-sys/win/bass24/c/speakers/speakers.dsp diff --git a/bass-sys/bass24/c/speakers/speakers.rc b/bass-sys/win/bass24/c/speakers/speakers.rc similarity index 100% rename from bass-sys/bass24/c/speakers/speakers.rc rename to bass-sys/win/bass24/c/speakers/speakers.rc diff --git a/bass-sys/bass24/c/speakers/speakers.vcproj b/bass-sys/win/bass24/c/speakers/speakers.vcproj similarity index 100% rename from bass-sys/bass24/c/speakers/speakers.vcproj rename to bass-sys/win/bass24/c/speakers/speakers.vcproj diff --git a/bass-sys/bass24/c/speakers/speakers.vcxproj b/bass-sys/win/bass24/c/speakers/speakers.vcxproj similarity index 100% rename from bass-sys/bass24/c/speakers/speakers.vcxproj rename to bass-sys/win/bass24/c/speakers/speakers.vcxproj diff --git a/bass-sys/bass24/c/spectrum/makefile b/bass-sys/win/bass24/c/spectrum/makefile similarity index 100% rename from bass-sys/bass24/c/spectrum/makefile rename to bass-sys/win/bass24/c/spectrum/makefile diff --git a/bass-sys/bass24/c/spectrum/spectrum.c b/bass-sys/win/bass24/c/spectrum/spectrum.c similarity index 100% rename from bass-sys/bass24/c/spectrum/spectrum.c rename to bass-sys/win/bass24/c/spectrum/spectrum.c diff --git a/bass-sys/bass24/c/spectrum/spectrum.dsp b/bass-sys/win/bass24/c/spectrum/spectrum.dsp similarity index 100% rename from bass-sys/bass24/c/spectrum/spectrum.dsp rename to bass-sys/win/bass24/c/spectrum/spectrum.dsp diff --git a/bass-sys/bass24/c/spectrum/spectrum.vcproj b/bass-sys/win/bass24/c/spectrum/spectrum.vcproj similarity index 100% rename from bass-sys/bass24/c/spectrum/spectrum.vcproj rename to bass-sys/win/bass24/c/spectrum/spectrum.vcproj diff --git a/bass-sys/bass24/c/spectrum/spectrum.vcxproj b/bass-sys/win/bass24/c/spectrum/spectrum.vcxproj similarity index 100% rename from bass-sys/bass24/c/spectrum/spectrum.vcxproj rename to bass-sys/win/bass24/c/spectrum/spectrum.vcxproj diff --git a/bass-sys/bass24/c/synth/makefile b/bass-sys/win/bass24/c/synth/makefile similarity index 100% rename from bass-sys/bass24/c/synth/makefile rename to bass-sys/win/bass24/c/synth/makefile diff --git a/bass-sys/bass24/c/synth/synth.c b/bass-sys/win/bass24/c/synth/synth.c similarity index 100% rename from bass-sys/bass24/c/synth/synth.c rename to bass-sys/win/bass24/c/synth/synth.c diff --git a/bass-sys/bass24/c/synth/synth.dsp b/bass-sys/win/bass24/c/synth/synth.dsp similarity index 100% rename from bass-sys/bass24/c/synth/synth.dsp rename to bass-sys/win/bass24/c/synth/synth.dsp diff --git a/bass-sys/bass24/c/synth/synth.vcproj b/bass-sys/win/bass24/c/synth/synth.vcproj similarity index 100% rename from bass-sys/bass24/c/synth/synth.vcproj rename to bass-sys/win/bass24/c/synth/synth.vcproj diff --git a/bass-sys/bass24/c/synth/synth.vcxproj b/bass-sys/win/bass24/c/synth/synth.vcxproj similarity index 100% rename from bass-sys/bass24/c/synth/synth.vcxproj rename to bass-sys/win/bass24/c/synth/synth.vcxproj diff --git a/bass-sys/bass24/c/writewav/makefile b/bass-sys/win/bass24/c/writewav/makefile similarity index 100% rename from bass-sys/bass24/c/writewav/makefile rename to bass-sys/win/bass24/c/writewav/makefile diff --git a/bass-sys/win/bass24/c/writewav/writewav.c b/bass-sys/win/bass24/c/writewav/writewav.c new file mode 100644 index 0000000..b0e47f3 --- /dev/null +++ b/bass-sys/win/bass24/c/writewav/writewav.c @@ -0,0 +1,168 @@ +/* + BASS console WAV writer + Copyright (c) 2002-2008 Un4seen Developments Ltd. +*/ + +#include +#include +#include "bass.h" + +#ifdef _WIN32 // Windows +#include +#else // OSX +#include +#include +#include +#include + +int _kbhit() +{ + int r; + fd_set rfds; + struct timeval tv; + struct termios term, oterm; + tcgetattr(0, &oterm); + memcpy(&term, &oterm, sizeof(term)); + cfmakeraw(&term); + tcsetattr(0, TCSANOW, &term); + FD_ZERO(&rfds); + FD_SET(0, &rfds); + tv.tv_sec = tv.tv_usec = 0; + r = select(1, &rfds, NULL, NULL, &tv); + tcsetattr(0, TCSANOW, &oterm); + return r; +} +#endif + +#ifdef _BIG_ENDIAN +inline DWORD le_32(DWORD v) +{ + return (v >> 24) | ((v >> 8) & 0xff00) | ((v & 0xff00) << 8) | (v << 24); +} +inline WORD le_16(WORD v) +{ + return (v >> 8) | (v << 8); +} +#else +#define le_32(v) (v) +#define le_16(v) (v) +#endif + +// display error messages +void Error(const char *text) +{ + printf("Error(%d): %s\n", BASS_ErrorGetCode(), text); + BASS_Free(); + exit(0); +} + +void main(int argc, char **argv) +{ + BASS_CHANNELINFO info; + DWORD chan, p; + QWORD pos; + FILE *fp; + short buf[10000]; + WAVEFORMATEX wf; + + printf("BASS WAV writer example : MOD/MPx/OGG -> BASS.WAV\n" + "-------------------------------------------------\n"); + + // check the correct BASS was loaded + if (HIWORD(BASS_GetVersion()) != BASSVERSION) { + printf("An incorrect version of BASS was loaded"); + return; + } + + if (argc != 2) { + printf("\tusage: writewav \n"); + return; + } + + // initalize "no sound" device + if (!BASS_Init(0, 44100, 0, 0, NULL)) + Error("Can't initialize device"); + + // try streaming the file/url + if ((chan = BASS_StreamCreateFile(FALSE, argv[1], 0, 0, BASS_STREAM_DECODE)) + || (chan = BASS_StreamCreateURL(argv[1], 0, BASS_STREAM_DECODE | BASS_STREAM_BLOCK, 0, 0))) { + pos = BASS_ChannelGetLength(chan, BASS_POS_BYTE); + if (pos == -1) // length not available + printf("streaming file"); + else +#ifdef _WIN32 + printf("streaming file [%I64u bytes]", pos); +#else + printf("streaming file [%llu bytes]", pos); +#endif + } else { + // try loading the MOD (with sensitive ramping, and calculate the duration) + if (!(chan = BASS_MusicLoad(FALSE, argv[1], 0, 0, BASS_MUSIC_DECODE | BASS_MUSIC_RAMP | BASS_MUSIC_PRESCAN, 0))) + // not a MOD either + Error("Can't play the file"); + { // count channels + float dummy; + for (p = 0; BASS_ChannelGetAttribute(chan, BASS_ATTRIB_MUSIC_VOL_CHAN + p, &dummy); p++); + } + printf("MOD music \"%s\" [%u chans, %u orders]", + BASS_ChannelGetTags(chan, BASS_TAG_MUSIC_NAME), p, (DWORD)BASS_ChannelGetLength(chan, BASS_POS_MUSIC_ORDER)); + pos = BASS_ChannelGetLength(chan, BASS_POS_BYTE); + } + + // display the time length + if (pos && pos != -1) { + p = (DWORD)BASS_ChannelBytes2Seconds(chan, pos); + printf(" %u:%02u\n", p / 60, p % 60); + } else // no time length available + printf("\n"); + + if (!(fp = fopen("bass.wav", "wb"))) Error("Can't create file"); + printf("writing to BASS.WAV file... press a key to stop\n"); + // write WAV header + BASS_ChannelGetInfo(chan, &info); + wf.wFormatTag = 1; + wf.nChannels = info.chans; + wf.wBitsPerSample = (info.flags & BASS_SAMPLE_8BITS ? 8 : 16); + wf.nBlockAlign = wf.nChannels * wf.wBitsPerSample / 8; + wf.nSamplesPerSec = info.freq; + wf.nAvgBytesPerSec = wf.nSamplesPerSec * wf.nBlockAlign; +#ifdef _BIG_ENDIAN // swap byte order + wf.wFormatTag = le_16(wf.wFormatTag); + wf.nChannels = le_16(wf.nChannels); + wf.wBitsPerSample = le_16(wf.wBitsPerSample); + wf.nBlockAlign = le_16(wf.nBlockAlign); + wf.nSamplesPerSec = le_32(wf.nSamplesPerSec); + wf.nAvgBytesPerSec = le_32(wf.nAvgBytesPerSec); +#endif + fwrite("RIFF\0\0\0\0WAVEfmt \20\0\0\0", 20, 1, fp); + fwrite(&wf, 16, 1, fp); + fwrite("data\0\0\0\0", 8, 1, fp); + + while (!_kbhit() && BASS_ChannelIsActive(chan)) { + int c = BASS_ChannelGetData(chan, buf, 20000); +#ifdef _BIG_ENDIAN + if (!(info.flags & BASS_SAMPLE_8BITS)) // swap 16-bit byte order + for (p = 0; p < c / 2; p++) buf[p] = le_16(buf[p]); +#endif + fwrite(buf, 1, c, fp); + pos = BASS_ChannelGetPosition(chan, BASS_POS_BYTE); +#ifdef _WIN32 + printf("pos %09I64u\r", pos); +#else + printf("pos %09llu\r", pos); +#endif + fflush(stdout); + } + // complete WAV header + fflush(fp); + p = ftell(fp); + fseek(fp, 4, SEEK_SET); + putw(le_32(p - 8), fp); + fflush(fp); + fseek(fp, 40, SEEK_SET); + putw(le_32(p - 44), fp); + fflush(fp); + fclose(fp); + + BASS_Free(); +} diff --git a/bass-sys/bass24/c/writewav/writewav.dsp b/bass-sys/win/bass24/c/writewav/writewav.dsp similarity index 100% rename from bass-sys/bass24/c/writewav/writewav.dsp rename to bass-sys/win/bass24/c/writewav/writewav.dsp diff --git a/bass-sys/bass24/c/writewav/writewav.vcproj b/bass-sys/win/bass24/c/writewav/writewav.vcproj similarity index 100% rename from bass-sys/bass24/c/writewav/writewav.vcproj rename to bass-sys/win/bass24/c/writewav/writewav.vcproj diff --git a/bass-sys/bass24/c/writewav/writewav.vcxproj b/bass-sys/win/bass24/c/writewav/writewav.vcxproj similarity index 100% rename from bass-sys/bass24/c/writewav/writewav.vcxproj rename to bass-sys/win/bass24/c/writewav/writewav.vcxproj diff --git a/bass-sys/bass24/c/x64/bass.lib b/bass-sys/win/bass24/c/x64/bass.lib similarity index 100% rename from bass-sys/bass24/c/x64/bass.lib rename to bass-sys/win/bass24/c/x64/bass.lib diff --git a/bass-sys/bass24/delphi/3dTest/D3Test.dpr b/bass-sys/win/bass24/delphi/3dTest/D3Test.dpr similarity index 100% rename from bass-sys/bass24/delphi/3dTest/D3Test.dpr rename to bass-sys/win/bass24/delphi/3dTest/D3Test.dpr diff --git a/bass-sys/bass24/delphi/3dTest/DTMain.dfm b/bass-sys/win/bass24/delphi/3dTest/DTMain.dfm similarity index 100% rename from bass-sys/bass24/delphi/3dTest/DTMain.dfm rename to bass-sys/win/bass24/delphi/3dTest/DTMain.dfm diff --git a/bass-sys/bass24/delphi/3dTest/DTMain.pas b/bass-sys/win/bass24/delphi/3dTest/DTMain.pas similarity index 100% rename from bass-sys/bass24/delphi/3dTest/DTMain.pas rename to bass-sys/win/bass24/delphi/3dTest/DTMain.pas diff --git a/bass-sys/bass24/delphi/BassTest/BTMain.dfm b/bass-sys/win/bass24/delphi/BassTest/BTMain.dfm similarity index 100% rename from bass-sys/bass24/delphi/BassTest/BTMain.dfm rename to bass-sys/win/bass24/delphi/BassTest/BTMain.dfm diff --git a/bass-sys/bass24/delphi/BassTest/BTMain.pas b/bass-sys/win/bass24/delphi/BassTest/BTMain.pas similarity index 100% rename from bass-sys/bass24/delphi/BassTest/BTMain.pas rename to bass-sys/win/bass24/delphi/BassTest/BTMain.pas diff --git a/bass-sys/bass24/delphi/BassTest/BassTest.dpr b/bass-sys/win/bass24/delphi/BassTest/BassTest.dpr similarity index 100% rename from bass-sys/bass24/delphi/BassTest/BassTest.dpr rename to bass-sys/win/bass24/delphi/BassTest/BassTest.dpr diff --git a/bass-sys/bass24/delphi/ConTest/ConTest.dpr b/bass-sys/win/bass24/delphi/ConTest/ConTest.dpr similarity index 100% rename from bass-sys/bass24/delphi/ConTest/ConTest.dpr rename to bass-sys/win/bass24/delphi/ConTest/ConTest.dpr diff --git a/bass-sys/bass24/delphi/DspTest/DTMain.dfm b/bass-sys/win/bass24/delphi/DspTest/DTMain.dfm similarity index 100% rename from bass-sys/bass24/delphi/DspTest/DTMain.dfm rename to bass-sys/win/bass24/delphi/DspTest/DTMain.dfm diff --git a/bass-sys/bass24/delphi/DspTest/DTMain.pas b/bass-sys/win/bass24/delphi/DspTest/DTMain.pas similarity index 100% rename from bass-sys/bass24/delphi/DspTest/DTMain.pas rename to bass-sys/win/bass24/delphi/DspTest/DTMain.pas diff --git a/bass-sys/bass24/delphi/DspTest/DspTest.dpr b/bass-sys/win/bass24/delphi/DspTest/DspTest.dpr similarity index 100% rename from bass-sys/bass24/delphi/DspTest/DspTest.dpr rename to bass-sys/win/bass24/delphi/DspTest/DspTest.dpr diff --git a/bass-sys/bass24/delphi/RecordTest/RecordTest.dpr b/bass-sys/win/bass24/delphi/RecordTest/RecordTest.dpr similarity index 100% rename from bass-sys/bass24/delphi/RecordTest/RecordTest.dpr rename to bass-sys/win/bass24/delphi/RecordTest/RecordTest.dpr diff --git a/bass-sys/bass24/delphi/RecordTest/Unit1.dfm b/bass-sys/win/bass24/delphi/RecordTest/Unit1.dfm similarity index 100% rename from bass-sys/bass24/delphi/RecordTest/Unit1.dfm rename to bass-sys/win/bass24/delphi/RecordTest/Unit1.dfm diff --git a/bass-sys/bass24/delphi/RecordTest/Unit1.pas b/bass-sys/win/bass24/delphi/RecordTest/Unit1.pas similarity index 100% rename from bass-sys/bass24/delphi/RecordTest/Unit1.pas rename to bass-sys/win/bass24/delphi/RecordTest/Unit1.pas diff --git a/bass-sys/bass24/delphi/SampleVis/CommonTypes.pas b/bass-sys/win/bass24/delphi/SampleVis/CommonTypes.pas similarity index 100% rename from bass-sys/bass24/delphi/SampleVis/CommonTypes.pas rename to bass-sys/win/bass24/delphi/SampleVis/CommonTypes.pas diff --git a/bass-sys/bass24/delphi/SampleVis/circle_vis.pas b/bass-sys/win/bass24/delphi/SampleVis/circle_vis.pas similarity index 100% rename from bass-sys/bass24/delphi/SampleVis/circle_vis.pas rename to bass-sys/win/bass24/delphi/SampleVis/circle_vis.pas diff --git a/bass-sys/bass24/delphi/SampleVis/main.dfm b/bass-sys/win/bass24/delphi/SampleVis/main.dfm similarity index 100% rename from bass-sys/bass24/delphi/SampleVis/main.dfm rename to bass-sys/win/bass24/delphi/SampleVis/main.dfm diff --git a/bass-sys/bass24/delphi/SampleVis/main.pas b/bass-sys/win/bass24/delphi/SampleVis/main.pas similarity index 100% rename from bass-sys/bass24/delphi/SampleVis/main.pas rename to bass-sys/win/bass24/delphi/SampleVis/main.pas diff --git a/bass-sys/bass24/delphi/SampleVis/osc_vis.pas b/bass-sys/win/bass24/delphi/SampleVis/osc_vis.pas similarity index 100% rename from bass-sys/bass24/delphi/SampleVis/osc_vis.pas rename to bass-sys/win/bass24/delphi/SampleVis/osc_vis.pas diff --git a/bass-sys/bass24/delphi/SampleVis/samplevis.dpr b/bass-sys/win/bass24/delphi/SampleVis/samplevis.dpr similarity index 100% rename from bass-sys/bass24/delphi/SampleVis/samplevis.dpr rename to bass-sys/win/bass24/delphi/SampleVis/samplevis.dpr diff --git a/bass-sys/bass24/delphi/SampleVis/spectrum_vis.pas b/bass-sys/win/bass24/delphi/SampleVis/spectrum_vis.pas similarity index 100% rename from bass-sys/bass24/delphi/SampleVis/spectrum_vis.pas rename to bass-sys/win/bass24/delphi/SampleVis/spectrum_vis.pas diff --git a/bass-sys/bass24/delphi/Speakers/Speakers.dpr b/bass-sys/win/bass24/delphi/Speakers/Speakers.dpr similarity index 100% rename from bass-sys/bass24/delphi/Speakers/Speakers.dpr rename to bass-sys/win/bass24/delphi/Speakers/Speakers.dpr diff --git a/bass-sys/bass24/delphi/Speakers/Unit1.dfm b/bass-sys/win/bass24/delphi/Speakers/Unit1.dfm similarity index 100% rename from bass-sys/bass24/delphi/Speakers/Unit1.dfm rename to bass-sys/win/bass24/delphi/Speakers/Unit1.dfm diff --git a/bass-sys/bass24/delphi/Speakers/Unit1.pas b/bass-sys/win/bass24/delphi/Speakers/Unit1.pas similarity index 100% rename from bass-sys/bass24/delphi/Speakers/Unit1.pas rename to bass-sys/win/bass24/delphi/Speakers/Unit1.pas diff --git a/bass-sys/bass24/delphi/StreamTest/STMain.dfm b/bass-sys/win/bass24/delphi/StreamTest/STMain.dfm similarity index 100% rename from bass-sys/bass24/delphi/StreamTest/STMain.dfm rename to bass-sys/win/bass24/delphi/StreamTest/STMain.dfm diff --git a/bass-sys/bass24/delphi/StreamTest/STMain.pas b/bass-sys/win/bass24/delphi/StreamTest/STMain.pas similarity index 100% rename from bass-sys/bass24/delphi/StreamTest/STMain.pas rename to bass-sys/win/bass24/delphi/StreamTest/STMain.pas diff --git a/bass-sys/bass24/delphi/StreamTest/StreamTest.dpr b/bass-sys/win/bass24/delphi/StreamTest/StreamTest.dpr similarity index 100% rename from bass-sys/bass24/delphi/StreamTest/StreamTest.dpr rename to bass-sys/win/bass24/delphi/StreamTest/StreamTest.dpr diff --git a/bass-sys/bass24/delphi/bass.bpg b/bass-sys/win/bass24/delphi/bass.bpg similarity index 100% rename from bass-sys/bass24/delphi/bass.bpg rename to bass-sys/win/bass24/delphi/bass.bpg diff --git a/bass-sys/bass24/delphi/bass.pas b/bass-sys/win/bass24/delphi/bass.pas similarity index 100% rename from bass-sys/bass24/delphi/bass.pas rename to bass-sys/win/bass24/delphi/bass.pas diff --git a/bass-sys/bass24/delphi/custloop/Unit1.dfm b/bass-sys/win/bass24/delphi/custloop/Unit1.dfm similarity index 100% rename from bass-sys/bass24/delphi/custloop/Unit1.dfm rename to bass-sys/win/bass24/delphi/custloop/Unit1.dfm diff --git a/bass-sys/bass24/delphi/custloop/Unit1.pas b/bass-sys/win/bass24/delphi/custloop/Unit1.pas similarity index 100% rename from bass-sys/bass24/delphi/custloop/Unit1.pas rename to bass-sys/win/bass24/delphi/custloop/Unit1.pas diff --git a/bass-sys/bass24/delphi/custloop/custloop.dpr b/bass-sys/win/bass24/delphi/custloop/custloop.dpr similarity index 100% rename from bass-sys/bass24/delphi/custloop/custloop.dpr rename to bass-sys/win/bass24/delphi/custloop/custloop.dpr diff --git a/bass-sys/bass24/delphi/devlist/devlist.dpr b/bass-sys/win/bass24/delphi/devlist/devlist.dpr similarity index 100% rename from bass-sys/bass24/delphi/devlist/devlist.dpr rename to bass-sys/win/bass24/delphi/devlist/devlist.dpr diff --git a/bass-sys/bass24/delphi/fxtest/FXtest.dpr b/bass-sys/win/bass24/delphi/fxtest/FXtest.dpr similarity index 100% rename from bass-sys/bass24/delphi/fxtest/FXtest.dpr rename to bass-sys/win/bass24/delphi/fxtest/FXtest.dpr diff --git a/bass-sys/bass24/delphi/fxtest/test.dfm b/bass-sys/win/bass24/delphi/fxtest/test.dfm similarity index 100% rename from bass-sys/bass24/delphi/fxtest/test.dfm rename to bass-sys/win/bass24/delphi/fxtest/test.dfm diff --git a/bass-sys/bass24/delphi/fxtest/test.pas b/bass-sys/win/bass24/delphi/fxtest/test.pas similarity index 100% rename from bass-sys/bass24/delphi/fxtest/test.pas rename to bass-sys/win/bass24/delphi/fxtest/test.pas diff --git a/bass-sys/bass24/delphi/livefx/Unit1.dfm b/bass-sys/win/bass24/delphi/livefx/Unit1.dfm similarity index 100% rename from bass-sys/bass24/delphi/livefx/Unit1.dfm rename to bass-sys/win/bass24/delphi/livefx/Unit1.dfm diff --git a/bass-sys/bass24/delphi/livefx/Unit1.pas b/bass-sys/win/bass24/delphi/livefx/Unit1.pas similarity index 100% rename from bass-sys/bass24/delphi/livefx/Unit1.pas rename to bass-sys/win/bass24/delphi/livefx/Unit1.pas diff --git a/bass-sys/bass24/delphi/livefx/livefx.dpr b/bass-sys/win/bass24/delphi/livefx/livefx.dpr similarity index 100% rename from bass-sys/bass24/delphi/livefx/livefx.dpr rename to bass-sys/win/bass24/delphi/livefx/livefx.dpr diff --git a/bass-sys/bass24/delphi/livespec/livespec.dpr b/bass-sys/win/bass24/delphi/livespec/livespec.dpr similarity index 100% rename from bass-sys/bass24/delphi/livespec/livespec.dpr rename to bass-sys/win/bass24/delphi/livespec/livespec.dpr diff --git a/bass-sys/bass24/delphi/modtest/modtest.dpr b/bass-sys/win/bass24/delphi/modtest/modtest.dpr similarity index 100% rename from bass-sys/bass24/delphi/modtest/modtest.dpr rename to bass-sys/win/bass24/delphi/modtest/modtest.dpr diff --git a/bass-sys/bass24/delphi/modtest/modtest.rc b/bass-sys/win/bass24/delphi/modtest/modtest.rc similarity index 100% rename from bass-sys/bass24/delphi/modtest/modtest.rc rename to bass-sys/win/bass24/delphi/modtest/modtest.rc diff --git a/bass-sys/bass24/delphi/multi/Multi.dpr b/bass-sys/win/bass24/delphi/multi/Multi.dpr similarity index 100% rename from bass-sys/bass24/delphi/multi/Multi.dpr rename to bass-sys/win/bass24/delphi/multi/Multi.dpr diff --git a/bass-sys/bass24/delphi/multi/multi.rc b/bass-sys/win/bass24/delphi/multi/multi.rc similarity index 100% rename from bass-sys/bass24/delphi/multi/multi.rc rename to bass-sys/win/bass24/delphi/multi/multi.rc diff --git a/bass-sys/bass24/delphi/netradio/Unit1.dfm b/bass-sys/win/bass24/delphi/netradio/Unit1.dfm similarity index 100% rename from bass-sys/bass24/delphi/netradio/Unit1.dfm rename to bass-sys/win/bass24/delphi/netradio/Unit1.dfm diff --git a/bass-sys/bass24/delphi/netradio/Unit1.pas b/bass-sys/win/bass24/delphi/netradio/Unit1.pas similarity index 100% rename from bass-sys/bass24/delphi/netradio/Unit1.pas rename to bass-sys/win/bass24/delphi/netradio/Unit1.pas diff --git a/bass-sys/bass24/delphi/netradio/netradio.dpr b/bass-sys/win/bass24/delphi/netradio/netradio.dpr similarity index 100% rename from bass-sys/bass24/delphi/netradio/netradio.dpr rename to bass-sys/win/bass24/delphi/netradio/netradio.dpr diff --git a/bass-sys/bass24/delphi/plugins/Unit1.dfm b/bass-sys/win/bass24/delphi/plugins/Unit1.dfm similarity index 100% rename from bass-sys/bass24/delphi/plugins/Unit1.dfm rename to bass-sys/win/bass24/delphi/plugins/Unit1.dfm diff --git a/bass-sys/bass24/delphi/plugins/Unit1.pas b/bass-sys/win/bass24/delphi/plugins/Unit1.pas similarity index 100% rename from bass-sys/bass24/delphi/plugins/Unit1.pas rename to bass-sys/win/bass24/delphi/plugins/Unit1.pas diff --git a/bass-sys/bass24/delphi/plugins/plugins.dpr b/bass-sys/win/bass24/delphi/plugins/plugins.dpr similarity index 100% rename from bass-sys/bass24/delphi/plugins/plugins.dpr rename to bass-sys/win/bass24/delphi/plugins/plugins.dpr diff --git a/bass-sys/bass24/delphi/spectrum/COMMON.INC b/bass-sys/win/bass24/delphi/spectrum/COMMON.INC similarity index 100% rename from bass-sys/bass24/delphi/spectrum/COMMON.INC rename to bass-sys/win/bass24/delphi/spectrum/COMMON.INC diff --git a/bass-sys/bass24/delphi/spectrum/Unit1.pas b/bass-sys/win/bass24/delphi/spectrum/Unit1.pas similarity index 100% rename from bass-sys/bass24/delphi/spectrum/Unit1.pas rename to bass-sys/win/bass24/delphi/spectrum/Unit1.pas diff --git a/bass-sys/bass24/delphi/spectrum/spectrum.dpr b/bass-sys/win/bass24/delphi/spectrum/spectrum.dpr similarity index 100% rename from bass-sys/bass24/delphi/spectrum/spectrum.dpr rename to bass-sys/win/bass24/delphi/spectrum/spectrum.dpr diff --git a/bass-sys/bass24/delphi/synth/synth.dpr b/bass-sys/win/bass24/delphi/synth/synth.dpr similarity index 100% rename from bass-sys/bass24/delphi/synth/synth.dpr rename to bass-sys/win/bass24/delphi/synth/synth.dpr diff --git a/bass-sys/bass24/delphi/writewav/UnitMain.dfm b/bass-sys/win/bass24/delphi/writewav/UnitMain.dfm similarity index 100% rename from bass-sys/bass24/delphi/writewav/UnitMain.dfm rename to bass-sys/win/bass24/delphi/writewav/UnitMain.dfm diff --git a/bass-sys/bass24/delphi/writewav/UnitMain.pas b/bass-sys/win/bass24/delphi/writewav/UnitMain.pas similarity index 100% rename from bass-sys/bass24/delphi/writewav/UnitMain.pas rename to bass-sys/win/bass24/delphi/writewav/UnitMain.pas diff --git a/bass-sys/bass24/delphi/writewav/writewav.dpr b/bass-sys/win/bass24/delphi/writewav/writewav.dpr similarity index 100% rename from bass-sys/bass24/delphi/writewav/writewav.dpr rename to bass-sys/win/bass24/delphi/writewav/writewav.dpr diff --git a/bass-sys/bass24/mp3-free/bass.dll b/bass-sys/win/bass24/mp3-free/bass.dll similarity index 100% rename from bass-sys/bass24/mp3-free/bass.dll rename to bass-sys/win/bass24/mp3-free/bass.dll diff --git a/bass-sys/bass24/vb/3Dtest/frm3Dtest.frm b/bass-sys/win/bass24/vb/3Dtest/frm3Dtest.frm similarity index 100% rename from bass-sys/bass24/vb/3Dtest/frm3Dtest.frm rename to bass-sys/win/bass24/vb/3Dtest/frm3Dtest.frm diff --git a/bass-sys/bass24/vb/3Dtest/prj3Dtest.vbp b/bass-sys/win/bass24/vb/3Dtest/prj3Dtest.vbp similarity index 100% rename from bass-sys/bass24/vb/3Dtest/prj3Dtest.vbp rename to bass-sys/win/bass24/vb/3Dtest/prj3Dtest.vbp diff --git a/bass-sys/bass24/vb/BASStest/frmBassTest.frm b/bass-sys/win/bass24/vb/BASStest/frmBassTest.frm similarity index 100% rename from bass-sys/bass24/vb/BASStest/frmBassTest.frm rename to bass-sys/win/bass24/vb/BASStest/frmBassTest.frm diff --git a/bass-sys/bass24/vb/BASStest/prjBassTest.vbp b/bass-sys/win/bass24/vb/BASStest/prjBassTest.vbp similarity index 100% rename from bass-sys/bass24/vb/BASStest/prjBassTest.vbp rename to bass-sys/win/bass24/vb/BASStest/prjBassTest.vbp diff --git a/bass-sys/bass24/vb/CustLoop/frmCustLoop.frm b/bass-sys/win/bass24/vb/CustLoop/frmCustLoop.frm similarity index 100% rename from bass-sys/bass24/vb/CustLoop/frmCustLoop.frm rename to bass-sys/win/bass24/vb/CustLoop/frmCustLoop.frm diff --git a/bass-sys/bass24/vb/CustLoop/modCustLoop.bas b/bass-sys/win/bass24/vb/CustLoop/modCustLoop.bas similarity index 100% rename from bass-sys/bass24/vb/CustLoop/modCustLoop.bas rename to bass-sys/win/bass24/vb/CustLoop/modCustLoop.bas diff --git a/bass-sys/bass24/vb/CustLoop/prjCustLoop.vbp b/bass-sys/win/bass24/vb/CustLoop/prjCustLoop.vbp similarity index 100% rename from bass-sys/bass24/vb/CustLoop/prjCustLoop.vbp rename to bass-sys/win/bass24/vb/CustLoop/prjCustLoop.vbp diff --git a/bass-sys/bass24/vb/DSPtest/frmDSPtest.frm b/bass-sys/win/bass24/vb/DSPtest/frmDSPtest.frm similarity index 100% rename from bass-sys/bass24/vb/DSPtest/frmDSPtest.frm rename to bass-sys/win/bass24/vb/DSPtest/frmDSPtest.frm diff --git a/bass-sys/bass24/vb/DSPtest/modDSPtest.bas b/bass-sys/win/bass24/vb/DSPtest/modDSPtest.bas similarity index 100% rename from bass-sys/bass24/vb/DSPtest/modDSPtest.bas rename to bass-sys/win/bass24/vb/DSPtest/modDSPtest.bas diff --git a/bass-sys/bass24/vb/DSPtest/prjDSPtest.vbp b/bass-sys/win/bass24/vb/DSPtest/prjDSPtest.vbp similarity index 100% rename from bass-sys/bass24/vb/DSPtest/prjDSPtest.vbp rename to bass-sys/win/bass24/vb/DSPtest/prjDSPtest.vbp diff --git a/bass-sys/bass24/vb/FXtest/frmFXtest.frm b/bass-sys/win/bass24/vb/FXtest/frmFXtest.frm similarity index 100% rename from bass-sys/bass24/vb/FXtest/frmFXtest.frm rename to bass-sys/win/bass24/vb/FXtest/frmFXtest.frm diff --git a/bass-sys/bass24/vb/FXtest/prjFXtest.vbp b/bass-sys/win/bass24/vb/FXtest/prjFXtest.vbp similarity index 100% rename from bass-sys/bass24/vb/FXtest/prjFXtest.vbp rename to bass-sys/win/bass24/vb/FXtest/prjFXtest.vbp diff --git a/bass-sys/bass24/vb/LiveFX/frmLiveFX.frm b/bass-sys/win/bass24/vb/LiveFX/frmLiveFX.frm similarity index 100% rename from bass-sys/bass24/vb/LiveFX/frmLiveFX.frm rename to bass-sys/win/bass24/vb/LiveFX/frmLiveFX.frm diff --git a/bass-sys/bass24/vb/LiveFX/modLiveFX.bas b/bass-sys/win/bass24/vb/LiveFX/modLiveFX.bas similarity index 100% rename from bass-sys/bass24/vb/LiveFX/modLiveFX.bas rename to bass-sys/win/bass24/vb/LiveFX/modLiveFX.bas diff --git a/bass-sys/bass24/vb/LiveFX/prjLiveFX.vbp b/bass-sys/win/bass24/vb/LiveFX/prjLiveFX.vbp similarity index 100% rename from bass-sys/bass24/vb/LiveFX/prjLiveFX.vbp rename to bass-sys/win/bass24/vb/LiveFX/prjLiveFX.vbp diff --git a/bass-sys/bass24/vb/LiveSpec/frmLiveSpec.frm b/bass-sys/win/bass24/vb/LiveSpec/frmLiveSpec.frm similarity index 100% rename from bass-sys/bass24/vb/LiveSpec/frmLiveSpec.frm rename to bass-sys/win/bass24/vb/LiveSpec/frmLiveSpec.frm diff --git a/bass-sys/bass24/vb/LiveSpec/modLiveSpec.bas b/bass-sys/win/bass24/vb/LiveSpec/modLiveSpec.bas similarity index 100% rename from bass-sys/bass24/vb/LiveSpec/modLiveSpec.bas rename to bass-sys/win/bass24/vb/LiveSpec/modLiveSpec.bas diff --git a/bass-sys/bass24/vb/LiveSpec/prjLiveSpec.vbp b/bass-sys/win/bass24/vb/LiveSpec/prjLiveSpec.vbp similarity index 100% rename from bass-sys/bass24/vb/LiveSpec/prjLiveSpec.vbp rename to bass-sys/win/bass24/vb/LiveSpec/prjLiveSpec.vbp diff --git a/bass-sys/bass24/vb/Memory/SYNCtest.bas b/bass-sys/win/bass24/vb/Memory/SYNCtest.bas similarity index 100% rename from bass-sys/bass24/vb/Memory/SYNCtest.bas rename to bass-sys/win/bass24/vb/Memory/SYNCtest.bas diff --git a/bass-sys/bass24/vb/Memory/cbass_time.cls b/bass-sys/win/bass24/vb/Memory/cbass_time.cls similarity index 100% rename from bass-sys/bass24/vb/Memory/cbass_time.cls rename to bass-sys/win/bass24/vb/Memory/cbass_time.cls diff --git a/bass-sys/bass24/vb/Memory/frmMemory.frm b/bass-sys/win/bass24/vb/Memory/frmMemory.frm similarity index 100% rename from bass-sys/bass24/vb/Memory/frmMemory.frm rename to bass-sys/win/bass24/vb/Memory/frmMemory.frm diff --git a/bass-sys/bass24/vb/Memory/prjMemory.vbp b/bass-sys/win/bass24/vb/Memory/prjMemory.vbp similarity index 100% rename from bass-sys/bass24/vb/Memory/prjMemory.vbp rename to bass-sys/win/bass24/vb/Memory/prjMemory.vbp diff --git a/bass-sys/bass24/vb/Multi/frmDevice.frm b/bass-sys/win/bass24/vb/Multi/frmDevice.frm similarity index 100% rename from bass-sys/bass24/vb/Multi/frmDevice.frm rename to bass-sys/win/bass24/vb/Multi/frmDevice.frm diff --git a/bass-sys/bass24/vb/Multi/frmMulti.frm b/bass-sys/win/bass24/vb/Multi/frmMulti.frm similarity index 100% rename from bass-sys/bass24/vb/Multi/frmMulti.frm rename to bass-sys/win/bass24/vb/Multi/frmMulti.frm diff --git a/bass-sys/bass24/vb/Multi/modMulti.bas b/bass-sys/win/bass24/vb/Multi/modMulti.bas similarity index 100% rename from bass-sys/bass24/vb/Multi/modMulti.bas rename to bass-sys/win/bass24/vb/Multi/modMulti.bas diff --git a/bass-sys/bass24/vb/Multi/prjMulti.vbp b/bass-sys/win/bass24/vb/Multi/prjMulti.vbp similarity index 100% rename from bass-sys/bass24/vb/Multi/prjMulti.vbp rename to bass-sys/win/bass24/vb/Multi/prjMulti.vbp diff --git a/bass-sys/bass24/vb/NetRadio/clsFileIo.cls b/bass-sys/win/bass24/vb/NetRadio/clsFileIo.cls similarity index 100% rename from bass-sys/bass24/vb/NetRadio/clsFileIo.cls rename to bass-sys/win/bass24/vb/NetRadio/clsFileIo.cls diff --git a/bass-sys/bass24/vb/NetRadio/frmNetRadio.frm b/bass-sys/win/bass24/vb/NetRadio/frmNetRadio.frm similarity index 100% rename from bass-sys/bass24/vb/NetRadio/frmNetRadio.frm rename to bass-sys/win/bass24/vb/NetRadio/frmNetRadio.frm diff --git a/bass-sys/bass24/vb/NetRadio/modNetRadio.bas b/bass-sys/win/bass24/vb/NetRadio/modNetRadio.bas similarity index 100% rename from bass-sys/bass24/vb/NetRadio/modNetRadio.bas rename to bass-sys/win/bass24/vb/NetRadio/modNetRadio.bas diff --git a/bass-sys/bass24/vb/NetRadio/prjNetRadio.vbp b/bass-sys/win/bass24/vb/NetRadio/prjNetRadio.vbp similarity index 100% rename from bass-sys/bass24/vb/NetRadio/prjNetRadio.vbp rename to bass-sys/win/bass24/vb/NetRadio/prjNetRadio.vbp diff --git a/bass-sys/bass24/vb/Plugins/frmPlugins.frm b/bass-sys/win/bass24/vb/Plugins/frmPlugins.frm similarity index 100% rename from bass-sys/bass24/vb/Plugins/frmPlugins.frm rename to bass-sys/win/bass24/vb/Plugins/frmPlugins.frm diff --git a/bass-sys/bass24/vb/Plugins/prjPlugins.vbp b/bass-sys/win/bass24/vb/Plugins/prjPlugins.vbp similarity index 100% rename from bass-sys/bass24/vb/Plugins/prjPlugins.vbp rename to bass-sys/win/bass24/vb/Plugins/prjPlugins.vbp diff --git a/bass-sys/bass24/vb/RecTest/frmRecTest.frm b/bass-sys/win/bass24/vb/RecTest/frmRecTest.frm similarity index 100% rename from bass-sys/bass24/vb/RecTest/frmRecTest.frm rename to bass-sys/win/bass24/vb/RecTest/frmRecTest.frm diff --git a/bass-sys/bass24/vb/RecTest/modRecTest.bas b/bass-sys/win/bass24/vb/RecTest/modRecTest.bas similarity index 100% rename from bass-sys/bass24/vb/RecTest/modRecTest.bas rename to bass-sys/win/bass24/vb/RecTest/modRecTest.bas diff --git a/bass-sys/bass24/vb/RecTest/prjRecTest.vbp b/bass-sys/win/bass24/vb/RecTest/prjRecTest.vbp similarity index 100% rename from bass-sys/bass24/vb/RecTest/prjRecTest.vbp rename to bass-sys/win/bass24/vb/RecTest/prjRecTest.vbp diff --git a/bass-sys/bass24/vb/Speakers/frmSpeakers.frm b/bass-sys/win/bass24/vb/Speakers/frmSpeakers.frm similarity index 100% rename from bass-sys/bass24/vb/Speakers/frmSpeakers.frm rename to bass-sys/win/bass24/vb/Speakers/frmSpeakers.frm diff --git a/bass-sys/bass24/vb/Speakers/prjSpeakers.vbp b/bass-sys/win/bass24/vb/Speakers/prjSpeakers.vbp similarity index 100% rename from bass-sys/bass24/vb/Speakers/prjSpeakers.vbp rename to bass-sys/win/bass24/vb/Speakers/prjSpeakers.vbp diff --git a/bass-sys/bass24/vb/Spectrum/frmSpectrum.frm b/bass-sys/win/bass24/vb/Spectrum/frmSpectrum.frm similarity index 100% rename from bass-sys/bass24/vb/Spectrum/frmSpectrum.frm rename to bass-sys/win/bass24/vb/Spectrum/frmSpectrum.frm diff --git a/bass-sys/bass24/vb/Spectrum/modSpectrum.bas b/bass-sys/win/bass24/vb/Spectrum/modSpectrum.bas similarity index 100% rename from bass-sys/bass24/vb/Spectrum/modSpectrum.bas rename to bass-sys/win/bass24/vb/Spectrum/modSpectrum.bas diff --git a/bass-sys/bass24/vb/Spectrum/prjSpectrum.vbp b/bass-sys/win/bass24/vb/Spectrum/prjSpectrum.vbp similarity index 100% rename from bass-sys/bass24/vb/Spectrum/prjSpectrum.vbp rename to bass-sys/win/bass24/vb/Spectrum/prjSpectrum.vbp diff --git a/bass-sys/bass24/vb/Synth/frmSynth.frm b/bass-sys/win/bass24/vb/Synth/frmSynth.frm similarity index 100% rename from bass-sys/bass24/vb/Synth/frmSynth.frm rename to bass-sys/win/bass24/vb/Synth/frmSynth.frm diff --git a/bass-sys/bass24/vb/Synth/modSynth.bas b/bass-sys/win/bass24/vb/Synth/modSynth.bas similarity index 100% rename from bass-sys/bass24/vb/Synth/modSynth.bas rename to bass-sys/win/bass24/vb/Synth/modSynth.bas diff --git a/bass-sys/bass24/vb/Synth/prjSynth.vbp b/bass-sys/win/bass24/vb/Synth/prjSynth.vbp similarity index 100% rename from bass-sys/bass24/vb/Synth/prjSynth.vbp rename to bass-sys/win/bass24/vb/Synth/prjSynth.vbp diff --git a/bass-sys/bass24/vb/WriteWav/frmWriteWave.frm b/bass-sys/win/bass24/vb/WriteWav/frmWriteWave.frm similarity index 100% rename from bass-sys/bass24/vb/WriteWav/frmWriteWave.frm rename to bass-sys/win/bass24/vb/WriteWav/frmWriteWave.frm diff --git a/bass-sys/bass24/vb/WriteWav/prjWriteWave.vbp b/bass-sys/win/bass24/vb/WriteWav/prjWriteWave.vbp similarity index 100% rename from bass-sys/bass24/vb/WriteWav/prjWriteWave.vbp rename to bass-sys/win/bass24/vb/WriteWav/prjWriteWave.vbp diff --git a/bass-sys/bass24/vb/bass.bas b/bass-sys/win/bass24/vb/bass.bas similarity index 100% rename from bass-sys/bass24/vb/bass.bas rename to bass-sys/win/bass24/vb/bass.bas diff --git a/bass-sys/bass24/x64/bass.dll b/bass-sys/win/bass24/x64/bass.dll similarity index 100% rename from bass-sys/bass24/x64/bass.dll rename to bass-sys/win/bass24/x64/bass.dll diff --git a/bass-sys/bass24/x64/mp3-free/bass.dll b/bass-sys/win/bass24/x64/mp3-free/bass.dll similarity index 100% rename from bass-sys/bass24/x64/mp3-free/bass.dll rename to bass-sys/win/bass24/x64/mp3-free/bass.dll

J08r_*Dl}&}tupXm-)qK9-XY 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 literal 0 HcmV?d00001 diff --git a/bass-sys/linux/bass24/x64/mp3-free/libbass.so b/bass-sys/linux/bass24/x64/mp3-free/libbass.so new file mode 100644 index 0000000000000000000000000000000000000000..2da283cfe162a7d2b37b206956f1a260b486c0a8 GIT binary patch literal 216064 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∓dN5Lvu`pEcj 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�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 hIM7bg?SDG^);vvk;;{(x0G3nCTJyFLy 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