Help - Search - Members - Calendar
Full Version: Updated in_mad Winamp MAD MP3 input plugin
Hydrogenaudio Forums > Hydrogenaudio Forum > Validated News
Pages: 1, 2, 3, 4, 5, 6, 7, 8
gameplaya15143
QUOTE(MoSPDude @ Aug 13 2006, 07:10) *

I've added descriptive text to the ID3v2 editor, and a combobox for APE value names. I've change the VBR average display to show a running playback average at gameplaya15143 request.

I'm not too sure about implementing the VBRI header info. It doesn't seem too well supported in general, and I can't seem to find consistent details on it, other than possibly borrowing in_mpg123 implementation.

I'll be sure to get the latest version when I get the chance and see if there are any remaining problems.

I hope you made the average live bitrate thing an OPTION, as both ways can be informative.

I'm not sure, but I'm not even sure if in_mpg123 supports VBRI unsure.gif
Out of curiosity, what encoders can we get gapless playback from? just lame? xing/helix too?

And did I read correctly... streaming support? You have to be careful with that, shoutcast streams can be either mp3 or aacplus and there is no difference in the url. My suggestion in such case would be to only handle proper* mp3 streams which have an mp3 extention, and leave the rest to in_mp3.

*[opinion]proper= url/stream.mp3[/opinion]
MoSPDude
QUOTE(gameplaya15143 @ Aug 15 2006, 01:44) *

And did I read correctly... streaming support? You have to be careful with that, shoutcast streams can be either mp3 or aacplus and there is no difference in the url. My suggestion in such case would be to only handle proper* mp3 streams which have an mp3 extention, and leave the rest to in_mp3.

*[opinion]proper= url/stream.mp3[/opinion]


Thats why the changes to how streams are detect were made. Shoutcast sends a header detailing the type of stream, and this is detected and stream abandoned by in_mad if neccessary. There is an option to turn off this new 'detect unknown streams' as I've called it - as the detection does require setting up a connection and reading header, before returning to winamp if we want the file or not. In my tests though, it works fine, unless there is trouble connecting, but I'm probably going to make it fail silently.

The in_mpg123 source I've got (the regularly updated code) does contain code to read the VBRI tags. If I was to implement it, I'd probably have to borrow the specification from this.

Proper gapless playback info is only found in the LAME tag, XING tag only contains VBR info. I don't know how other encoders store the padding information, if they do. Otherwise the gap skip option removes a definite amount of silence if it can find it to reduce/remove the gap.

The live bitrate option did take place of display the file average option - I think it does look better with it changing, and the file average only gets reported in the info box. I'll put it so can display "per frame", "live average" and "file average" bitrates, if you'd like that.

Cheers,
Craig smile.gif
odyssey
Is it just me having problems adding files to the ML? For me it seemed to crash after like 10 seconds, or it could be certain tags it can't handle. I disabled in_mad, and everything was fine.
MoSPDude

I'll have a look into that, what kind of tags does the files that you are adding have?
odyssey
QUOTE(MoSPDude @ Aug 15 2006, 08:37) *

I'll have a look into that, what kind of tags does the files that you are adding have?

They would all have MP3Gain APE tags...
benski
QUOTE(MoSPDude @ Aug 15 2006, 02:32) *

The in_mpg123 source I've got (the regularly updated code) does contain code to read the VBRI tags. If I was to implement it, I'd probably have to borrow the specification from this.


Information about FHG's VBRI header is available here:
http://www.iis.fraunhofer.de/amm/download/...ware/index.html
Big_Berny
Just a little question: Is there any advantage to use in_mad instead of otachans in_mpg123? Missing features?

Big_Berny
odyssey
QUOTE(Big_Berny @ Aug 15 2006, 16:22) *

Just a little question: Is there any advantage to use in_mad instead of otachans in_mpg123? Missing features?

Big_Berny

Lame freeformat biggrin.gif
MoSPDude

Cheers benski! You know if you just Googled that I'll be very upset - I must have looked for over half an hour, only to find dead links....

I'm going to look into that ML problem now.

Cheers all! biggrin.gif
MoSPDude
I think I've sorted the ML problem, small mistake on my part, I'll have an update available later after I've finished the streaming info box.

I'll also start to look into VBRI tag support.
MoSPDude
Finally I've uploaded another update.

This has title streaming, stream info box and 'better' internet stream detection. If it gives you problems, please tell me with what internet stream and then uncheck 'detect unknown streams' to go back to the old behaviour.

Cheers smile.gif
bladecgn
Streaming works well!! smile.gif smile.gif smile.gif

This plugin gets better and better, thank you MoSPDude.

Another suggestion would be to rename the file based on the tag infomation.

Mayber in every Tag tab you could include a button "rename file" and an option which pattern to use (e.g. "(%1)-%2" would rename a file to "(Prince)-Diamonds and Pearls".

That would be a killer extension for me, as I often listen, tag files with winamp and would like to have them renamed based on my entries.
MedO
QUOTE(bladecgn @ Aug 18 2006, 16:17) *

Streaming works well!! smile.gif smile.gif smile.gif

This plugin gets better and better, thank you MoSPDude.

Another suggestion would be to rename the file based on the tag infomation.

Mayber in every Tag tab you could include a button "rename file" and an option which pattern to use (e.g. "(%1)-%2" would rename a file to "(Prince)-Diamonds and Pearls".

That would be a killer extension for me, as I often listen, tag files with winamp and would like to have them renamed based on my entries.


I think this is outside the scope of an input plugin. Besides, if you wrote a general purpose plugin for this, you could use it on files of any type, the input plugin just has to report the proper tags. I'm not into developing winamp plugins though, so I don't know if this is possible/easy.
gameplaya15143
QUOTE(MoSPDude @ Aug 15 2006, 02:32) *

Proper gapless playback info is only found in the LAME tag, XING tag only contains VBR info. I don't know how other encoders store the padding information, if they do. Otherwise the gap skip option removes a definite amount of silence if it can find it to reduce/remove the gap.

The live bitrate option did take place of display the file average option - I think it does look better with it changing, and the file average only gets reported in the info box. I'll put it so can display "per frame", "live average" and "file average" bitrates, if you'd like that.

blink.gif I was under the impression that xing headers had gapless info, I guess I should read up on that.

The remove gaps option is still causing problems for me, track after the problem mp3 ends up being white noise. IMO it shouldn't try to remove gaps unless gapless info is found. Perhaps an extra option is in order? (ie checkbox: 'only when gapless playback info is present')

The bitrate display optons rule! .. but, live average is pointless the way it is done right now. It should show the average bitrate over the last few frames (like in_mpg123) instead of showing the average bitrate of the mp3 so far.

It crashes winamp when writing the ID3v2 tag, after the mp3 has the tag, it can be edited without winamp crashing. This does not happen if I add/edit the tags while the mp3 is playing.

Another small annoyance, if a higher tag is present (ie id3v2) but does not contain the info to be displayed (ie artist - title) then the filename is being shown even when the id3v1 tag contains the artist and title meta data. It would be nice to have it check the 'lower' tags for metadata when the 'higher' tag doesn't have what is needed.

I'll test streaming later.

How about allowing the preamp to be set even when replaygain is disabled?

As always, thank you, and keep up the great work!

ps. I think the tag issues should be highest priority.
bladecgn
QUOTE(MedO @ Aug 18 2006, 20:47) *


I think this is outside the scope of an input plugin. Besides, if you wrote a general purpose plugin for this, you could use it on files of any type, the input plugin just has to report the proper tags. I'm not into developing winamp plugins though, so I don't know if this is possible/easy.


I agree that a filename tagging function goes beyond a simple imput plugin.

Nevertheless, as this plugin has one of the best tag editors, the filename rename would be the cherry on top of the cream. :-)

I don't know if this is hard to do or not, but if you use the tag editor to change the tag why not use it as a file rename tool in this context?
MoSPDude
I'll definitely have a deeper look into the tag issues and the gap removal, might have to try and make some awkward mp3 files. I should probably make the options more clearer, but gapless playback is always enabled if a LAME tag is present, the option in the preferences attempts to remove some of the gap if there is NO gapless information available - subject to some rules.

@gameplaya15143, how many frames do you think I should make it average out across? and I'll change the higher priority tag display for basic formatting - I don't think it suffers that problem on advanced title formatting. Will also make it so that preamp is aways available.

@bladecgn, I'll have a look into it for you, though it probably is going a bit far for an input plugin.
MoSPDude
I've uploaded another update, hopefully addressing all the tag issues and the gap removal problem, if gameplaya15143 could test please biggrin.gif . I'm going to change the RG preamp and look into file renaming in a bit. At the moment, I'm finishing options and status for buffer length to aid streaming.

Download from the usual place smile.gif
gameplaya15143
QUOTE(MoSPDude @ Aug 19 2006, 15:59) *

but gapless playback is always enabled if a LAME tag is present, the option in the preferences attempts to remove some of the gap if there is NO gapless information available - subject to some rules.

Well why didn't you say so laugh.gif I guess leaving it unchecked is still pretty safe then (I haven't actually done any gapless tests).
The white noise problem I had seems to be gone though smile.gif

What about tooltips to explain what the options do?

I tested streaming, sync errors galore! (icecast2 server on localhost vbr mp3), but I love the info display for the stream! How about an option to not use in_mad for streaming at all?

If the option to use 'none' for replay gain was in the last version, never mind my request for the preamp when RG is disabled. If it's new, then thanks. Turning on RG, setting it to none, then setting both preamps to the same thing gets the functionality I desired.

The live average bitrate display works properly, but I think it refreshes too fast. I think it should refresh ever 1 second or so. It changes too fast for my slow brain to comprehend the numbers. blink.gif

I just downloaded the latest version. I'll see if any of my other problems remain.

Keep it up, this thing is great! smile.gif
odyssey
To push it any further maybe support for this would make it the ultimate plugin? tongue.gif
MoSPDude

I'm preparing another update to smooth some of the streaming problems, along with some control on size of buffers. I also think tooltips are a great idea, so they'll be going in soon. smile.gif I'll make the live average display average out across approx. one seconds worth of frames and then update.

@gameplaya15143, Do you want to disable streaming completely? or just disable it if the URL doesn't specify "mp3"? - to do the latter, disable 'detect unknown internet streams'. If you could see if the sync errors go away when you disable both of the streaming tag options, that'd be a help.

@odyssey, can't hurt to look into it biggrin.gif
odyssey
QUOTE(MoSPDude @ Aug 21 2006, 09:35) *

@odyssey, can't hurt to look into it biggrin.gif

It just came across my mind, when they mentioned simelar routines as used in freeformat... which of course in_mad supports beautifully tongue.gif
MoSPDude
I've uploaded another update, download from the usual place.

This adds basic VBRI tag support, along with buffer options. The buffers that I've set as default for internet streaming are purely guesses made using an Excel spreadsheet, feel free to post values that work for you for your internet connection bandwidth to help me fine tune these.

I've looked into the mp3 surround technique, its interesting to read about, but I'd be facing a lawsuit if I even thought about trying to do anything about it. There is a project called Aud-X but its closed source and takes over the role as decoder.

I'll have a look into tooltips in the configuration box, or perhaps add more descriptive options.

Cheers to all, biggrin.gif
MoSPDude
I'm going to have another update ready in around 3 days - I'm not going to have access to my computer for the next few days. I've been working on the VBRI gapless support, and making the ID3v2 editor show data fields (but not edit them yet). Tooltips for options are then next on the list.
odyssey
Gap removal is only available in 16bit mode (why?)
MoSPDude
Hmmm, should work in any output mode. Will look into it for you. Anyone else noticed any further bugs?

Cheers,
Craig
odyssey
QUOTE(MoSPDude @ Aug 23 2006, 13:13) *

Hmmm, should work in any output mode. Will look into it for you. Anyone else noticed any further bugs?

Cheers,
Craig

Sorry I guess it was just the 08-20-06 build that suffered. Updated now and it seems to work.
MoSPDude

No problem, I've noticed something still a bit wrong with it, but I don't have access to my own machine now to rebuild and upload it. Thanks for testing and reporting your bugs, you help is definitely appreciated, my mp3 collection isn't that varied in terms of different file types and tag types! biggrin.gif

Has anyone found any more tag problems?
hat3k
as for me, old winamp's id3v2 editor was more suitable. can you make a tab for oldstyle editing, like it is already for id3v1 now?
MoSPDude
Making the ID3v2 editor more friendly has been on the to-do list, perhaps an option to switch between a basic and advanced editor then would be a good idea. The advanced would be as it is now, and the basic would resemble the winamp editor?
gameplaya15143
QUOTE(MoSPDude @ Aug 23 2006, 17:26) *
The advanced would be as it is now, and the basic would resemble the winamp editor?
Something like that would be great! I think just the main tag values (artist, title, comment, etc.) would be enough. There isn't that much room to put the more unused tags.. the advanced editor is there for those.


Ok, downloaded the latest..

Yes I would like to have the option to disable in_mad for streaming completely. Because sync errors occur with a VBR mp3 stream, CBR works perfectly fine. I haven't played around with the buffer settings much yet, perhaps increasing them could help (I'll try that out later). I just tested out real quick to see, I had set the buffer to the lowest internet speed settings (too lazy to go look what it was), seemed to improve the sync error problem.

The problem with creating the ID3v2 tag is gone for me, it works just fine now smile.gif It still freezes winamp when creating an ape tag though (editing tags when the song is NOT playing).

The live average bitrate display looks great!

I've been using in_mad for mp3 playback fulltime for about a week now with no problems at all. So at the very least the decoder seems to be working wonderfully biggrin.gif very stable.
MoSPDude
I'll have another go at the APE tag problem as I write in the basic editors for ID3v2 and APE tag pages. The disable streaming option will be in the next release smile.gif .

Glad that everything else is working ok. It's been suggested that ID3v2 EQU2 frames are recognised and read, and I was thinking about moving some EQ functionality into in_mad, as winamp can make its own EQ implementation the responsibility of the input plugin - was thinking of using Shibatch supereq as a base. This would then enable these tags to be understood and used without the user changing DSP or EQ settings etc. Anyone else have an opinion on this?
gameplaya15143
QUOTE(gameplaya15143 @ Aug 24 2006, 17:35) *

I've been using in_mad for mp3 playback fulltime for about a week now with no problems at all. So at the very least the decoder seems to be working wonderfully biggrin.gif very stable.

I shouldn't speak to soon dry.gif I ran into this problem before, but forgot about it.
Mono, 22050hz.... plays double speed. No errors are reported by in_mad. The info page reports the proper info. If I stop, and attempt to play the file again, winamp crashes.
"lame -m m -a --resample 22" should be sufficient to reproduce this.


QUOTE(MoSPDude @ Aug 24 2006, 18:34) *

It's been suggested that ID3v2 EQU2 frames are recognised and read, and I was thinking about moving some EQ functionality into in_mad, as winamp can make its own EQ implementation the responsibility of the input plugin - was thinking of using Shibatch supereq as a base. This would then enable these tags to be understood and used without the user changing DSP or EQ settings etc. Anyone else have an opinion on this?

As long as there is an option to not use it I'll be happy. Personally I like to use winamp's built in EQ. Then no matter what format (mp3, ogg, etc), they all sound the same with the EQ applied. But, it would be a cool option to have smile.gif
odyssey
QUOTE(MoSPDude @ Aug 25 2006, 00:34) *

It's been suggested that ID3v2 EQU2 frames are recognised and read, and I was thinking about moving some EQ functionality into in_mad, as winamp can make its own EQ implementation the responsibility of the input plugin - was thinking of using Shibatch supereq as a base. This would then enable these tags to be understood and used without the user changing DSP or EQ settings etc. Anyone else have an opinion on this?

I've been looking for months for support for the EQU2 tag, but found nothing. An implementation would make this plugin a KILLER!!

I took a look at the supereq - It looks very promising, and works the way I think an EQ should work (no horrible volume boost).

However I really think it should take a standalone application to apply album-EQ settings, or even an analyzer option to adjust spectral balancing (like VolumeLogic does for instance).
MoSPDude
@gameplaya15143, I can't seem to reproduce the problem with 22kHz mono mp3 at any bitrate - what output plugin are you using, and what type of file was played before the problem track? I'll have a look through to see if I can spot a possible problem area.

As for the EQ, I think it'll be suitable for everyone if I do implement a smaller version of Shibatch supereq into in_mad along with reading the EQU2 tags and applying accordingly, and make the ability to integrate the Winamp EQ optional. I'm not sure how to implement the adjustment and EQU2 tag saving - perhaps the analyser idea is a way forward.
MoSPDude

I've uploaded another update, hopefully this will have fixed the APE tag writing (and another libid3tag fault linked with it). I have a feeling that linking the APE writing through the libid3tag file structure was probably a bad idea short term, good idea in the long run. The option to disable streaming completely is in too. I've disabled the basic/advanced editor option as its not completed yet, but some code is there. I've done a few more stray fixes while scrolling the code too.

Download from the usual place, and post bugs and comments. As always, all your help is appreciated and needed! biggrin.gif
zee

hell yeah! -- been waiting for this for years!

THANK YOU!:)
gameplaya15143
Nevermind my little mono problem rolleyes.gif it's the kb5.1 output plugin that has issues. Sorry if I caused you a headache crying.gif

Ape tag writing works now... but you forgot to remove your debugging popups laugh.gif "here"

As for sync errors with vbr streaming, as you suspected, disabling shoutcast title support fixes that problem.
MoSPDude
I've uploaded another update.

This contains both advanced and basic ID3v2 + APE tag editors, as well as Equaliser code. It is still a bit of work in progress as EQU2 tag reading has not been implemented yet. The Winamp EQ link code does work however - mainly just to test that the EQ was functioning. The EQ code needs to have 32 bit support added, and possibly make the EQ input buffer share the decoder output buffer, stopping the audible end of 'previous' buffer on skip.

List of things to do now,
1. Write in EQU2 tag reading
2. Look at VBR streaming sync errors
3. Think about EQU2 tag writing
4. Make options dialog clearer (possibly with tooltips)
5. Fix other problems biggrin.gif

Thanks for comments in advance! smile.gif
MedO
QUOTE(MoSPDude @ Aug 26 2006, 18:02) *

Thanks for comments in advance! smile.gif


Um... how about "You rock"? tongue.gif
hat3k
rapid work i should say. and another wish - you told about tooltips. please do, if you can. also translation would be good. if need help - please ask, i can translate into russian.

also i report problem. i've got song with id3v1 and id3v2 tags. both tags are the same but, in mad shows year in id3v1 but not shows in id3v2. checked with tag scanner - both are same... i can send you this song

also another problem. i have song with no filled fields composer, encoder etc, but id3v2 plugin says DATA.

and another problem - if track is in winamp's playlist and view file info is pushed and i see id3v editor - i cant see tags of file in tagscanner. on closing your editor and refreshing tagscanner i see the tag again
odyssey
QUOTE(hat3k @ Aug 27 2006, 02:46) *

also translation would be good. if need help.

Danish here tongue.gif

It's beyond my imagination you already are implementing EQU2 huh.gif You rule so much biggrin.gif
MedO
QUOTE(odyssey @ Aug 27 2006, 11:22) *

QUOTE(hat3k @ Aug 27 2006, 02:46) *

also translation would be good. if need help.

Danish here tongue.gif

It's beyond my imagination you already are implementing EQU2 huh.gif You rule so much biggrin.gif


I could translate it to german smile.gif
odyssey
What's causing that few ms of last audio played with the input plugin every time a track is played? I would assume some kind of bufferleak which are not proberly handled maybe in the gapless routines.

It seems to occour every time I enable the EQU2 option, but i've experienced this with other plugins before blink.gif
MoSPDude
Its caused by the internal EQ being active, the supereq DSP plugin and some other DSP plugins have the same effect - it contains an internal buffer that isn't cleared on skip or track change. If I was to just make it clear, playback would no longer be gapless, it'd be dropping huge chunks. Am thinking about making it either use a shared buffer, or try to lessen the effect by adding buffer flushes where neccessary.

Am slowly working on it smile.gif Have got to make the EQ a bit more stable first - some stray crashes are happening when you push it.

@hat3k, I'll sort the DATA problem. The year problem is caused by using an obsolete tag as libid3tag calls it - I'll look into that. As for the file locking, I think its best that only one editor can access tags at once.

I'll get round to implementing a string table for language translations for everyone as well. I will need help to translate to other languages than English and French. smile.gif
odyssey
Another thing; is it just me having 24bit problems with gapless files? seems to work sometimes, but not always.

Another edit: To me it looks like it chokes a little on my gapless files (may be my pcutmp3 splitted files again!), it adds a little "chuckle" while it changes track
MoSPDude
I'll have a look into that one, has it just developed with the addition of the EQ? I need to do some work to that whole section. Otherwise, can you tell me the length of start and end padding on the songs that are moving between (Can find that in the file info general page with the LAME tag button). I have noticed an problem, but couldn't track it down and thought it could just be me! Along with the EQ, the decode loop needs some attention. I'm planning to do both together as I sort that buffer problem.
odyssey
QUOTE(MoSPDude @ Aug 28 2006, 11:21) *

I'll have a look into that one, has it just developed with the addition of the EQ? I need to do some work to that whole section. Otherwise, can you tell me the length of start and end padding on the songs that are moving between (Can find that in the file info general page with the LAME tag button). I have noticed an problem, but couldn't track it down and thought it could just be me! Along with the EQ, the decode loop needs some attention. I'm planning to do both together as I sort that buffer problem.

Well i'm just updating regulary and listen to a lot of different mp3's.... currently a mix I just split up myself, which are pretty ruined laugh.gif

It seems to be a problem only with continous play - a buffer (over?)flow??? If i skip to the end of a track, usually I'm not able to reproduce the problem; sometimes it just chuckles, but often it chokes.

Track 11 SP: 2136 EP: 1152
Track 12 SP: 2314 EP: 1272
Track 13 SP: 2184 EP: 1332
odyssey
QUOTE(odyssey @ Aug 28 2006, 11:34) *

QUOTE(MoSPDude @ Aug 28 2006, 11:21) *

I'll have a look into that one, has it just developed with the addition of the EQ? I need to do some work to that whole section. Otherwise, can you tell me the length of start and end padding on the songs that are moving between (Can find that in the file info general page with the LAME tag button). I have noticed an problem, but couldn't track it down and thought it could just be me! Along with the EQ, the decode loop needs some attention. I'm planning to do both together as I sort that buffer problem.

Well i'm just updating regulary and listen to a lot of different mp3's.... currently a mix I just split up myself, which are pretty ruined laugh.gif

It seems to be a problem only with continous play - a buffer (over?)flow??? If i skip to the end of a track, usually I'm not able to reproduce the problem; sometimes it just chuckles, but often it chokes.

It looks like my problem was related to my buffer-ahead was too small. Increasing it from 500 ms (default) to 1500 eliminates my problem.
MoSPDude
Ah right, so it was caused by output plugin buffer underrun, I'll have to look into making the plugin start decoding a bit quicker.

I'm in the process of preparing a new update, currently I'm working on the EQ with 32 bit support, and some other quality issues involved. EQU2 support is moving along as well, though I'm still undecided about how to edit and write these tags.

Hopefully I'll have the update available in the next few days. smile.gif
odyssey
QUOTE(MoSPDude @ Aug 30 2006, 19:13) *

Ah right, so it was caused by output plugin buffer underrun, I'll have to look into making the plugin start decoding a bit quicker.

I'm in the process of preparing a new update, currently I'm working on the EQ with 32 bit support, and some other quality issues involved. EQU2 support is moving along as well, though I'm still undecided about how to edit and write these tags.

Hopefully I'll have the update available in the next few days. smile.gif

Don't digg into it too much - Seemed like my laptop was a little picky that day. But speaking of decoding I tried some DiskWriting comparison - Isn't in_mad insanely slow when it comes to decoding? (I havent tried the original in_mad though) I got something like 3x realtime decoding, while in_mp3 was too fast for my diskcontroller to react on blink.gif

Sounds cool with the tag support. Did you think of just manual selection on EQ curves incl maybe some user-defined presets? This would be great!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2008 Invision Power Services, Inc.