BASS.NET API 2.4.17.7

Started by radio42,

ken

I get error when using "BaseEncoder.EncodeFile", I asume I need the new 'bassenc.dll' or? (I have now 2.3.0.1 of basenc)

Unable to find an entry point named 'BASS_Encode_GetChannel' in DLL 'bassenc.dll'.


ken

Hmm, U sure?

The version is the same, size off dll is bigger.

But... I'ts not encodeing as it should.

This works... (live recording)
lameTooLame = new EncoderTooLAME(_recHandle);
lameTooLame.InputFile = null;
lameTooLame.OutputFile = filename + ".MP2";
lameTooLame.TOO_Bitrate = bitRate;
lameTooLame.Start(null, 0);

This don't... (offline convert)

EncoderTooLAME _tooLame = new EncoderTooLAME(0);
_tooLame.TOO_Bitrate = bitRate;
BaseEncoder.EncodeFile(inpFile, outputFile + ".MP2", _tooLame, new BaseEncoder.ENCODEFILEPROC(FileEncodingNotification), true, false);
                   

I tested MP3 also same result. My code worked in your previous (2.3.0.5) dll

ken

A "encoder request"

A nice overload to "BaseEncoder.EncodeFile" would be "startPos" and "endPos" so that I can encode/convert just a part of my original file.

Or is there a simple way to do this, with the encoder class?

radio42

#104
No, that wouldn't be possible at the moment...but should be easy to achive anyhow:

// "Stream (Decoding)" To "File":
int _stream = Bass.BASS_StreamCreateFile( "test.wav", 0, 0, BASSStream.BASS_STREAM_DECODE);

EncoderLAME l = new EncoderLAME(_stream);
l.InputFile = null; //STDIN
l.OutputFile = "test.mp3";
l.LAME_Bitrate = (int)EncoderLAME.BITRATE.kbps_64;
l.LAME_Mode = EncoderLAME.LAMEMode.Default;
l.LAME_Quality = EncoderLAME.LAMEQuality.Quality;

// set the pos of the stream
long fromPos = 123;   // in bytes
float toPos    = 99999;  // in byte
Bass.BASS_ChannelSetPosition(_stream, fromPos);

// encode the data
l.Start(null, 0);
byte[] encBuffer = new byte[65536]; // our dummy encoder buffer (32KB x 16-bit - size it as you like)
while ( fromPos < toPos && Bass.BASS_ChannelIsActive(_stream) == (int)BASSActive.BASS_ACTIVE_PLAYING )
{
    if (toPos - fromPos < encBuffer.Length)
        fromPos += Bass.BASS_ChannelGetData(_stream, ref encBuffer[0], toPos - fromPos);
    else
        fromPos += Bass.BASS_ChannelGetData(_stream, ref encBuffer[0], encBuffer.Length);
}

// finish
l.Stop();

But I might add those overloads to the next version ;-)

ken

Thx.

Do you know why my encoding don't work in with the latest bassenc ?

See my previous post: http://www.un4seen.com/forum/?topic=4932.msg42646#msg42646

radio42

Hi Ken,

I am really sorry, but there was a little bug in it :-)

Here is an update to try:
.Net 1.1. build : http://www.un4seen.com/filez/4/Bass23.Net11_update.zip
.Net 2.0 build : http://www.un4seen.com/filez/4/Bass23.Net20_update.zip

Therefore the requested overloads had already been added ;-)
See BaseEncoder.EncodeFile...

Let me know, if that worked out!

ken

Hi!

Looks like "offline" and "live" encoding works as it should now. Only thing was that now I must have "Bass.BASS_ChannelPlay" to start my recording, before I think the encoder class did that, cause I did't hade "Bass.BASS_ChannelPlay" in my code...

Thanks!

radio42

Regarding the recording:
That depends on how you started recording.

If you used the _PAUSED flag in your code you must call BASS_ChannelPlay to actually start recording.
But if you didn't use that flag...it will start encoding right away.

I didn't change anything there, so pls post your code, so that I can see what you exactly mean.
THX

ken

Hi!

I use DEFAULT flag. here is the code: http://www.un4seen.com/forum/?topic=4932.msg42485#msg42485

Now I use PAUSE flag  and  Bass.BASS_ChannelPlay, it works so I keep it that way

radio42

Hi Ken,

that could not be possible - I just made a new test and all worked without BASS_ChannelPlay.
i also did not use the _PAUSE flag !

So please make sure you did the following:

a) redown load the Bass.Net update !
.Net 1.1. build : http://www.un4seen.com/filez/4/Bass23.Net11_update.zip
.Net 2.0 build : http://www.un4seen.com/filez/4/Bass23.Net20_update.zip

-> then make sure you:
1. Close your Visual Studio
2. copy the Bass.Net.dll and Bass.Net.xml to your installation directory
   e.g. C:\Program Files\BASS\Bass\.NET11  or C:\Program Files\BASS\Bass\.NET20
3. Now start your Visual Studio again and all should be fine!
    (the updated version of Bass.net should already have version 2.3.0.7)

b) Make sure you are using TwoLAME v0.3.8b !
    In my tests I discovered something similar when still using an old version of TwoLAME.
    But with 0.3.8b it starts encoding right away here!

Many Greetz

ken

Hi!

Now it works...

I downloaded the update again, and now it work with "DEFAULT" flag. Thx. Btw, it was on all encoders not only "twolame".

Is there any differens on using "DEFAULT" flag and the encoder starts "recording" or using "PAUSE" and I self start by "Bass.BASS_ChannelPlay" ?

radio42

Perfect!
Nop - you can also use PAUSE and the call BASS_ChannelPlay yourself.
The Encoder's don't do anything with the flags.

I just wanted to keep it almost the same, no matter if you are a recording are a file channel handle.

ken

#113
Hi!

More strange stuff...

I try to list my playback devices. But "Bass.BASS_GetDeviceDescriptions" only returns "No Sound"

Before I did like this and it works just fine:

comboBox1.Items.AddRange(Bass.BASS_GetDeviceDescriptions());

But if I do like this I get my devices listed.
for (int i = 0; i < Bass.BASS_GetDeviceCount(); i++)
{
    comboBox1.Items.Add(Bass.BASS_GetDeviceDescription(i));
}

But my last audiodevice is not listed, in Windows Control panel I have 5 audiodev's (playback). With BAss I only get 4 + "NoSound" at top of the list.



Strange is that this function for recording devices works just fine. "Bass.BASS_RecordGetDeviceDescriptions"

comboBox2.Items.AddRange(Bass.BASS_RecordGetDeviceDescriptions());


tr1

I downloaded the samples...got them all to load and compile, except the one I'm most interested in, CS Streaming  :-\

"The project could not be loaded. The 'Reference' start tag on line 75 does not match the end tag of 'ItemGroup'. Line 92, position 5.

Any help would be greatly appreciated.

ken

tr1!

Try the Streaming2 example, and make sure you have the needed bass DLLs and encoders in you "bin" folder:

Se note from streaming class:

// NOTE: Needs 'bass.dll' - copy it to your output directory first!
//       needs 'bassenc.dll' - copy it to your output directory first!
//       needs 'basswma.dll' - copy it to your output directory first!

// NOTE: At least one of the following command-line encoders are needed as well:
//       Copy the following files to your output directory first!
//       lame.exe        : from http://www.rarewares.org/mp3.html
//       oggenc2.exe     : from http://www.rarewares.org/ogg.html
//       enc_aacPlus.exe : from http://www.un4seen.com/filez/4/enc_aacPlus.zip
//                         also needs 'enc_aacPlus.dll' and 'nscrt.dll'
//                         which can be obtained from your Winamp/plugin directory

tr1

Ken,

   I did as you suggested...moved the dll's to the bin folder...still didn't load.

Uninstalled Bass.NET 2.0 and reinstalled.  All examples C# (AsioRecording, CreateFileUser, TestDSP, etc.) work, EXCEPT Streaming.

I didn't see a Streaming2 example...could you point me in the right direction?

tr1

tr1

Copied source into another clean project and got it to work...



radio42

@Ken,
regarding "BASS_GetDeviceDescriptions" and "BASS_GetDeviceCount":
You are right - I unluckily added a liitle bug during the 64-bit compatibility port in 2.3.0.6.
I'll fix that with the next update!

radio42

#119
12.11.2006: Version 2.3.0.7 is out!!!

General:
- new BassNet.ShowSplash and BassNet.ShowAbout methods added
  -> for those who still want to support BASS.NET even in the FREEWARE version.

BASSmidi 2.3.0.0 final support added

Misc: all BaseEncoder now have a TAGs property to specify tag info updates
- all encoders now support tag writing (if applicable)
- new overloads added for BaseEncoder.EncodeFile
- new EncoderFAAC, EncoderFLAC, EncoderWavPack, EncoderMPC added
- byte order bug-fix in EncoderTwoLAME
- bug fix in SendData of SHOUTcast and ICEcast (LessDataSend)
  -> LessDataSend was incorrectly reported due to wrong allocated memory size.
  -> So now LessDataSend should actually never happen
  -> If it will happen anyhow, the server will now be disconnected automatically

BASS: Bug fix in BASS_GetDeviceDescriptions and BASS_GetDeviceCount
-> this bug was added in the 2.3.0.6 version due to the 64-bit compatibility build and now reports the correct number of devices.

Samples: The project file of the "Streaming" sample was also fixed.

P.S.:
For all users who have already registered BASS.NET: There is NO need to register again! Your registration key is still valid and can be used also with the 2.3.0.7 version.

radio42

@Ken:
Did the new version 2.3.0.7 sort out your issues with "BASS_GetDeviceDescriptions" and "BASS_GetDeviceCount"?

@TommyB:
Did the new version 2.3.0.7 sort out your "LessDataSend" issue?

@Tr1:
Guess the "Streaming" example should now work fine with the 2.3.0.7 version?!


tr1

Quote from: radio42@Ken:
Did the new version 2.3.0.7 sort out your issues with "BASS_GetDeviceDescriptions" and "BASS_GetDeviceCount"?

@TommyB:
Did the new version 2.3.0.7 sort out your "LessDataSend" issue?

@Tr1:
Guess the "Streaming" example should now work fine with the 2.3.0.7 version?!

Actually, I spoke too soon.

When I unpacked the 2.3.0.7 version, the NetRadio example and Streaming example looked the same...is it me?  The previous version had the tabs for IceCast, StreamCast, etc.

So I reverted to the old example that I had and am now getting a 'BASS_encode_init' error, when I check on the use BASS check box.

Is the example with the tabs for IceCast, SteamCast obsolete?


radio42

I guess it must be you.

I just double checked it and the samples provided with the BASS.NET v2.3.0.7. actually all work fine.
And of course the "NetRadio" example and "Streaming" example are completely different.
And are of course also not obsolete....the tabs SHOUTcast, ICEcast and WMAcast are still there ;-)
And also the UseBASS checkbox works as desired.

The reason why you could face this issue might be, that you might have modified the samples yourself in the meantime. And so the standard windows installer might not correctly overwrite your already modified samples.

So I suggest you:
a) uninstall BASS.NET again from your machine
b) go to the samples directories (e.g. C:\Program Files\BASS\.NET11\Samples) and remove all files!
c) install BASS.NET 2.3.0.7 again

Bow all the sample files should work fine again...

tr1

radio42...yes it was me (and my pals at Microsoft.) 

Programming can be a very humbling experience... :-[


I am still confronted with the 'BASS_Encode_CastInit in DLL 'bassenc.dll'.  I am using version 2.3.0.1 of bassenc.dll.in my bin directory.