Jump to content
IGNORED

Visual studio 2012 c++ and wasapi minimalist player


sbgk

Recommended Posts

Like I said. Lunatic. Shouts around himself each other day having created the best sound of the world. Keeps on talking to himself. Maybe it is going to happen. And that all for free !!

 

But I applied a search in my forum. Sadly it occurs only once and not from me. So can't be the best player in the world at all.

Next I would never say such a thing myself. And if I do, quote me. And do that with context please so people will understand what I talked about.

Mind you, you were referring to Jud's text here, not mine. So it's doubtful you have the logic to write any player software.

 

So see ? shouting again. Won't bring you anywhere.

I shout too now. But I don't need to get anywhere.

You want trouble ? you can get it.

 

Peter, are you threatening me ?

 

everything I said is backed up by this page 10 | Features of XXHighEnd

 

I think you misunderstand the purpose of MQn.

There is no harm in doubt and skepticism, for it is through these that new discoveries are made. Richard P Feynman

 

http://mqnplayer.blogspot.co.uk/

Link to comment

have finalised the SQ of mqnplay (at least for my intel i3 capabilities with 16x128 bit registers), will address 256 bit registers when I get a haswell cpu, presumably they are going to be twice as good (noise wise) as 128 bit registers.

 

you need sse to use this, check using cpuz.

 

Have uploaded mqnplay2.0 memcpy final to

 

https://rapidshare.com/#users|45980080|0ae609ce616a35c8de7ac5fda4b6194c|11541

 

I haven't heard anything so good before, just my opinion.

 

have also uploaded mqnplay.bat that I used to compare different versions

 

operation is to select a track and start it normally via mqn.bat, then stop it and double click on mqnplay.bat

 

the code for playing a version is

 

taskkill /fi "PID gt 0" /IM mqnplay.exe /F >nul

taskkill /fi "PID gt 0" /IM mqncontrol.exe /F >nul

 

del mqnplay.exe

 

copy "mqnplay.exe pf x 2 split new" mqnplay.exe

 

start MQncontrol --file ".\Files.txt"

 

powershell -command "Start-Sleep -s 80"

 

so, to add another version or remove a version just add/remove that block of code, change the line

 

copy "mqnplay.exe pf x 2 split new" mqnplay.exe to copy the desired version

 

change the 80 to the desired no of seconds to listen to, the track will play for 80 seconds for each version and loop back to the start.

 

have uploaded the final versions which I used before settling on the memcpy final version, they are

 

mqnplay.exe pf x 2 grp, mqnplay.exe pf x 2 split shift, mqnplay.exe pf x 2 split shift x 2, mqnplay.exe pf split x 2

 

turns out memcpy is absolutely critical to the SQ of the player, the aim is to ensure the maximum amount of data can pass through the cpu as quickly as possible, hardware prefetch gave a digital edge to the sound, so had to tune the software prefetch to ensure the data was close to the cpu to minimise cache misses.

 

there are a couple of tweaks for hirez formats, but that's the finished article for 16/44.1. will implement affinity setting in mqncontrol so that mqnplay has a dedicated core and also look again at control.

There is no harm in doubt and skepticism, for it is through these that new discoveries are made. Richard P Feynman

 

http://mqnplayer.blogspot.co.uk/

Link to comment

have uploaded the mqnplay.exe 3.1, 2.1 and 1.1 versions so more dacs should be able to use it.

 

also uploaded a new version of mqncontrol.exe which has better load performance

 

https://rapidshare.com/#users|45980080|0ae609ce616a35c8de7ac5fda4b6194c|11541

 

The sound is pretty outrageous now or sublime depending on your taste in music.

 

the latest changes include optimised memcpy, code tidy up and render loop unroll

 

that's it for sound quality, am still working to get the control working without affecting the SQ.

There is no harm in doubt and skepticism, for it is through these that new discoveries are made. Richard P Feynman

 

http://mqnplayer.blogspot.co.uk/

Link to comment

https://rapidshare.com/#users|45980080|0ae609ce616a35c8de7ac5fda4b6194c|11541

 

realise that last version was a bit bass heavy, I though unrolling the render loop to the maximum size would sound better, but it turns out the code needs to fit into the instruction set efficiently. Have uploaded mqnplay2.2 with the optimum render loop unroll and some more tweaks to memcpy. This is about as good as I can make it and am pleased to say am getting some serious interest in it.

There is no harm in doubt and skepticism, for it is through these that new discoveries are made. Richard P Feynman

 

http://mqnplayer.blogspot.co.uk/

Link to comment
https://rapidshare.com/#users|45980080|0ae609ce616a35c8de7ac5fda4b6194c|11541

 

realise that last version was a bit bass heavy, I though unrolling the render loop to the maximum size would sound better, but it turns out the code needs to fit into the instruction set efficiently. Have uploaded mqnplay2.2 with the optimum render loop unroll and some more tweaks to memcpy. This is about as good as I can make it and am pleased to say am getting some serious interest in it.

 

uploaded the 1.2 and 3.2 versions

There is no harm in doubt and skepticism, for it is through these that new discoveries are made. Richard P Feynman

 

http://mqnplayer.blogspot.co.uk/

Link to comment
https://rapidshare.com/#users|45980080|0ae609ce616a35c8de7ac5fda4b6194c|11541

 

realise that last version was a bit bass heavy, I though unrolling the render loop to the maximum size would sound better, but it turns out the code needs to fit into the instruction set efficiently. Have uploaded mqnplay2.2 with the optimum render loop unroll and some more tweaks to memcpy. This is about as good as I can make it and am pleased to say am getting some serious interest in it.

 

 

if you have a core i3,5,7 etc cpu with sse 4.1 (check using cpuz) you might be interested in the mqnplay.exe 2.7 sse4 intel version I have just uploaded. It takes advantage of the streaming load sse4 movntdqa instructions which increases the speed of memcpy by x 4.

 

The effect on detail is quite dramatic, I have never heard my music played with such detail and lack of digital edge.

 

Just another reminder that what you are listening to is the efficiency of how the cpu moves data from one memory location to another.

 

for lesser cpus there is mqnplay.exe 2.5 sse2 intel which uses an L1 cache buffer and sse2 streaming writes

There is no harm in doubt and skepticism, for it is through these that new discoveries are made. Richard P Feynman

 

http://mqnplayer.blogspot.co.uk/

Link to comment
@sbgk,

 

Do you know if WASAPI was rewritten on windows 8? If yes, so you have the link about that?

 

Did you choose WASAPI because KS is deprecated or because it sounds better to you?

 

Regards

have read it in a couple of places here is one, Windows 8: Improved Sound Handling - AudioKarma.org Home Audio Stereo Discussion Forums probably as dubious a source as myself. Started out using hdmi out to my nad m51 which only worked with wasapi and just kept it as win8 wasapi sounded much better, haven't found any issues with it so far, might have a go with KS sometime, but don't know much about it and don't remember it being that different to other methods, think asio/wasapi always sounded better. Don't think KS is deprecated as there are a load of new functions in win8.1 to support KS hardware offloading.

There is no harm in doubt and skepticism, for it is through these that new discoveries are made. Richard P Feynman

 

http://mqnplayer.blogspot.co.uk/

Link to comment
have read it in a couple of places here is one, Windows 8: Improved Sound Handling - AudioKarma.org Home Audio Stereo Discussion Forums probably as dubious a source as myself. Started out using hdmi out to my nad m51 which only worked with wasapi and just kept it as win8 wasapi sounded much better, haven't found any issues with it so far, might have a go with KS sometime, but don't know much about it and don't remember it being that different to other methods, think asio/wasapi always sounded better. Don't think KS is deprecated as there are a load of new functions in win8.1 to support KS hardware offloading.

Thanks for your info.

 

I thought that after XP, Microsoft only supports WASAPI...

I didn't know that Windows 8.1 has new functions for KS.

Link to comment
Thanks for your info.

 

I thought that after XP, Microsoft only supports WASAPI...

I didn't know that Windows 8.1 has new functions for KS.

 

Audio Drivers Property Sets (Windows Drivers) this talks about kernel streaming, but the architectural overview here Architectural Overview (Windows Drivers) says everything goes through wasapi. Have you tried MQn yet ? the mqnplay 2.7 sse4 intel wc version is spectacular, very musical. Some people who are trying out MQn are going to demo it to a few jplay users on Wednesday (on ws 2012 + optimised kit), they think jplay will be in trouble as it just doesn't have the detail, dynamics and timing of MQn, plus it doesn't take 2 x i5s at 100 % to get good music out. interesting times.

There is no harm in doubt and skepticism, for it is through these that new discoveries are made. Richard P Feynman

 

http://mqnplayer.blogspot.co.uk/

Link to comment

a large factor in the SQ of MQn is that is has fixed buffer sizes ie 8192 Bytes for all formats, this is important when compiling the code because the optimiser knows how large the data chunks are going to be and can optimise appropriately. the sizes are also fixed in code so there is no overhead storing them and referencing variables.

There is no harm in doubt and skepticism, for it is through these that new discoveries are made. Richard P Feynman

 

http://mqnplayer.blogspot.co.uk/

Link to comment
Thanks for the links!

 

I still didn't tried your program.

Currently, on my headless system, I'm using JRiver + JPlay and control it with JRemote.

Can I do this with your program? It will replace JPlay?

 

depends what you are looking for, there are plenty streaming options out there. I think the highest quality playback can only be achieved by a minimalist player dedicated to memory playback only.

 

A dma solution may be better, but there are no dma players out there.

 

you can control mqn from foobar2000, it has a remote

 

MQn as it stands is all about sound quality and is more like the experience of playing a record, you get up, queue the music and then listen, like a record player there is no functionality apart from start and stop and like a high end record player it is pared down to the minimum and tuned to the nth degree, something which I haven't found in any other player. Having said that I am working on control, but main priority is SQ.

There is no harm in doubt and skepticism, for it is through these that new discoveries are made. Richard P Feynman

 

http://mqnplayer.blogspot.co.uk/

Link to comment

It's all about SQ vs Convenience... :)

 

I don't know if its better to use it with a remote or with monitor, keyboard and mouse connected...

 

I will follow the development of your application.

 

And let us know the results about the comparation between MQn and JPlay... ;)

 

Regards

Link to comment
It's all about SQ vs Convenience... :)

 

I don't know if its better to use it with a remote or with monitor, keyboard and mouse connected...

 

I will follow the development of your application.

 

And let us know the results about the comparation between MQn and JPlay... ;)

 

Regards

 

Hi rdsu

 

I have been using MQn for a while now with PS/2 keyboard and mouse and a DVI monitor attached to the PC. The results are very good.

 

I imagine a USB mouse & keyboard might degrade SQ a bit, but i suggest that you audition it with the convenience of KVM and if you like it you can experiment with Foobar.

 

Enjoy the music!

 

Jonathan

Link to comment
I have been using MQn for a while now with PS/2 keyboard and mouse and a DVI monitor attached to the PC.

 

I would assume the keyboard and mouse interrupts, not to mention the DVI, would cause much more noise and jitter than any loop optimization can fix...

Link to comment

Is it possible for MQn to not change the CPU affinity of all other processes? It seriously degrades my overall system performance. In my case my other applications cannot get things done fast enough because all processes are stuck on one core. Everything is congested ending up degrading the SQ of MQn.

 

I feel that the proper implementation is to NOT be so aggressive in taking up the system resource (as the author of foobar XA once said). For example, if you give more IRQ priority to your DAC or system timer, that would not increase SQ but decrease it. Similarly, it maybe better to let processes get things done to free up CPU cycle for MQn.

 

By the way, great work! It has great musicality. It is definitely at least the second best player I heard out of a dozen.

Link to comment
Is it possible for MQn to not change the CPU affinity of all other processes? It seriously degrades my overall system performance. In my case my other applications cannot get things done fast enough because all processes are stuck on one core. Everything is congested ending up degrading the SQ of MQn.

 

I feel that the proper implementation is to NOT be so aggressive in taking up the system resource (as the author of foobar XA once said). For example, if you give more IRQ priority to your DAC or system timer, that would not increase SQ but decrease it. Similarly, it maybe better to let processes get things done to free up CPU cycle for MQn.

 

By the way, great work! It has great musicality. It is definitely at least the second best player I heard out of a dozen.

any particular processes you want excluded ? as MQn is a minimalist player you are only supposed to have a few services running anyway, only joking. I have run my music player this way for a couple of years using process lasso and even dropping the priority of most processes without too much problem. I could make a parameter for whether you want affinity set or not or maybe a text file with processes to exclude. What is the first best player you heard ? Maybe I can give up and use that.

There is no harm in doubt and skepticism, for it is through these that new discoveries are made. Richard P Feynman

 

http://mqnplayer.blogspot.co.uk/

Link to comment
It's all about SQ vs Convenience... :)

 

I don't know if its better to use it with a remote or with monitor, keyboard and mouse connected...

 

I will follow the development of your application.

 

And let us know the results about the comparation between MQn and JPlay... ;)

 

Regards

they liked mqn over jplay as a standalone player, but thought jplay had more body and staging when in 2 player mode, not bad considering jplay version was 2.7, which even I don't like and minimal machine optimisations. disappointing that they didn't listen to them critically for timing , one of my main issues with jplay.

There is no harm in doubt and skepticism, for it is through these that new discoveries are made. Richard P Feynman

 

http://mqnplayer.blogspot.co.uk/

Link to comment

Actually I misdirected myself, it is VGA.

 

No measurements - only my ears.

 

I set the priorities of keyboard & mouse to the lowest.

 

The alternative is Remote Desktop or VNC into the PC and that requires networking. I have networking turned off completely.

 

The question therefore is "Does KVM cause more noise than networking?".

Link to comment
they liked mqn over jplay as a standalone player, but thought jplay had more body and staging when in 2 player mode, not bad considering jplay version was 2.7, which even I don't like and minimal machine optimisations. disappointing that they didn't listen to them critically for timing , one of my main issues with jplay.

Did you tried to talk with them about that?

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...