DiAna, a software Distortion Analyzer

@Edmond
Much better.
If I press the monitor button all other buttons are greys out except for the about button. The only way I can get out of the monitor is clicking the about button.
Cheers,
Hi David,

Weird! I have no explanation for this strange behavior other than the file is damaged. Maybe it's gone when you reload the file from my website (and note the password for unzipping). If it's still there, I'm afraid you have to wait until the major update is ready.

Cheers, E.
 
WINE

DiAna crashes WINE (a Windows "emulator" on Mac/Linux) as soon some menu item is selected.
E.g. ARTA or Audiotester run fine with WINE.
Hi zfe,

I'm sorry to hear it doesn't work under WINE. On the other hand I'm not really surprised, as I have never tested the program under this particular environment. It's already a hell of job to make it work under the many MS operating systems and many different sound cards and registries polluted with rubbish. Not to mention those stupid virus scanners that start wining about so called viruses (reed: false positives). So it's very unlikely I will have time to make it also compatible with WINE. Sorry.

Cheers, E.
 
Hi zfe,

I'm sorry to hear it doesn't work under WINE. On the other hand I'm not really surprised, as I have never tested the program under this particular environment. It's already a hell of job to make it work under the many MS operating systems and many different sound cards and registries polluted with rubbish. Not to mention those stupid virus scanners that start wining about so called viruses (reed: false positives). So it's very unlikely I will have time to make it also compatible with WINE. Sorry.

Cheers, E.

Please don't take this the wrong way, but I would highly suggest porting your code and writing this in a modern framework to avoid all these troubles at some point in the future. You can be far more productive also in a modern framework. Debugging is also going to be easier.
 
DiAna crashes WINE (a Windows "emulator" on Mac/Linux) as soon some menu item is selected.
E.g. ARTA or Audiotester run fine with WINE.

Hi zfe,

I'm sorry to hear it doesn't work under WINE. On the other hand I'm not really surprised, as I have never tested the program under this particular environment. It's already a hell of job to make it work under the many MS operating systems and many different sound cards and registries polluted with rubbish. Not to mention those stupid virus scanners that start wining about so called viruses (reed: false positives). So it's very unlikely I will have time to make it also compatible with WINE. Sorry.

Cheers, E.

Just, I tried the DiAna under Wine in Linux Mint, it works normally with the only message popup that there is no any ASIO driver found.
No crash, no hangs!
 
I run Wine 3.0 on Mac. I also first get ASIO driver not found, but then if I try to do something by selecting something from the menu it crashes. I attached the crash report.
Code:
Unhandled exception: page fault on read access to 0xffffffff in 32-bit code (0x90211afa).
Register dump:
 CS:001b SS:0023 DS:0023 ES:0023 FS:1007 GS:000f
 EIP:90211afa ESP:0032eaa4 EBP:0032eb2c EFLAGS:00010206(  R- --  I   - -P- )
 EAX:00003d88 EBX:a028be88 ECX:a0520148 EDX:00000000
 ESI:00003d88 EDI:90211aef
Stack dump:
0x0032eaa4:  00000000 00000000 00000000 00000000
0x0032eab4:  0093797c 57828a46 00000000 00030040
0x0032eac4:  00934310 0032eafc 42dd43c3 00030040
0x0032ead4:  08000000 00000000 00000000 00110000
0x0032eae4:  00000000 00937970 0000130c 42c68e73
0x0032eaf4:  00000006 00030040 0032eb2c 42c68f44
0200: sel=1007 base=7ffc0000 limit=00000fff 32-bit rw-
Backtrace:
=>0 0x90211afa __stack_chk_fail+0x19() in libsystem_c.dylib (0x0032eb2c)
  1 0x42c68300 in comctl32 (+0x582ff) (0x0032ee58)
  2 0x42ddfe8a WINPROC_wrapper+0x19() in user32 (0x0032ee88)
  3 0x42de2981 call_dialog_proc+0xa0() in user32 (0x0032eec8)
  4 0x42de1b05 WINPROC_CallProcWtoA+0x614() in user32 (0x0032f378)
  5 0x42de2ad5 WINPROC_CallDlgProcW+0xb4() in user32 (0x0032f3a8)
  6 0x42d6b973 DefDlgProcW+0x152() in user32 (0x0032f3e8)
  7 0x42ddfe8a WINPROC_wrapper+0x19() in user32 (0x0032f418)
  8 0x42de1221 call_window_proc+0xa0() in user32 (0x0032f458)
  9 0x42de1494 WINPROC_call_window+0x1f3() in user32 (0x0032f498)
  10 0x42dab44e call_window_proc+0x8d() in user32 (0x0032f4f8)
  11 0x42da28de send_message+0xfd() in user32 (0x0032f558)
  12 0x42da2bca SendMessageW+0x59() in user32 (0x0032f5b8)
  13 0x42d707d7 in user32 (+0x307d6) (0x0032f8a8)
  14 0x42d6eb4a CreateDialogIndirectParamA+0x39() in user32 (0x0032f8dc)
  15 0x42c64618 PROPSHEET_PropertySheet+0x237() in comctl32 (0x0032f938)
  16 0x42c63a3a PropertySheetA+0x319() in comctl32 (0x0032f9a8)
  17 0x0040b858 in diana-demo (+0xb857) (0x0032f9f8)
  18 0x0040b76d in diana-demo (+0xb76c) (0x0032fa10)
  19 0x0040b694 in diana-demo (+0xb693) (0x0032fa24)
  20 0x0040b64e in diana-demo (+0xb64d) (0x0032fa30)
  21 0x004046cc in diana-demo (+0x46cb) (0x0032fa58)
  22 0x0040537e in diana-demo (+0x537d) (0x0032fa7c)
  23 0x0040466d in diana-demo (+0x466c) (0x0032fa9c)
  24 0x00404630 in diana-demo (+0x462f) (0x0032fab8)
  25 0x42ddfe8a WINPROC_wrapper+0x19() in user32 (0x0032fae8)
  26 0x42de1221 call_window_proc+0xa0() in user32 (0x0032fb28)
  27 0x42de1494 WINPROC_call_window+0x1f3() in user32 (0x0032fb68)
  28 0x42dab44e call_window_proc+0x8d() in user32 (0x0032fbc8)
  29 0x42da28de send_message+0xfd() in user32 (0x0032fc28)
  30 0x42da2c42 SendMessageA+0x61() in user32 (0x0032fc84)
  31 0x00405791 in diana-demo (+0x5790) (0x0032fcc4)
  32 0x0040a061 in diana-demo (+0xa060) (0x0032fcdc)
  33 0x0040466d in diana-demo (+0x466c) (0x0032fcfc)
  34 0x00404630 in diana-demo (+0x462f) (0x0032fd18)
  35 0x42ddfe8a WINPROC_wrapper+0x19() in user32 (0x0032fd48)
  36 0x42de1221 call_window_proc+0xa0() in user32 (0x0032fd88)
  37 0x42de1494 WINPROC_call_window+0x1f3() in user32 (0x0032fdc8)
  38 0x42da9c43 DispatchMessageA+0xd2() in user32 (0x0032fe6c)
  39 0x00403215 in diana-demo (+0x3214) (0x0032fee0)
  40 0x0043ade6 in diana-demo (+0x3ade5) (0x0032ff20)
  41 0x7b45177c call_process_entry+0xb() in kernel32 (0x0032ff38)
  42 0x7b451903 start_process+0x152() in kernel32 (0x0032ffdc)
  43 0x7b45178a start_process_wrapper+0x9() in kernel32 (0x0032ffec)
0x90211afa __stack_chk_fail+0x19 in libsystem_c.dylib: 	
Modules:
Module	Address			Debug info	Name (222 modules)
PE	  400000-  475000	CodeView        diana-demo
PE	40001000-401b6000	Deferred        libwine.1.0.dylib
ELF	42a9c000-42ab6000	Deferred        version<elf>
  \-PE	42aa0000-42ab4000	\               version
ELF	42ab6000-42afb000	Deferred        winspool<elf>
  \-PE	42ac0000-42af2000	\               winspool
ELF	42c00000-42d39000	Stabs           comctl32<elf>
  \-PE	42c10000-42d17000	\               comctl32
ELF	42d39000-42f1e000	Stabs           user32<elf>
  \-PE	42d40000-42ed7000	\               user32
ELF	42f1e000-42f9a000	Deferred        advapi32<elf>
  \-PE	42f20000-42f82000	\               advapi32
ELF	42f9a000-42fc5000	Deferred        msacm32<elf>
  \-PE	42fa0000-42fc1000	\               msacm32
ELF	42fc5000-42fea000	Deferred        imm32<elf>
  \-PE	42fd0000-42fe5000	\               imm32
ELF	43800000-43933000	Deferred        gdi32<elf>
  \-PE	43810000-438c9000	\               gdi32
ELF	43933000-43a37000	Deferred        comdlg32<elf>
  \-PE	43940000-43a17000	\               comdlg32
ELF	43a37000-43c95000	Deferred        shell32<elf>
  \-PE	43a40000-43c57000	\               shell32
ELF	43c95000-43d1c000	Deferred        shlwapi<elf>
  \-PE	43ca0000-43cf7000	\               shlwapi
ELF	43d1c000-43e7a000	Deferred        ole32<elf>
  \-PE	43d20000-43e3c000	\               ole32
ELF	43e7a000-43f0a000	Deferred        rpcrt4<elf>
  \-PE	43e80000-43ee8000	\               rpcrt4
ELF	43f0a000-43fca000	Deferred        winmm<elf>
  \-PE	43f10000-43fbb000	\               winmm
PE	43fca000-44053000	Deferred        libfreetype.6.dylib
ELF	44053000-44103000	Deferred        winemac<elf>
  \-PE	44060000-440d7000	\               winemac
PE	441e7000-441fc000	Deferred        commercecore
ELF	45b82000-45bbb000	Deferred        uxtheme<elf>
  \-PE	45b90000-45bb4000	\               uxtheme
PE	45bbb000-45bf5000	Deferred        familycontrols
ELF	4b371000-4b3b8000	Deferred        usp10<elf>
  \-PE	4b380000-4b3b3000	\               usp10
ELF	7b400000-7b7fc000	Stabs           kernel32<elf>
  \-PE	7b410000-7b7bf000	\               kernel32
ELF	7bc00000-7bcf1000	Deferred        ntdll<elf>
  \-PE	7bc10000-7bcb7000	\               ntdll
ELF	7bf00000-7bf03000	Deferred        <wine-loader>
PE	90008000-9000e000	Deferred        libcompiler_rt.dylib
PE	9000e000-90013000	Deferred        libcorevmclient.dylib
PE	90013000-90056000	Deferred        libglu.dylib
PE	9005d000-901b4000	Deferred        libblas.dylib
PE	901b4000-90247000	Stabs           libsystem_c.dylib
PE	90249000-90577000	Deferred        foundation
PE	90577000-90585000	Deferred        applefscompression
PE	90585000-911a4000	Deferred        appkit
PE	911a4000-911b1000	Deferred        libbz2.1.0.dylib
PE	911b1000-91296000	Deferred        libcrypto.0.9.8.dylib
PE	91342000-91380000	Deferred        libauto.dylib
PE	91380000-91390000	Deferred        libgl.dylib
PE	91390000-9153d000	Deferred        quartzcore
PE	9153d000-91545000	Deferred        libsystem_pthread.dylib
PE	91545000-91631000	Deferred        diskimages
PE	918ae000-918bc000	Deferred        librarian
PE	918bc000-919f4000	Deferred        desktopservicespriv
PE	919f4000-91ad0000	Deferred        launchservices
PE	91ad0000-91b98000	Deferred        discrecording
PE	91b98000-91ba4000	Deferred        libcommoncrypto.dylib
PE	91ba4000-91bad000	Deferred        libgfxshared.dylib
PE	91e1a000-91e9b000	Deferred        osservices
PE	91e9b000-91ea1000	Deferred        print
PE	91ea1000-91ebf000	Deferred        libsystem_kernel.dylib
PE	91f78000-91f83000	Deferred        speechsynthesis
PE	91ff4000-9205e000	Deferred        systemconfiguration
PE	9205e000-9206a000	Deferred        crashreportersupport
PE	92097000-92130000	Deferred        metadata
PE	92196000-922a4000	Deferred        imageio
PE	922a4000-922fb000	Deferred        scalableuserinterface
PE	922fb000-92489000	Deferred        cfnetwork
PE	92489000-9248c000	Deferred        libradiance.dylib
PE	9248c000-9248d000	Deferred        coreservices
PE	9248d000-9257e000	Deferred        libiconv.2.dylib
PE	9257e000-92581000	Deferred        securityhi
PE	92a2c000-92a51000	Deferred        libjpeg.dylib
PE	93399000-9339d000	Deferred        libutil.dylib
PE	933b3000-933e5000	Deferred        gss
PE	933e5000-933ea000	Deferred        libmacho.dylib
PE	933ea000-9343b000	Deferred        opencl
PE	93444000-93455000	Deferred        libsasl2.2.dylib
PE	93455000-9345c000	Deferred        libunwind.dylib
PE	934b2000-934c1000	Deferred        sharing
PE	934c1000-93500000	Deferred        navigationservices
PE	93500000-93511000	Deferred        langanalysis
PE	9353b000-9393b000	Deferred        coregraphics
PE	9393b000-9394a000	Deferred        opengl
PE	939c5000-939e3000	Deferred        libresolv.9.dylib
PE	939e3000-93c48000	Deferred        coredata
PE	93c48000-93c49000	Deferred        libopenscriptingutil.dylib
PE	93c89000-93cae000	Deferred        libxpc.dylib
PE	93cae000-93cb8000	Deferred        speechrecognition
PE	93cb8000-93dcb000	Deferred        libsqlite3.dylib
PE	93dcb000-93dd6000	Deferred        servicemanagement
PE	93ded000-93df6000	Deferred        liblaunch.dylib
PE	93df6000-93e00000	Deferred        commonauth
PE	93e00000-940eb000	Deferred        vimage
PE	940eb000-94105000	Deferred        kerberos
PE	94105000-94179000	Deferred        searchkit
PE	94179000-941c9000	Deferred        hiservices
PE	949dc000-949e5000	Deferred        libcgcms.a.dylib
PE	949e5000-949fe000	Deferred        cfopendirectory
PE	94d00000-94d04000	Deferred        tcc
PE	94d04000-94d41000	Deferred        remoteviewservices
PE	94d41000-94e10000	Deferred        backup
PE	9519f000-95286000	Deferred        coreui
PE	95286000-9550d000	Deferred        security
PE	9550d000-9580f000	Deferred        carboncore
PE	959a1000-95a72000	Deferred        libvdsp.dylib
PE	95a72000-95a86000	Deferred        imagecapture
PE	95b32000-95b94000	Deferred        symbolication
PE	95b94000-95bcb000	Deferred        iconservices
PE	95bcb000-96000000	Deferred        facecore
PE	96000000-96051000	Deferred        libcorecrypto.dylib
PE	961c2000-961df000	Deferred        libcrfsuite.dylib
PE	961df000-961e9000	Deferred        diskarbitration
PE	9621a000-96292000	Deferred        iokit
PE	962ef000-963ee000	Deferred        libjp2.dylib
PE	963ee000-96462000	Deferred        ats
PE	96462000-96463000	Deferred        audiounit
PE	9667d000-9667f000	Deferred        trustevaluationagent
PE	966e7000-966e8000	Deferred        cocoa
PE	9673e000-96799000	Deferred        libtiff.dylib
PE	96799000-967e0000	Deferred        libcurl.4.dylib
PE	967e0000-96880000	Deferred        libcorestorage.dylib
PE	96880000-96883000	Deferred        libcvmspluginsupport.dylib
PE	96883000-96884000	Deferred        libodfde.dylib
PE	96884000-96a4b000	Deferred        libicucore.a.dylib
PE	96a4b000-96a98000	Deferred        libcups.2.dylib
PE	96a98000-96a9a000	Deferred        liblangid.dylib
PE	96a9a000-96ab6000	Deferred        libpng.dylib
PE	96ae2000-96b7f000	Deferred        qd
PE	96b7f000-96baa000	Deferred        libxslt.1.dylib
PE	96bd5000-96c0c000	Deferred        libssl.0.9.8.dylib
PE	96c0c000-96c76000	Deferred        datadetectorscore
PE	97b18000-97b1a000	Deferred        libdiagnosticmessagesclient.dyli
PE	97b1a000-97b1b000	Deferred        carbon
PE	97b1b000-97b1e000	Deferred        libquarantine.dylib
PE	97b1e000-97b57000	Deferred        ldap
PE	98318000-9831c000	Deferred        loginuicore
PE	9831c000-98335000	Deferred        libsystem_malloc.dylib
PE	98335000-983ac000	Deferred        securityfoundation
PE	983ac000-98470000	Deferred        coretext
PE	98470000-98475000	Deferred        libgif.dylib
PE	984d4000-984e7000	Deferred        libsystem_asl.dylib
PE	98768000-9876a000	Deferred        libsystem.b.dylib
PE	9876a000-987d6000	Deferred        heimdal
PE	987d6000-987da000	Deferred        libdyld.dylib
PE	9881a000-9881f000	Deferred        libheimdal-asn1.dylib
PE	9881f000-98829000	Deferred        libsystem_notify.dylib
PE	98829000-98834000	Deferred        directoryservice
PE	98853000-98858000	Deferred        iosurface
PE	98861000-9888d000	Deferred        libsystem_network.dylib
PE	9888d000-98893000	Deferred        libsystem_platform.dylib
PE	98934000-98940000	Deferred        libcsfde.dylib
PE	99645000-9967e000	Deferred        mediakit
PE	9967f000-99688000	Deferred        libcopyfile.dylib
PE	99688000-996b7000	Deferred        debugsymbols
PE	996b7000-996f5000	Deferred        libglimage.dylib
PE	996f5000-9971a000	Deferred        libc++abi.dylib
PE	9971a000-99a90000	Deferred        hitoolbox
PE	99a90000-99a9d000	Deferred        libkxld.dylib
PE	99a9d000-99aa6000	Deferred        libsystem_dnssd.dylib
PE	99aa6000-99abb000	Deferred        multitouchsupport
PE	99b5a000-99b5f000	Deferred        libcache.dylib
PE	99b5f000-99bb5000	Deferred        libc++.1.dylib
PE	99bb5000-99bba000	Deferred        libpam.2.dylib
PE	99bbc000-99bfd000	Deferred        bom
PE	99bfd000-99bff000	Deferred        libremovefile.dylib
PE	99bff000-99c07000	Deferred        netfs
PE	99c0f000-99c19000	Deferred        carbonsound
PE	99ca0000-99ca1000	Deferred        applicationservices
PE	99cc7000-99db4000	Deferred        libxml2.2.dylib
PE	99db4000-99de6000	Deferred        libsystem_m.dylib
PE	99de6000-99fe9000	Deferred        corefoundation
PE	9a01a000-9a061000	Deferred        libfontregistry.dylib
PE	9a487000-9a4b7000	Deferred        systemadministration
PE	9a4ba000-9a4bb000	Deferred        libkeymgr.dylib
PE	9a5cc000-9a5d0000	Deferred        help
PE	9a5d0000-9a65c000	Deferred        coresymbolication
PE	9a65c000-9a689000	Deferred        dictionaryservices
PE	9a6f0000-9a6f1000	Deferred        accelerate
PE	9a6f1000-9a7ef000	Deferred        libfontparser.dylib
PE	9a7ef000-9a89c000	Deferred        libvmisc.dylib
PE	9a89c000-9a8e5000	Deferred        performanceanalysis
PE	9a8e5000-9a944000	Deferred        ae
PE	9a9ab000-9a9be000	Deferred        libbsm.0.dylib
PE	9a9c5000-9a9c9000	Deferred        libcgxtype.a.dylib
PE	9a9c9000-9a9e4000	Deferred        openscripting
PE	9a9e4000-9aa3a000	Deferred        coreaudio
PE	9aa52000-9aa7e000	Deferred        chunkinglibrary
PE	9aa7e000-9aa8a000	Deferred        netauth
PE	9aa8a000-9ad80000	Deferred        coreimage
PE	9ad80000-9af29000	Deferred        libobjc.a.dylib
PE	9af99000-9af9b000	Deferred        libsystem_blocks.dylib
PE	9af9e000-9afa1000	Deferred        libsystem_configuration.dylib
PE	9afa1000-9afca000	Deferred        libsystem_info.dylib
PE	9afca000-9afd9000	Deferred        libz.1.dylib
PE	9afd9000-9afe6000	Deferred        opendirectory
PE	9aff0000-9aff1000	Deferred        veclib
PE	9b046000-9b049000	Deferred        efilogin
PE	9b3de000-9b552000	Deferred        audiotoolbox
PE	9b6d2000-9ba98000	Deferred        liblapack.dylib
PE	9ba98000-9ba9a000	Deferred        libunc.dylib
PE	9ba9a000-9baee000	Deferred        htmlrendering
PE	9bb21000-9bb28000	Deferred        aosnotification
PE	9bb28000-9bb37000	Deferred        libxar.1.dylib
PE	9bb43000-9bbdb000	Deferred        ink
PE	9bbdb000-9bc03000	Deferred        corevideo
PE	9c061000-9c066000	Deferred        commonpanels
PE	9c066000-9c068000	Deferred        libsystem_sandbox.dylib
PE	9c068000-9c091000	Deferred        librip.a.dylib
PE	9c091000-9c0c2000	Deferred        coreservicesinternal
PE	9c0c2000-9c11f000	Deferred        printcore
PE	9c11f000-9c13c000	Deferred        ubiquity
PE	9c15f000-9c1f1000	Deferred        colorsync
PE	9c1f1000-9c20c000	Deferred        generationalstorage
PE	9c262000-9c27b000	Deferred        libdispatch.dylib
Threads:
process  tid      prio (all id:s are in hex)
00000008 (D) H:\Audio Hifi\Audio Software\DiAna\Diana\Diana-demo.exe
	00000044    2
	00000043    2
	00000042    2
	00000041    2
	0000003f    0
	0000003e   -2
	0000003d    2
	0000003c   -2
	0000003b   -2
	0000003a   -2
	00000009    0 <==
0000000e services.exe
	00000032    0
	0000002a    0
	00000025    0
	0000001d    0
	00000018    0
	00000013    0
	00000010    0
	0000000f    0
00000011 winedevice.exe
	00000017    0
	00000016    0
	00000012    0
0000001b winedevice.exe
	00000024    0
	0000001f    0
	0000001e    0
	0000001c    0
00000022 plugplay.exe
	00000027    0
	00000026    0
	00000023    0
00000028 winedevice.exe
	00000036    0
	00000035    0
	00000034    0
	00000033    0
	00000031    0
	0000002c    0
	0000002b    0
	00000029    0
0000002f explorer.exe
	00000039    0
	00000038    0
	00000037    0
	00000030    0
System information:
    Wine build: wine-3.0
    Platform: i386
    Version: Windows XP
    Host system: Darwin
    Host version: 13.4.0
 
@ zfe = I hadn't done a long running of DiAna on Linux Mint.
I have no any ASIO driver either on it, it is a general home PC not for my lab.
Just for curiosity, I downloaded the DiAna on mint...I run it...make some clicks on menu and close it.
That's it!
Perhaps, if I run it to the real life with asio driver, it will be hanged and to Linux Mint.
 
Please don't take this the wrong way, but I would highly suggest porting your code and writing this in a modern framework to avoid all these troubles at some point in the future. You can be far more productive also in a modern framework. Debugging is also going to be easier.

Hi Chris,

I don't see how I could avoid these problems by using a "modern framework". Almost all problems were not caused by bugs of DiAna itself, rather by corrupted or pseudo ASIO drivers residing in the registry. As I keep own PC as clean as possible, I simply did not take into account that other PC's where not that clean.
The problem was that during startup all ASIO drivers found in the registry, including fake or corrupted ones, were examined in order to assess samplings rates, buffer size etc. That went wrong sometimes, resulting in a hang.
Now I've followed a different route: Only all driver names are scanned and it is up to the user which of them will be further interrogated to retrieve samplings rates, buffer size etc. In case it went wrong, now the user knows which driver is culprit and he can avoid a next hang.
BTW, not all has been written in plain C. The ASIO interface has been wirtten in C++. Doing this also in plain C would be a PITA.

Regarding graphics, how advantageous it is to switch to WPF? Does it solve the jitter problem under W10? Have a look post 167 (and further) to see what I mean by that.

Cheers, E.

edit: The new version (1.48.1) not yet uploaded on my website. I hope Manolis will test it first.
 
Last edited:
Hi Chris,

I don't see how I could avoid these problems by using a "modern framework". Almost all problems were not caused by bugs of DiAna itself, rather by corrupted or pseudo ASIO drivers residing in the registry. As I keep own PC as clean as possible, I simply did not take into account that other PC's where not that clean.
The problem was that during startup all ASIO drivers found in the registry, including fake or corrupted ones, were examined in order to assess samplings rates, buffer size etc. That went wrong sometimes, resulting in a hang.
Now I've followed a different route: Only all driver names are scanned and it is up to the user which of them will be further interrogated to retrieve samplings rates, buffer size etc. In case it went wrong, now the user knows which driver is culprit and he can avoid a next hang.
BTW, not all has been written in plain C. The ASIO interface has been wirtten in C++. Doing this also in plain C would be a PITA.

Regarding graphics, how advantageous it is to switch to WPF? Does it solve the jitter problem under W10? Have a look post 167 (and further) to see what I mean by that.

Cheers, E.

edit: The new version (1.48.1) not yet uploaded on my website. I hope Manolis will test it first.

Yeah, I know it's not directly related to the issue people experienced. In general it will make it easier to update, maintain, and add new features. With modern exception handling there's no reason for it to crash the app either. There are no new commercial GUI applications developed using Win32 alone for very good reasons.

WPF will probably fix the issue you reference in post 167 because the problem stems from trying to use legacy drawing methods. To be fair, it will probably introduce a host of other new issues because it's a total paradigm shift from what you're doing now.

At least do yourself a favor and get a copy of Visual Studio 2017 and play around with it. It has to be light years ahead of Digital Mars, especially the IDE and profiler.
 
Jittery W10

[...]I
WPF will probably fix the issue you reference in post 167 because the problem stems from trying to use legacy drawing methods. To be fair, it will probably introduce a host of other new issues because it's a total paradigm shift from what you're doing now.
[...]

Hi Chris,

Dou you know of an existing application using WPF, that does not jitter under W10?
BTW, last year there was a build of W10 that didn't suffer from jitter. So this proves it can be made jitter-free. Regrettably, all subsequent versions jitter again.
BTW2: I don't like W10, a crippled mule as a result of cross-pollination between a desktop OS and cell-phone OS (I do have W10, but still prefer W7).

Cheers, E.
 
False positive

Getting a web side alert ... mira :wave:
BB

Out of 67 AV scanners, only Bitdefender thinks my website contains malicious stuff, see below. You better throw away that POC.

Cheers, E.
 

Attachments

  • BDAV.png
    BDAV.png
    30.2 KB · Views: 412
Hi Chris,

Dou you know of an existing application using WPF, that does not jitter under W10?
BTW, last year there was a build of W10 that didn't suffer from jitter. So this proves it can be made jitter-free. Regrettably, all subsequent versions jitter again.
BTW2: I don't like W10, a crippled mule as a result of cross-pollination between a desktop OS and cell-phone OS (I do have W10, but still prefer W7).

Cheers, E.

I'll have to try to find something, but I don't know of one off the top of my head. I'll try an empty WPF project tonight if I can. The rendering performance while resizing the window is also going to heavily depend on what you're drawing also.

I wouldn't even call this an issue really. A lot of applications are choppy while being resized. I think Windows by default disables that on a lot of machines. Microsoft Outlook, for example, does not resize all that smoothly on a Core i7-7820X OC to 4.7GHz with 32GB of RAM and an AMD RX580 8GB graphics card...

I mean, I certainly wouldn't rewrite parts of my application to solve some minor jitter when resizing the window dynamically.
 
Update

To all,

A new version of DiAna is available: V1.48.2 As I've compiled it with another tool (a Symantec C++ compiler) it triggers far less false positive, only two AV scanners are wining about a PUP (potentially unwanted program). Even Bitdefender shuts its mouth. On the other hand, that program has still issues with my website, that is, with the directory which contains DiAna. Even after I've deleted all the content, that stupid program still thinks it's unsafe. :rolleyes:
V1.48.2 differs in the way the ASIO drivers are scanned. In previous versions all of them were scanned during startup in a single run. If the registry contains rubbish (fake and/or corrupted drivers) this could cause serious problems or even a hang.
With the new version this won't happen, as it is up to the user which driver will be loaded and leaving the wrong ones out of consideration.
It is also possible to select no driver at all. This might be useful in case of "read from file" or "simulate data" mode.

Cheers, E.
 
Member
Joined 2004
Paid Member
I finally had a little time to play with Diana on the RTX. It seems to work OK except for some problem rendering the fonts for the frequency in the plot. That and the scaling are not too clear in either the screen or the PDF attached. A few more reference lines at log spacing for frequency would be helpful.

I used exactly the same setup with Praxis (the other plot) and I think there are no major deviations in the distortion levels.
 

Attachments

  • RTX Loopback 192-24.pdf
    156.3 KB · Views: 63
  • RTX Loopback 16M FFT 192-24.PNG
    RTX Loopback 16M FFT 192-24.PNG
    76.7 KB · Views: 335
  • Diana-RTX Statistics-distortion harmonics.PNG
    Diana-RTX Statistics-distortion harmonics.PNG
    7.3 KB · Views: 325
@Edmond = Nice work. Have you in mind that the control panel of driver doesn't work inside from DiAna. The same was and at the previous version 1.48.1

@Martin = For statistics window seems that you had 20-20K range (20K LPF), Fs_192K, gen_997Hz. Do you keep the rest of the DiAna setup? DAC/ADC calibration for specific knobs settings and the output level?
 
Member
Joined 2004
Paid Member
All I changed from the default was the bandwidth. I have not even looked into how the calibration process works. I'll try to show the RTX + Diana compared to the Shibasoku and the analog FFT on its output from a low distortion and a high distortion source in the next few days. They are really similar in how they present the data.
 
I finally had a little time to play with Diana on the RTX. It seems to work OK except for some problem rendering the fonts for the frequency in the plot. That and the scaling are not too clear in either the screen or the PDF attached. A few more reference lines at log spacing for frequency would be helpful.

I used exactly the same setup with Praxis (the other plot) and I think there are no major deviations in the distortion levels.
Hi Demian,

First, thank you for spending some time to review the new version of DiAna.
Indeed, there is a problem with the font and number of reference lines. Thx for pointing this out. It's a new bug and probably the result of recompiling the program with Symantec C++. I'll try to fix it as soon as possible. See pic below how it should look (and did look before recompiling).
>the scaling is not too clear...
Without calibration, scaling is 1.0V referenced to the peak amplitude (full scale) of the ADC and DAC respectively, i.e. V(FS), as the calibration factors are set per default to 1.0. These factors can be adjusted in the preferences->sound card menu. Please, see also post 55, 116 and 122.

Cheers, E.
 

Attachments

  • THD-scale.jpg
    THD-scale.jpg
    99.8 KB · Views: 280