Jump to content
IGNORED

XXHighEnd


BEEMB

Recommended Posts

My experience is that playing in 'Unattended' mode provides a real improvement in SQ...

 

Mani.

 

Main: SOtM sMS-200 -> Okto dac8PRO -> 6x Neurochrome 286 mono amps -> Tune Audio Anima horns + 2x Rotel RB-1590 amps -> 4 subs

Home Office: SOtM sMS-200 -> MOTU UltraLite-mk5 -> 6x Neurochrome 286 mono amps -> Impulse H2 speakers

Vinyl: Technics SP10 / London (Decca) Reference -> Trafomatic Luna -> RME ADI-2 Pro

Link to comment

Hi Peter,

 

Let me try to paraphrase my understanding of your note. Please let me know if my understanding is correct or not.

 

- A playlist editor for XXHighEnd would not call the sound engine itself, but would instead call XXHighEnd.exe which is actually the front-end that controls the sound engine.

 

- All that a playlist editor would really need to do is write a properly formatted XML file into the proper location and then call XXHighEnd.exe with a command line argument.

 

- XXHighEnd.exe should be run in "unintended" mode. Unintended mode fires off the sound engine and then XXHighEnd.exe closes itself.

 

- There is no need to put actual sound files in a specific location. Instead I would just put an XML document into a specific location.

 

If the above is correct, then I have some ideas for you that would ease the development of a playlist editor / front end controller. Would it be possible for you to allow XXHighEnd to be called with support for the following parameters? I know some are already supported:

1) Play

2) Pause - Pauses playback in the middle of a song. If Pause is called again while the sound engine is already paused, it will begin playback at that point.

3) Clear - This would stop an existing version of the sound engine, and delete all those files that you said need to be cleaned up. If the sound engine wasn't already running, it would still clean up the files you were referring to. This would be much easier than bringing up XXHighEnd and then quitting it.

4) Stop - Different from clear in that it doesn't delete the files you refer to above. It only stops playback.

6) No_User_Interface - If the idea here is to just launch XXHighEnd.exe so it will in turn launch the sound engine and then quit, then there is really no reason to paint a user interface window. It should launch invisibly, do its command, then quit (just like the "Unintended mode" you write about above). Maybe this behavior should be assumed if XXHighEnd.exe is called with any parameters. Otherwise, allowing a "No_UserInterface" argument would mean that XXHighEnd.exe would have to allow more than one flag at the command line, as it would make no sense to call the program with this argument by itself.

7) Next - Moves forward one song in the playlist.

8) Previous - Moves backwards one song in the playlist.

 

If you added the behavior requested above into XXHighEnd, it would take me about a day to modify CPlayList Editor to work with your application. Of course, CPlayList Editor is written in Java. It would take much longer to write it in managed C#, but that would be doable.

 

My understanding is that XXHighEnd supports WAV and FLAC. Does XXHighEnd support CDs ripped as one large WAV or FLAC file with a corresponding cue sheet? If not, then I wouldn't bother writing anything to support those files. If you already do support such rips, it seems to me that your playlist XML file would allow a start and stop point in each large file, instead of having an application copy temporary files to a specific location on disc.

 

Thanks,

Alan

 

Link to comment

Also, though I have not yet explored Unattended playback in XXHighEnd I assume it sounds better than attended playback, correct? If so what are the recommended settings and configurations for Unattended playback?

 

If I could I would give you a straight answer to this, but I'm afraid too many things depend on eachother to have one answer. It also depends on the OS, like W7 is more "fragile" and not everything can be set what we were used from Vista (think of clicks may appear for certain settings while Vista didn't bother).

 

A general guideline could be that you try to take away as much burden from the OS as possible. This means a proper Core Appointment Scheme -> no one rule exists for it, and I found no one setting for everybody while it *does* matter for sound. This means reading as must of a track into memory as possible which by itself depends on your amount of available memory, but also on how you play the track (16 bits, 24 bits, 32 bits) and whether it is upsampled. This means "Copy to XX drive" when you have the OS (and XX) on an SSD, and ... well, if you get the grasp of it you will be able to do it better than I can from a distance without listening.

 

Btw, almost everybody has their settings in their signatures and I guess you can learn from that, as we all learn from eachother (and hey, this includes me). On this matter it takes some experience on "what is caused by a specific DAC", like the knowledge of adaptive USB not liking low Q1 settings. It also can work the other way around : here is this guy liking Q1 at 0 - of which almost everybody would say "I don't like that", so what the h*ck could be happening that Q1 is to be so low in that system.

 

Everyone should only be using Unattended, because with normal Attended SQ is not under control (and it will change per version unintentionally).

 

Peter

 

Lush^3-e      Lush^2      Blaxius^2.5      Ethernet^3     HDMI^2     XLR^2

XXHighEnd (developer)

Phasure NOS1 24/768 Async USB DAC (manufacturer)

Phasure Mach III Audio PC with Linear PSU (manufacturer)

Orelino & Orelo MKII Speakers (designer/supplier)

Link to comment

Hi Alan,

 

[not checked for typos]

 

Yes, I think it is close already. And thank you for your efforts ! I hope to have the time to put in as much as required within a reasonable throughput time.

 

A playlist editor for XXHighEnd would not call the sound engine itself, but would instead call XXHighEnd.exe which is actually the front-end that controls the sound engine.

 

Correct. Notice that the response would be no different from what you experience now at using remote commands. Also please notice that while this was the idea I adopted a year or so back, all is not really optimized for it, hence it sure can be more optimized which already starts with a smaller thus faster loading program without under the hood GUI initialization etc. It may not differ much, but it will.

This is for later.

 

- All that a playlist editor would really need to do is write a properly formatted XML file into the proper location and then call XXHighEnd.exe with a command line argument.

 

Correct.

 

- XXHighEnd.exe should be run in "unintended" mode. Unintended mode fires off the sound engine and then XXHighEnd.exe closes itself.

 

UnAttended (from "without attention") mode fires off the sound engine from within XXHighEnd, and next XXHighEnd closes itself.

 

- There is no need to put actual sound files in a specific location. Instead I would just put an XML document into a specific location.

 

Correct. The XML has to go to the install folder of XXHighEnd. An Environment Variable denotes where that is.

Notice that the install folder may change with each version (up to the user) and that several can exist together (there's nothing like a real Windows install). The Environment Variable denotes the appointed "active" one, which is already nesessary for the remote commands. You would be using the same (procedure) and again xx.ahk shows the useage.

 

1) Play

 

p

 

2) Pause - Pauses playback in the middle of a song. If Pause is called again while the sound engine is already paused, it will begin playback at that point.

 

e

 

I know how logical it is to use Pause again to commence playback, but that is not how I made it hence how I could (easily) do it. So, there is Pause and there is Play. Using Pause twice will not commence playback (also please think of the "no-state" situation everything is in when nothing is running ... there just is nothing, except redundant data).

This way of working coincidentally allows for an additional "feature" : when Stop was used, using Pause after that will let commence playback at the point in time where previously Stop was used.

 

Ok, I realize the inconveniency of this, but I guess I really need separate commands for Pause and Play. But wait, let's twist this a bit : if you can maintain the state of what was Pause and what was Play (as how I could have done - or do it), you just do that yourself. Don't forget tto calculate in another week to get make this bug free, consistent, etc., think of crashes, Pause + reboot etc.

Better don't ! :-)

 

3) Clear - This would stop an existing version of the sound engine, and delete all those files that you said need to be cleaned up. If the sound engine wasn't already running, it would still clean up the files you were referring to. This would be much easier than bringing up XXHighEnd and then quitting it.

 

I understand what you want here, but it will make you depended on the "logic" of how things are dealt with. Too difficult, and besides that the logic will or may change over time. Thus, this can (should) not be an explicit command. But :

 

I guess I put you on the wrong track with my earlier remarks on this;

What you would be dealing with are the exact same problematics as what I have to deal with myself. Think of this : What the user puts in the Playlist Area of XXHighEnd is transparant to the proxy mechanisms. Thus, the proxys are self-contained (btw this stuff killed at least me). Now, I told you about it, because when you wouldn't know about it, you'd (at testing some) be putting a new playlist file, and wouldn't understand what's happening. This is because it requires XXHighEnd to "interact" with everything before the proxys are "re-ordered" again. At testing, this is nothing you want to be confronted with, because it is a layer which vaguens things. Thus, starting XXHighEnd when no playback is going on, and quit it again will clear things. Just something you would be using at testing.

 

Otoh ... I can imagine that having such a clear command just for testing is a convenient feauture. So, I guess I will make it. But, only to be used for testing, because otherwise it will slow down things to an unacceptable degree (like converting a FLAC which already has been converted).

 

I hope this is "clear" enough for now ?

 

4) Stop - Different from clear in that it doesn't delete the files you refer to above. It only stops playback.

 

Perfectly understood.

 

6) No_User_Interface - If the idea here is to just launch XXHighEnd.exe so it will in turn launch the sound engine and then quit, then there is really no reason to paint a user interface window. It should launch invisibly, do its command, then quit (just like the "Unintended mode" you write about above). Maybe this behavior should be assumed if XXHighEnd.exe is called with any parameters. Otherwise, allowing a "No_UserInterface" argument would mean that XXHighEnd.exe would have to allow more than one flag at the command line, as it would make no sense to call the program with this argument by itself.

 

This already is in there, but works a kind of other way around. All the commands where the UI is unwanted (Play, Stop, Pause, Volup, Change Absolute Phase, etc.) the UI won't come up. In fact, you'll notice nothing of it. Opposed to this there are commands which just bring up the UI (the only one which comes to mind right now is Alt-X which is just a call to XXHighEnd without parameters).

This will not be used by normal "other" front end useage. However, it may, and it will e.g. show where playback currently is (though through the XXHighEnd UI of course). Normally this is used to look for a next album to play (while playback is still going on), and once all is set and ready (the Playlist Area has been filled with a new set of tracks to play), the user will click Stop and Play, and all starts all over (UI disappears etc.). When nothing is changed and the UI is Quit, well, it just disappears again.

 

Anyway, I this already works as how it's wanted.

 

7) Next - Moves forward one song in the playlist.

 

n.

 

8) Previous - Moves backwards one song in the playlist.

 

Sadly, not possible. This is related to how the proxys are organized.

If really needed this is, of course, possible (with Attended it just works), but then a "start all over" has to be mimiced and it will imply a re-conversion of everything (hence proxys are cleared). This is nothing to really want, because it may take minutes before everything is settled again (although playback may start within a few seconds).

 

Of course, CPlayList Editor is written in Java. It would take much longer to write it in managed C#, but that would be doable.

 

But why would you want to do that ?

 

My understanding is that XXHighEnd supports WAV and FLAC. Does XXHighEnd support CDs ripped as one large WAV or FLAC file with a corresponding cue sheet?

 

Plus AI(I)F and MP3. All types can be provided as one large file of that type + cue sheet.

 

If you already do support such rips, it seems to me that your playlist XML file would allow a start and stop point in each large file, instead of having an application copy temporary files to a specific location on disc.

 

Copying temporary files is in order or not (proxy again) unrelated to "Cue Files" (as how I call the large files + cue sheet). So, on this matter, both types ("copy or not copy") can be in order, and they depend on user settings (never mind the "why" for now). In either case, the xml file shows normal tracks at first glance, which is related to how Cue Files show in the Playlist Area once dropped or whatever) onto it. Thus, they explode, show the individual track times and anything, and next can be dragged to change the indivdual sequence, cut out from the Playlist Area - and in fact anything you would be doing with a normal single track. Because of this "behaviour", the XML file is allowed to show individual tracks just the same. But, as you may have noticed from audiozorro's example (thanks !) there's a reference to the physical file as well as to the track name. In the example this is redundant, but for Cue Files the physical file will always be the same (the large WAV etc.) while the track names differ (derived fro the Cue Sheet obviously).

There are a few things more about the "rules" to create the XML, like the track number being followed by "c" when it is about a Cue File.

 

My hint would be to NOT start with Cue Files (no matter it is your standard output), because it needs those rules, while otherwise things are fairly transparent. And, what I'm saying is that you also shouldn't start with Cue Files which are like that to begin with (from downloads etc.). It is just the difficult way, or better : needs explanations which are not needed with normal single tracks.

Try to keep Cue Files for the second stage (2nd day :-)).

 

One additional thing for now :

Might you (somehow) have difficulties at creating XML (like you don't have a standard XML export) ... don't bother. Just create some ascii, agree about delimiters, and I will swallow it.

In either case one thing *is* important : whatever I am getting, and no matter how it was written, I must be able to get Unicode out of it. I am not sure whether you ran into this problem (theoretically you can have avoided it because you can (wrong, *will*) create your own output name, and (you know what to read back and) done. Not here, because the track names must be 100% equal to what they are on disk. If not, well, I can't find them. You may test this with French albums, Greek as a next step, and Chinese as the last one.

But I hope you have the experience and Java can handle this (I don't know). If you can't get it done immediately try to focus on System::Strings because that's what they are internally.

Do not bother when you can't read it back yourself (like what would happen with an export to NotePad) as long as XXHighEnd shows it properly again.

 

In the mean time I will create the things needed. I may not be as fast as you are because I have to deal with some prio things first.

Thanks,

Peter

 

 

Lush^3-e      Lush^2      Blaxius^2.5      Ethernet^3     HDMI^2     XLR^2

XXHighEnd (developer)

Phasure NOS1 24/768 Async USB DAC (manufacturer)

Phasure Mach III Audio PC with Linear PSU (manufacturer)

Orelino & Orelo MKII Speakers (designer/supplier)

Link to comment
  • 10 months later...

As a Newbie - was starting to try out other players like XXHighEnd, and just bought JRiver Media Center; now I deleted XXHighEnd from my harddrive after install struggles and weird errors. JRiver Media Center on Win7 and WASAPI seems to sound pretty nice through home theater system. All the previous discussions point to keeping things simple for Newbies while at the same time trying to achieve high quality sound, I totally agree.

 

 

 

Link to comment

I'm excited to try XXHighEnd on Vista. I have an XP machine at work and Vista should upgrade in place. I have a Macbook Pro at home which is generally recommended as a good player but I've heard bad things about XP and I'll need to do some other things on the XP machine while listening.

 

I've been a bit surprised to see such critical posts about Peter's theories of SQ correlating with player system resource optimization. XX will be worth the cabbage just for what I have already learned about the DSP (mostly undesired) on MS OS machines and how to avoid the major bit rearranging pitfalls. And, even if between two perfectly setup players there should be theoretically no difference, I'll opt for XX's optimized use of multi-threaded code on a dual core CPU and hope get the most from some cheap NOS DACS. Peter and the forum at phasure.com has really helped to explain the various implementations of MSofts audio file processing into PCM/I2s data streams and when to expect poor or good results.

 

I am really glad I used the CA ripping guide (to the letter) to rip ALL my CD's and in similar fashion I'll build my XP (not for long) player exactly to the XX configuration. I still might try MM or even iTunes but I'm still dreaming of that "blown away" sound. I'll be using headphones at work so I'm even more concerned about high end harshness etc. I just don't have time for all the ABX'ng and I'm always mixing on hand hardware with minor upgrades and gadgets. I've made a bunch of mistakes but I'm learning.

 

AIIF (CA Ripping Guide) > Netgear ReadyNAS Duo > 1Gb Ethernet > MacBook Pro > Itunes > USB/Toslink > PS Audio DLink III > Peachtree Decco (refurb) > Frugal Horn Mk3 (DBPowerAmp from CD, HDTracks) > Netgear ReadyNAS Duo > 1Gb Ethernet > Dell Latitude D820 > Foobar > AISO4All > MusicStreamer II > MF V-Can > Sennheiser HD 650

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...