Jump to content
IGNORED

HQ Player


Recommended Posts

Anyone run HQPlayer with the Yggdrasil? Yggy also has a closed form filter. How would you set the filters in HQP for the Yggdrasil? I don't have either, but with the new Roon integration I am strongly considering it.

 

I use HQPlayer with a Yggdrasil. To my ears, it sounds best when filter and dither are set for none and none with no upsampling (where the native PCM file is being sent to the DAC with no DSP). I know this isn't really what HQPlayer was intended for, but I still get better sound with HQPlayer set this way versus what I get from other players. Lately I've been using HQPlayer in conjunction with Roon (since the integration), and love it.

 

I have some SD DACs (Eastern Electric Supreme and Junior) and with these I definitely get the best sound when upsampling everything to DSD128 (poly-sinc, DSD7 is my favorite).

Link to comment

There has been a noticeable increase in people saying that the non "-2s" versions of the poly-sinc filters just don't perform like they used to (pre-3.12). And Miska has been perhaps a little vague on what performance users should expect now.

 

I can report that on both Windows and Mac, the poly-sinc flavors that also have a "-2s" version just don't perform adequately, period. I'm not able to upsample to DSD256 reliably even on an Intel i7 5930k (Windows 7). And HQPlayer takes almost 1 full minute to begin playback. I thought ASDM7 was being blamed for the long start time, but the issue seems to be with the non-2s filters. The long start time goes away when using a "-2s" filter.

 

Using the "-2s" versions works just fine (all the way to DSD512), as do the poly-sinc filters that do not have a corresponding "-2s" version and closed-form works just as well.

 

But it seems the non "-2s" versions of the filters just aren't working for anyone (could be wrong, just what it looks like in the forum) no higher than DSD128 and I'm wondering if they should be retired from HQPlayer?

 

As always, thank you Miska!

 

PS: Does using the "-2s" filters enforce integer multiples of the original sample rate? Or is "Pipeline SDM"? Using an iDSD Micro, I can't ever get DSD512 (Fs 48000), but DSD512 (Fs 44100) unless I drop back to a non "-2s" modulator.

Link to comment
There has been a noticeable increase in people saying that the non "-2s" versions of the poly-sinc filters just don't perform like they used to (pre-3.12).

 

I've compared performance of 3.11 release and 3.12 release polys-sinc filters and there are no notable differences, as expected since there are no changes in the code. Pipeline SDM has lower overhead than before, so when using it the overall performance is better (lower CPU load).

 

You can easily reinstall the old and new versions, or install those to a different directory and compare. But you need to use exactly same source content with exactly same settings to draw some performance conclusions. Just don't compare with ASDM7 as modulator because 3.12 will have higher load with it.

 

I can report that on both Windows and Mac, the poly-sinc flavors that also have a "-2s" version just don't perform adequately, period. I'm not able to upsample to DSD256 reliably even on an Intel i7 5930k (Windows 7).

 

That is strange, it should do fine. Although it could be that Win7 doesn't know how to take most of out of such new CPU.

 

Here's my i5-6600T Win10 machine doing upsampling to DSD256 (exaSound e28 DAC):

load1.png

 

Changing output rate to 12.3 MHz increases the load enough that the CPU doesn't manage to keep up any more, but it would for 48k-base content.

 

And HQPlayer takes almost 1 full minute to begin playback. I thought ASDM7 was being blamed for the long start time, but the issue seems to be with the non-2s filters. The long start time goes away when using a "-2s" filter.

 

Initialization time mostly depends on filter and conversion ratio, not modulator. ASDM7 uses a bit more CPU time (something like 1/5th increase or so) while playing than before and that is to be expected. Filter choice and conversion ratio naturally also has playing time CPU consumption consequences.

 

But it seems the non "-2s" versions of the filters just aren't working for anyone (could be wrong, just what it looks like in the forum) no higher than DSD128 and I'm wondering if they should be retired from HQPlayer?

 

They do work, and with CUDA offload can go to DSD512 too (to be confirmed when I get the new graphics card for Win10 machine).

 

PS: Does using the "-2s" filters enforce integer multiples of the original sample rate?

 

No... Same ratios are supported as for non-2s.

 

Or is "Pipeline SDM"?

 

No, it affects only work distribution to CPU cores.

 

Using an iDSD Micro, I can't ever get DSD512 (Fs 48000), but DSD512 (Fs 44100) unless I drop back to a non "-2s" modulator.

 

The iFi ASIO driver on Windows doesn't support 48k-base rates for DSD. Certainly works on Linux:

load2.png

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment

NO they should not be retired. I now use 2 versions of HQP for (i.e. )poly sinc short on 3.11 sounds better than poly sinc short 2s on 3.12 (that works without stuttering unlike poly sinc short on 3.12

There has been a noticeable increase in people saying that the non "-2s" versions of the poly-sinc filters just don't perform like they used to (pre-3.12). And Miska has been perhaps a little vague on what performance users should expect now.

 

I can report that on both Windows and Mac, the poly-sinc flavors that also have a "-2s" version just don't perform adequately, period. I'm not able to upsample to DSD256 reliably even on an Intel i7 5930k (Windows 7). And HQPlayer takes almost 1 full minute to begin playback. I thought ASDM7 was being blamed for the long start time, but the issue seems to be with the non-2s filters. The long start time goes away when using a "-2s" filter.

 

Using the "-2s" versions works just fine (all the way to DSD512), as do the poly-sinc filters that do not have a corresponding "-2s" version and closed-form works just as well.

 

But it seems the non "-2s" versions of the filters just aren't working for anyone (could be wrong, just what it looks like in the forum) no higher than DSD128 and I'm wondering if they should be retired from HQPlayer?

 

As always, thank you Miska!

 

PS: Does using the "-2s" filters enforce integer multiples of the original sample rate? Or is "Pipeline SDM"? Using an iDSD Micro, I can't ever get DSD512 (Fs 48000), but DSD512 (Fs 44100) unless I drop back to a non "-2s" modulator.

Link to comment

I don't think it's a cpu load issue :i.e. stuttering poly sync short uses no more than 2 or 3% more cpu than its 2s counterpart (both run by 3.12) and 10% less than closed form run by 3.11 , the 2 latter working perfectly. poly sinc short run by 3.12 on my machine leaves over 82% of its cpu inactive (RB to DSD 128)....

For comparison, here's load with poly-sinc-2s of the same content to 12.3 MHz:

[ATTACH=CONFIG]23119[/ATTACH]

Link to comment
I don't think it's a cpu load issue :i.e. stuttering poly sync short uses no more than 2 or 3% more cpu than its 2s counterpart (both run by 3.12) and 10% less than closed form run by 3.11 , the 2 latter working perfectly. poly sinc short run by 3.12 on my machine leaves over 82% of its cpu inactive (RB to DSD 128)....

 

But where do you look for the load? On Mac you need to enable CPU Histogram on Activity Monitor and check that none of the per-core graphs exceed ~75%. If you have a quad-core machine with HyperThreading, half of the virtual cores are useless (4 out of 8). So it will be exhausted at 50% load (as shown by the lower mid part of the Activity Monitor). If you have Pipeline SDM disabled on such machine, it will be exhausted at 25% load (because two real cores are fully loaded, two are mostly idling and four virtual cores are unusable).

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment

I loaded screenshots in my post #4237. To narrow the problem : stuttering occurs with n44 and n 48 PCM but not with dff files : poly sinc short is a working option to upsample a dff file to 128 with 3.12

But where do you look for the load? On Mac you need to enable CPU Histogram on Activity Monitor and check that none of the per-core graphs exceed ~75%. If you have a quad-core machine with HyperThreading, half of the virtual cores are useless (4 out of 8). So it will be exhausted at 50% load (as shown by the lower mid part of the Activity Monitor). If you have Pipeline SDM disabled on such machine, it will be exhausted at 25% load (because two real cores are fully loaded, two are mostly idling and four virtual cores are unusable).
Link to comment
I loaded screenshots in my post #4237. To narrow the problem : stuttering occurs with n44 and n 48 PCM but not with dff files : poly sinc short is a working option to upsample a dff file to 128 with 3.12

 

One of the screenshots was showing 96k to 5.6M. Rest were for closed-form. Here's my load figure for the same configuration and source format on my iMac:

Screen Shot 2016-01-04 at 01.04.54.png

 

1) Please disable CUDA offload and restart HQPlayer (if GPU is slower than CPU it will just slow down and doesn't show up in the load figures)

2) Please make sure you have AC power connected, so that OS X doesn't try to do any aggressive power management

3) Can you try 44.1k to 5.6M and 48k to 6.1M and see what happens?

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment

Yes, your proposed alternative works :

instead of going from 3.12 to 3.11 I can check/uncheck CUDA offload and relaunch.... As you mentioned there would still be benefits from 3.12 if I let unchecked but closed form CUDA enabled really sounds gorgeous on some recordings i.e. Heifetz/Reiner AP Brahms SACD this morning...

 

48k (or n48) to 6.1M never worked with osX and TEAC 501 (if you could find a way to automatically assign a fall back chosen filter when conflicts occur that would be great but I guess it's DAC specific, that if it had 2 clocks there would be no problem)

Thank you. screenshot has been taken with networaudiod after I got dropouts. The left of processor history occurred while CUDA offload was enabled and sound was stuttering.

 

btw : low number of processes, yes, but I had stuttering after I reinstated everything on my Yosemite/SD card as well as with native El Capitan/SSD.

 

You should try the SD card trick ! if you want to give trimmed OS X a try, my documented procedure or recipe is :

 

[TABLE]

[TR]

[TD=bgcolor: #fafafa]Right way to disable the "Sleep" image forever:

View the sleep image size

Type in the Terminal: ls -lh /private/var/vm/sleepimage

Disable sleep mode:

Type in the Terminal: sudo pmset -a hibernatemode 0

Remove the image:

Type in the Terminal: sudo rm /private/var/vm/sleepimage

Create a 0-byte file:

Type in the Terminal: sudo touch /private/var/vm/sleepimage

Make the file not writable:

Type in the Terminal: sudo chflags uchg /private/var/vm/sleepimage

Run these commands one by one and reboot. After reboot, re-run the first command to see the sleep image size. It should look like this (0B):

na29.png google_ad_section_end

/ message sig

__________________

[/TD]

[/TR]

[/TABLE]

debug dropout :

sudo nvram boot-args="dart=0x0"

limit writings

sudo mount -vuwo noatime /

mount | grep noatime

defaults write com.apple.NetworkBrowser DisableAirDrop -bool YES

sudo pmset sleep 0 2>/dev/null

sudo pmset disksleep 0 2>/dev/null

sudo pmset displaysleep 0 2>/dev/null

 

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.softwareupdate_firstrun_tasks.plist 2>/dev/null

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.softwareupdated.plist 2>/dev/null

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.usbmuxd.plist 2>/dev/null

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.usbd.plist 2>/dev/null

launchctl unload -w /System/Library/LaunchAgents/com.apple.bird.plist 2>/dev/null

launchctl unload -w /System/Library/LaunchAgents/com.apple.iTunesLibraryService.plist 2>/dev/null

launchctl unload -w /System/Library/LaunchAgents/com.apple.soagent.plist 2>/dev/null

launchctl unload -w /System/Library/LaunchAgents/com.apple.telephonyutilities.callservicesd.plist 2>/dev/null

launchctl unload -w /System/Library/LaunchAgents/com.apple.AddressBook.abd.plist 2>/dev/null

launchctl unload -w /System/Library/LaunchAgents/com.apple.AddressBook.AssistantService.plist 2>/dev/null

launchctl unload -w /System/Library/LaunchAgents/com.apple.AddressBook.SourceSync.plist 2>/dev/null

launchctl unload -w /System/Library/LaunchAgents/com.apple.SocialPushAgent.plist 2>/dev/null

launchctl unload -w /System/Library/LaunchAgents/com.apple.imagent.plist

launchctl unload -w /System/Library/LaunchAgents/com.apple.CalendarAgent.plist

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.apsd.plist

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.cmio.VDCAssistant.plist

defaults write com.apple.finder QuitMenuItem 1 2>/dev/null

defaults write -g NSDisableAutomaticTermination -bool YES 2>/dev/null

sudo defaults write /System/Library/LaunchAgents/com.apple.notificationcenterui KeepAlive -bool false 2>/dev/null

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist 2>/dev/null

sudo chmod 600 /System/Library/CoreServices/Search.bundle/Contents/MacOS/Search

killall SystemUIServer

killall Dock

defaults write com.apple.finder AnimateWindowZoom -bool false

defaults write com.apple.finder DisableAllAnimations -bool true

defaults write com.apple.systemsound "com.apple.sound.uiaudio.enabled" -int 0

sudo defaults write /System/Library/LaunchAgents/com.apple.notificationcenterui KeepAlive -bool false

launchctl unload -w /System/Library/LaunchAgents/com.apple.usernoted.plist

defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool NO

defaults write -g NSScrollViewRubberbanding -bool false

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.locationd.plist

launchctl unload -w /System/Library/LaunchAgents/com.apple.cloudphotosd.plist

defaults write NSGlobalDomain NSAppSleepDisabled -bool YES

 

 

script at launch for an easy life is : do shell script "for dev in $(mount | perl -lne 'print $1 if m%(^/dev/[^[:space:]]+) on /Volumes/.*%o')

do

diskutil unmount $dev >/dev/null 2>&1 &

done"

set DataSizeInMB to 3584

set NumSectors to ((2 * 1024 * DataSizeInMB))

set DeviceName to do shell script "hdid -nomount ram://" & NumSectors

do shell script "diskutil eraseVolume HFS+ RAMDiskData " & DeviceName

Capture d’écran 2016-01-04 à 11.16.51.jpg

One of the screenshots was showing 96k to 5.6M. Rest were for closed-form. Here's my load figure for the same configuration and source format on my iMac:

[ATTACH=CONFIG]23120[/ATTACH]

 

1) Please disable CUDA offload and restart HQPlayer (if GPU is slower than CPU it will just slow down and doesn't show up in the load figures)

2) Please make sure you have AC power connected, so that OS X doesn't try to do any aggressive power management

3) Can you try 44.1k to 5.6M and 48k to 6.1M and see what happens?

Link to comment

Does HQ Player allow for bit upsampling and therefore true lossless volume control like the recent NADs do? This would be great as volume would then be controlled on phone not a seperate remote?

Benchmark HGC DAC2 / Ncore NC400 / Anthony Gallo Strada 2 / Anthony Gallo TR-3D Sub / Van Damme 6mm Speaker Cable

Link to comment
Does HQ Player allow for bit upsampling and therefore true lossless volume control like the recent NADs do? This would be great as volume would then be controlled on phone not a seperate remote?

 

No idea what "bit upsampling" is supposed to be, but the short answer re lossless volume control is yes. Lots of posts about this. You may want to sharpen up your skills on the forum's advanced search to take advantage of previous commenters' knowledge on this and other subjects. Hint: Usually, you'll want to search only in posts, and get posts rather than full threads as search results.

One never knows, do one? - Fats Waller

The fairest thing we can experience is the mysterious. It is the fundamental emotion which stands at the cradle of true art and true science. - Einstein

Computer, Audirvana -> optical Ethernet to Fitlet3 -> Fibbr Alpha Optical USB -> iFi NEO iDSD DAC -> Apollon Audio 1ET400A Mini (Purifi based) -> Vandersteen 3A Signature.

Link to comment
Initialization time mostly depends on filter and conversion ratio, not modulator. ASDM7 uses a bit more CPU time (something like 1/5th increase or so) while playing than before and that is to be expected. Filter choice and conversion ratio naturally also has playing time CPU consumption consequences.

 

Thanks so much for making time here. My experience is that the start time between between "poly-sinc" and "poly-sinc-2s" is perhaps almost two orders of magnitude. I mean less that one second vs. nearly 100 seconds.

 

With due respect, this is why your posts are sometimes confusing to me. But I think you're saying you're not seeing the 90 second+ start time with poly-sinc/ASDM7/DSD256. Just to minimize confusion, let me be clear:

 

poly-sinc/ASDM7/DSD256 start time: 90 seconds +

poly-sinc-2s/ASDM7/DSD256 start time: less than one second

 

CUDA offload and Pipeline SDM have no affect on these times.

 

PS: Thanks for the info on the iFi Windows driver. That explains the Fs48000 issue.

Link to comment
To narrow the problem : stuttering occurs with n44 and n 48 PCM but not with dff files : poly sinc short is a working option to upsample a dff file to 128 with 3.12

 

I would like to confirm that all poly sinc filters are not stuttering while upsampling a dff file to DSD128 with 3.12, CUDA offload and Pipeline SDM enabled.

 

All poly sinc -2s, minringFIR and closed form filters are also not stuttering while upsampling n44 and n 48 PCM to DSD128, CUDA offload and Pipeline SDM enabled.

 

Just to reiterate - there is no stuttering with any filter option and PCM or dff upsampling to DSD128 when CUDA offload and Pipeline SDM are disabled.

 

 

 

Win 10 x64, i7-6700K, Quadro K2000.

Link to comment
Thanks so much for making time here. My experience is that the start time between between "poly-sinc" and "poly-sinc-2s" is perhaps almost two orders of magnitude. I mean less that one second vs. nearly 100 seconds.

 

With due respect, this is why your posts are sometimes confusing to me. But I think you're saying you're not seeing the 90 second+ start time with poly-sinc/ASDM7/DSD256. Just to minimize confusion, let me be clear:

 

poly-sinc/ASDM7/DSD256 start time: 90 seconds +

poly-sinc-2s/ASDM7/DSD256 start time: less than one second

 

I've been talking about CPU time while playing, that's what matters when it comes to stuttering/drop-outs. Initialization time is another thing.

 

So far I have not seen initialization times exceeding 30 seconds, so given your CPU I'm a bit surprised that you get such times. Can you check if at least four of your CPU cores are at full 100% while initializing? Can you also tell the source file sampling rate, filter and output sampling rate when you are seeing this, so I can compare with the same settings.

 

I've tried to make the initialization as fast as possible by utilizing as much as possible all the cores. Initialization is also cached until there's a change is source sampling rate, so next start is faster. And yes, it is completely expected that non-2s takes at least 10x more time to initialize than -2s.

 

CUDA offload and Pipeline SDM have no affect on these times.

 

They don't, only on CPU utilization while playing (IOW, running the algorithms)...

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment
I've been talking about CPU time while playing, that's what matters when it comes to stuttering/drop-outs. Initialization time is another thing.

 

So far I have not seen initialization times exceeding 30 seconds, so given your CPU I'm a bit surprised that you get such times. Can you check if at least four of your CPU cores are at full 100% while initializing? Can you also tell the source file sampling rate, filter and output sampling rate when you are seeing this, so I can compare with the same settings.

 

I've tried to make the initialization as fast as possible by utilizing as much as possible all the cores. Initialization is also cached until there's a change is source sampling rate, so next start is faster. And yes, it is completely expected that non-2s takes at least 10x more time to initialize than -2s.

 

Ok, it's more like at least 30x.

 

All of my input files are Redbook FLAC (44100/16 bit). For simplicity, I'm limiting my tests to poly-sinc[-2s]/ASDM7/DSD256(Fs44100).

 

If it's not too much to ask, can you provide a little technical background for why the non-2s modulators perform so dismally compared to the "-2s" versions?

 

I just tested more on a Mac Pro 6,1 and discovered some interesting things.

 

When waiting for playback (30 seconds) of poly-sinc/ASDM7/DSD256fs44.1, the cores are all at 100%. When playback begins, the cores are all at around 25%. But I haven't really been watching the sample rate on the Mac.

 

(Mac Pro 6,1 / Yosemite / 32GB RAM / 1X 3.7 GHz Quad-Core Intel Xeon E5)

 

poly-sinc/ASDM7/DSD256 (fs44100): 30 second start up, but plays OK.

poly-sinc/ASDM7/DSD256 (fs48000): 30 second start up, stutters badly.

 

poly-sinc-2s/ASDM7/DSD256 (fs44100): Nearly instant startup, plays perfectly.

poly-sinc-2s/ASDM7/DSD256 (fs48000): Nearly instant startup, plays perfectly.

 

Just so you don't spend too much time on this, the "-2s" versions are working fine for me. But my experience does not necessarily jibe with what you're seeing (or maybe I'm not understanding what I should be expecting), so I'm just passing along what I'm seeing. Perhaps some of the problem for me is the iFi Micro and the capability of fs48000 (which apparently won't work on Windows).

 

Thanks for your time!

Link to comment

This may be a stupid question, but where does the CUDA offload indicator appear? I have just installed a 750ti based video card, and I have yet to see a change in performance or an indicator icon/dialog suggesting it is working in HQPlayer. FWIW, I have installed 7.5 drivers and see them in CUDA Z. Will the GPU show up in in Device Manager or somewhere else? CUDA offload is checked of course.

Forrest:

Win10 i9 9900KS/GTX1060 HQPlayer4>Win10 NAA

DSD>Pavel's DSC2.6>Bent Audio TAP>

Parasound JC1>"Naked" Quad ESL63/Tannoy PS350B subs<100Hz

Link to comment
This may be a stupid question, but where does the CUDA offload indicator appear? I have just installed a 750ti based video card, and I have yet to see a change in performance or an indicator icon/dialog suggesting it is working in HQPlayer. FWIW, I have installed 7.5 drivers and see them in CUDA Z. Will the GPU show up in in Device Manager or somewhere else? CUDA offload is checked of course.

 

If you look at the bottom of the window when playback first starts (it's fleeting and only lasts 3 seconds) you should see "offload: resampler=enabled" if CUDA offload is working.

Link to comment

Thank you!

 

I seem to have a problem then. Mine says: resampler= enabled convolution=disabled

 

CUDA offload is checked, and I am not using the convolution engine.

 

In my case it says =

If you look at the bottom of the window when playback first starts (it's fleeting and only lasts 3 seconds) you should see "offload: resampler=enabled" if CUDA offload is working.

Forrest:

Win10 i9 9900KS/GTX1060 HQPlayer4>Win10 NAA

DSD>Pavel's DSC2.6>Bent Audio TAP>

Parasound JC1>"Naked" Quad ESL63/Tannoy PS350B subs<100Hz

Link to comment
Thank you!

 

I seem to have a problem then. Mine says: resampler= enabled convolution=disabled

 

CUDA offload is checked, and I am not using the convolution engine.

 

In my case it says =

 

Ok, "resampler = enabled" means CUDA offload is working. "convolution = disabled" means you're not using convolution.

 

So you're good!

Link to comment

Bummer... It doesn't seem to do much of anything for me then.

Ok, "resampler = enabled" means CUDA offload is working. "convolution = disabled" means you're not using convolution.

 

So you're good!

Forrest:

Win10 i9 9900KS/GTX1060 HQPlayer4>Win10 NAA

DSD>Pavel's DSC2.6>Bent Audio TAP>

Parasound JC1>"Naked" Quad ESL63/Tannoy PS350B subs<100Hz

Link to comment

If it's not too much to ask, can you provide a little technical background for why the non-2s modulators perform so dismally compared to the "-2s" versions?

 

You mean "dismally" in terms of CPU time? Just because of complexity... Moore's law should cut it to about 1/4th in four years.

 

When waiting for playback (30 seconds) of poly-sinc/ASDM7/DSD256fs44.1, the cores are all at 100%. When playback begins, the cores are all at around 25%.

 

Then it performs as expected...

 

poly-sinc/ASDM7/DSD256 (fs44100): 30 second start up, but plays OK.

 

Practically same figure as I get on the i5-6600T.

 

If you stop and start again for the same source rate, then the start is almost instant. So as long as you stick to RedBook content, you need to wait only once at the beginning of listening.

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

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