Skip to main content

Recent Posts

1
Yesterday I conducted the same test that you did MinorKey. I obtained the same exact results for all three options as well. The only difference I saw was the time it took to read the gaps, with Secure taking longer than both Inaccurate and Accurate.
2
3rd Party Plugins - (fb2k) / Re: JScript Panel
Last post by marc2003 -
I've managed to prevent the bug from happening by removing "bHandled = FALSE" from OnLButtonUp method (PropertyList.h:605).

Doing that results in crazy buggy behaviour.  :o  :o 
3
Audio Hardware / Re: need good cable for line out ->amply
Last post by andy o -
Unfortunately Monoprice have fallen from grace as far as I'm concerned. I got some of their USB-C cables, and they look great, but were so terrible at voltage dropping that I had to return them. Great customer service though, they just let me keep them instead and refunded. After that, engineers Nathan K and "USB vigilante" Benson Leung (who works at Google doing USB-C stuff) tested them properly and found the same thing, rating them very poorly.

And looking back, the Lightning cables I bought from them are also wonky, charging much slower (this was before MFi though IIRC). Their audio cables might be simpler and less prone to failure, but I just don't trust them anymore.

I used to really like Blue Jeans Cable, but I haven't bought from them in years, and they do specialize in A/V.
4
Off-Topic / A Sci-Fi history?
Last post by PRTLA -

I want to share the trailer of my studio a mix between Sci-fi, CG animation and electronic music its not a track as itself, this is the reason I decide to share it as off-topic.

https://youtu.be/XoMXM7dBHPY
5
Just a few random comments -

 - Ripping accuracy is different from encoder sound quality.    If you can correctly read all of the bits from the disc, it doesn't matter what software you're using.     Rippers that support AccurateRip will tell you if you have a perfect rip or not (if the disc is in the database), so it's best to use one that supports AccurateRip.      And, CueTools can actually perfectly-correct some errors  

Sometimes error hiding can work, but it's best to avoid read errors if possible.    I've had a couple of discs that had audible errors but I was able to make a good-sounding digital-to-analog-to-digital recording by taking advantage of the error-hiding built-into the player software.

Sometimes data errors are not audible and sometimes they can sound very bad (ticks, clicks, skips, etc.).   Sometimes I get reported errors, but I don't hear anything wrong.    By now, I've forgotten which CDs were "bad".  

 - Most MP3 encoders are based on LAME, which is probably the best.   EAC and foobar2000 will give identical results if LAME is configured identically (and assuming there are no read errors).    Microsoft and Apple have their own MP3 encoders.   At higher bitrates/quality settings, they will probably all sound the same and they will probably all sound identical to the uncompressed original.   

 - Spectrum analysis can sometimes tell you something about sound quality, but, it's a lousy way to compare lossy compression.    It's easier to get a good looking spectrum than it is to get good sound, and you could tweak the settings to get a better spectrum while making the sound worse.

 - If you want perfection use FLAC, and don't waste time studying spectrums.     MP3 and AAC are lossy (although it can often sound perfect).       FLAC is "better" than WAV because tagging (metadata) is more widely supported and the files are almost half the size of WAV.
6
Ogg Vorbis - General / Re: Vorbis comment padding issue
Last post by lithopsian -
The tag names and contents in flac and vorbis are (largely) the same but the container formatting is very different.  Except that flac can be placed in an ogg container, that's very rare though and you should probably just forget I said it.

I have no idea if including more padding will help in your situation.  The tagger is clearly doing something undesirable that could possibly be considered a bug.  You can play with padding but a more reliable solution might be to try different software.  Even just as a test, it would show that you aren't doing something completely crazy and that it is just one program that is messing up.

Just for the record, I've tagged a lot of flac and vorbis files without seeing symptoms like you describe.  They aren't inherent to the tag format.
7
3rd Party Plugins - (fb2k) / Re: JScript Panel
Last post by TheQwertiest -
I find that pretty hard to reproduce but I do get the occasional flicker.
I can consistently reproduce it though. The easiest way:
1. Open property list that is big enough to have scrollbar.
2. Click on top item to make it 'blue'.
3. Click on 'arrow down' button on scrollbar.
Result: value of first item is wrong now and matches the selected 'blue' item.

FWIW, it looks like 3rd party PropertyList library is to blame but I have no idea how to fix it.
I've tried debugging a bit (lib is back from 2003, lol), but couldn't find the exact source of the problem. I've managed to prevent the bug from happening by removing "bHandled = FALSE" from OnLButtonUp method (PropertyList.h:605). But that's just brute-force programming -_-. This lib should be probably replaced some day with the more robust one (and may be a bit younger than 14 years old).
8
Hello,

I follow advices and with the code below : this compile.
However, the output entry does not appear in FB2K output combobox.
I probably miss something, but I don't know what...

(output_asio derives from output_v2).

Code: [Select]
class output_asio_instance : public output_asio
{

public:

output_asio_instance()
{
Init();
OpenDriver = false;
};

output_asio_instance(const GUID & p_device, double p_buffer_length, bool p_dither, t_uint32 p_bitdepth)
{
Init();
OpenDriver = false;
}

~output_asio_instance(void)
{
if (OpenDriver) ParamMsg(MSG_CLOSE_DRIVER).Call();
}

static bool g_advanced_settings_query() { return FALSE; };
static bool g_needs_dither_config() { return TRUE; };
static bool g_needs_bitdepth_config() { return TRUE; };
static bool g_needs_device_list_prefixes() { return TRUE; };

static void g_advanced_settings_popup(HWND p_parent, POINT p_menupoint) {};

static const char* g_get_name(void) { return NAME2; }
static const GUID g_get_guid(void) { return g_guid; }

static t_uint32 get_config_flags(void) {
//return ;
};

static void g_enum_devices(output_device_enum_callback & p_callback) {
p_callback = output_device_enum_callback_impl();
};

void
open(const t_samplespec & sspec) {
//const int RetCode = ParamMsg(MSG_OPEN, sspec.m_sample_rate, format_code, bps, sspec.m_channels).Call();
//OpenDriver = RetCode != 0;
//return RetCode;
};
void
pause(bool) {};
void
flush(void) {
ParamMsg(MSG_FLUSH).Call();
};
void
volume_set(double) {};
void
update(bool &) {};
void
process_samples(const audio_chunk &) {};
t_size
can_write_samples(void) {
return ParamMsg(MSG_CAN_WRITE).Call();
};

double
get_latency() {
return pPcmAsio->MsgGetLatency();
}


int
open_ex(int srate, int bps, int nch, int format_code)
{
const int RetCode = ParamMsg(MSG_OPEN, srate, format_code, bps, nch).Call();
OpenDriver = RetCode != 0;
return RetCode;
}

//int
// output_asio_instance::can_write(void)
//{
// return ParamMsg(MSG_CAN_WRITE).Call();
//}

int
write(const char* data, int bytes)
{
return ParamMsg(MSG_WRITE, bytes,
reinterpret_cast<unsigned char*>(const_cast<char*>(data))).Call();
}

//int
// output_asio_instance::get_latency_bytes(void)
//{
// return pPcmAsio->MsgGetLatency();
//}

void
pause(int state)
{
ParamMsg(MSG_PAUSE, state).Call();
}

void
force_play(void)
{
ParamMsg(MSG_PLAY).Call();
}

//int
// output_asio_instance::do_flush(void)
//{
// return ParamMsg(MSG_FLUSH).Call();
//}

int
is_playing(void)
{
return !!pPcmAsio->MsgGetLatency();
}

protected:
class output_device_enum_callback_impl : public output_device_enum_callback {

public:
output_device_enum_callback_impl() {};
~output_device_enum_callback_impl() {};

void on_device(const GUID &p_guid, const char *p_name, unsigned p_name_length) {

//p_guid = p_device;
p_name = output_asio_instance::g_get_name();
p_name_length = 20;
}
};

};


class output_entry_impl : public output_entry {

output_entry_impl();

~output_entry_impl() {};

public:

void instantiate(service_ptr_t<output> & p_out, const GUID & p_device, double p_buffer_length, bool p_dither, t_uint32 p_bitdepth) {
p_out = new service_impl_t<output_asio_instance>(p_device, p_buffer_length, p_dither, p_bitdepth);
};

void enum_devices(output_device_enum_callback &) {};
GUID get_guid() { return output_asio_instance::g_get_guid(); };
const char *get_name(void) { return output_asio_instance::g_get_name(); };
void advanced_settings_popup(HWND, POINT) {  };

t_uint32 get_config_flags(){
output_asio_instance::get_config_flags();
};

};


output_factory_t<output_asio_instance> foo2;

9
General - (fb2k) / Re: New HDD and Mass lossless conversion
Last post by Rollin -
If you are going to delete the old - and, assuming you have not already done so - I would have used a utility that deletes duplicates by name and/or by content, to see if there is anything left uncopied / unconverted.
If you do that a clever way, you could possibly detect if there were any files too corrupted for fb2k to even recognize as FLAC.
Audiotester can be very useful to find corrupted FLACs, which are too corrupted to be recognized by fb2k as FLACs, before mass conversion. Also it is multi-threaded, so much faster than foo_verifier.
10
I've had quite a few discs die, mainly due to poor handling when younger, using them in 10 disc cd stackers in cars (swirling scratches) and disc rot (I think caused by moving to a country with high humidity).

Now my music protected in a 3-2-1 backup ( 3 copies, 2 different media, 1 offsite) so i don't have to go through the pain of re ripping, musicbrains tagging, album arting those CDs again.