kartik-venugopal / aural-player

An audio player for macOS, inspired by Winamp.
MIT License
922 stars 47 forks source link

Show current preset in Equalizer #43

Closed cesss closed 2 years ago

cesss commented 2 years ago

Yesterday I said I had no idea of new feature requests, but, while playing music this morning, I realized that it would be desirable to know what's the Equalizer preset that you are using.

In other effects maybe is not that important, but in the case of the Equalizer, when some track sounds specially good, I tend to ask myself "hey! what's the current equalizer preset?".

I realize this might not be easy to implement, because the way the current UI works is that when the user selects a preset, it's just copied to the current settings (which the user can tweak afterwards), and so there's no notion of "current preset". So, this implies that there should be a flag that is enabled when the user tweaks the settings after selecting a preset. When that flag is Off, the GUI could display the last preset chosen. But when it's On, you are using a custom setting, not a preset.

I'm not sure if this would be a clean design for the current implementation. It's likely that such flag is not the most elegant solution, but, anyway, I leave it as a thought.

In C, I would implement this as a struct for the current Equalizer state, that has not only the values for the eq bands, but also a pointer to a preset. When the user selects a preset, its bands values are copied to the Equalizer state, and the pointer is set to point to the preset. When the user tweaks a value, the pointer becomes NULL. So, the behaviour of the program would be: if the pointer is non-NULL, then ignore the Equalizer state, and just use the preset (and display the name of the preset in the GUI). OTOH, if the pointer is NULL, then use the Equalizer state, and display "custom" as the name of the preset in the GUI.

As I said, this might require a design consideration, maybe it doesn't fit well in your coding paradigm.

kartik-venugopal commented 2 years ago

Yes, you are exactly right ... since the preset's settings are copied over, the EQ unit would need a flag to keep track of whether the settings have been modified after applying a preset. If you feel this would be useful, I could try to implement it.

As for indicating the current preset, I see only one feasible way ... to "check" the menu item corresponding to the "current preset", i.e. the menu item will have a check mark next to it. There is no room elsewhere in the EQ UI to display the current preset so that is the only way. You would then have to click the presets button, and the menu would show the list of presets with the current one checked. Of course, when settings are "custom", none of the presets would be selected, implying a custom state.

cesss commented 2 years ago

Yes, a tick in the popup menu is what most players do, I believe. I think it would be useful (in my case, during the years I used Vox I usually checked often the current presets I was using, so, I think it's a useful feature).

But give it a thought. Maybe it does or doesn't fit with your current design. Don't implement it if you think it will break your design concept.

kartik-venugopal commented 2 years ago

On the subject of presets, you might want to know that there is a feature to remember effects settings per track. Sound > Remember settings for this track.

The settings (all sound settings, including volume and all effects, except AUs) will be remembered and re-applied the next time you play the track. You can do this for any / every track.

Sounds like it might be useful to you.

I will try to implement your "current preset" this weekend if I find the energy.

cesss commented 2 years ago

I didn't know about the remember settings feature. Thanks for telling!

kartik-venugopal commented 2 years ago

Hi @cesss , sorry I haven't yet worked on this. I thought about how this feature should be implemented and I have an idea of what is to be done, but the thing is - if I do this for the EQ, I will want to do it for all the other effects as well, for the sake of consistency ... the user may expect it to work everywhere if it works in the EQ. Also, because of the other feature I mentioned to you earlier (remember settings), it will involve a little more work to ensure that when settings are recalled and re-applied, the "current preset" state is also remembered and re-applied.

The only way to implement all of this doesn't seem clean ... it will involve setting that pointer / reference in every single function that modifies an effects unit's settings. Furthermore, there is the issue of presets that may get deleted / renamed over time, so persistence of that state is also non-trivial. I will see if there is a better way to do it, but at the moment, I am out of ideas.

Also, I have been busy with other personal things, so that has also put off this work. But I just wanted to update you anyway.

cesss commented 2 years ago

No worries at all!! I fully understand. I've been there. Many years ago I wrote a 3D app that lacked the concept of "current camera". Each 3D view had its own camera. You could store the current values of the camera and give it a name, and later you could restore the named camera back to the view. But the implementation was just copy from view to storage, and copy from storage to view. This was very convenient for many uses, but, sometimes, I found it limiting not to be able to set the "current camera": when you wanted to know what was the name of the camera you were using, or when you wanted to slightly adjust one of the cameras, you had to use the copy from storage and copy to storage paradigm, which was not comfortable for those uses.

You are basically in the same situation. and I honestly don't know what would be the best design choice for your app: this really depends on how you want it to be.

cesss commented 2 years ago

By the way, I've been using Aural almost everyday now! I love it!! πŸ˜ƒ

kartik-venugopal commented 2 years ago

By the way, I've been using Aural almost everyday now! I love it!! πŸ˜ƒ

Cool ! How is AUMatrixReverb working out for you ?

cesss commented 2 years ago

Cool ! How is AUMatrixReverb working out for you ?

It works perfect!! Found no problems at all. Your engine is also very good. By the way, just wondering, are you setting the maximum quality for AUMatrixReverb, aren't you? I ask because in Vox it had a setting for the rendering quality, and the default it was always maximum quality, so I guess you are doing the same.

BTW, just had a quick thought that maybe could help: How about having in each "load preset" menu pane an entry for the last selected preset? I mean, something like with the "History" menu, where you can see the songs you last added. Or maybe you could add a category for "last chosen effects" in the "History" menu, but I'm not sure it fits there...

kartik-venugopal commented 2 years ago

I'm not sure about the rendering quality ... didn't know that setting existed.

Hmm, that's an interesting idea. I'll play around with the idea when I return to developing Aural again :)

kartik-venugopal commented 2 years ago

EDIT - I just saw the rendering quality setting ... I need to add that option for all AUs, I guess. Will look into it.

kartik-venugopal commented 2 years ago

Hey @cesss, I've added a new render quality setting in v3.11.0 for all effects units (including AU plug-ins). Check it out.

I will try to do the presets feature next.

kartik-venugopal commented 2 years ago

@cesss , are you ok with me removing the 10-band EQ and only keeping the 15-band EQ ? It will greatly simplify keeping track of EQ presets and the 15-band EQ gives more control anyway ... it will make it easier to implement this feature.

I have already removed the 10-band EQ from v4.0, so it will go away eventually.

cesss commented 2 years ago

Hi, @kartik-venugopal !! Thanks a lot!! Well, actually, I rarely adjust the EQ manually, but just use presets, so, if you keep the presets and they sound like the current presets, it will be fine for me. And, in the rare occasions when I adjust it manually, I guess 15-band can be fine...

kartik-venugopal commented 2 years ago

Cool, I've removed the 10-band EQ. And, I've mostly implemented the current presets feature. There are a few cases left to implement (remember settings feature), and I have another improvement in mind.

A new release is coming soon ... probably in the next 2 - 3 days :)

cesss commented 2 years ago

Oh, that's great!! I think your player is perfect!

BTW, do you build it in some way that prevents the Mac going to sleep? (I'm not saying it as a bug, but as a feature, because these days, when I want to leave my Macs calculating stuff without the risk of them going to sleep, I leave Aural open, and it works --yes, I know sleeping should be adjusted in the Mac Settings, but, in my MBP it worked perfectly in High Sierra, but in Monterrey they made the energy settings quite unfriendly and hard to tune...)

In case you consider it a bug, please don't fix it 🀣 (or at least make it a configurable setting πŸ˜„

kartik-venugopal commented 2 years ago

Hmm, not sure about the sleep thing ... let me check on that and get back to you. There might be some build setting.

BTW, thanks for all the feature suggestions. You seem to have good ideas.

Ok, I won't "fix" it :)

cesss commented 2 years ago

Just installed your latest release right now. The quality setting is a nice addition!

I tend to believe that your player can become quite popular if more people learn that it exists πŸ˜ƒ

BTW, a suggestion I could make, not for now, but for the long term, is to try to isolate all the Apple-dependent code in certain limited files, so that you can jump to other OSs if needed. I'm saying this from experience: In the past I wrote software for Silicon Graphics workstations, and I was really in love with those (big and colorful) machines. IRIX was my dream OS. I couldn't imagine that IRIX could abandon the market. But it did, and I was lucky that I followed the practice of encapsulating all the SGI-specific stuff in some files... this made the port to OSX, Linux, and Windows much easier than if all my source required SGI headers to build. Just an advice... Apple seems to be solid, but who knows, and, besides, some of their decisions are questionable to say the least...

kartik-venugopal commented 2 years ago

Yes, I'm sure more people would love it if they knew about it ... but how to get more exposure ? πŸ˜„

You make a very good point about isolating Apple-dependent code. In fact, I did consider the grandiose ambition of having Aural on both Windows and Linux too since there are Swift toolchains for both at this point ... and someday maybe even Android. But the reality is ... I just couldn't possibly have the time to develop for all those systems.

Nevertheless, it is a good idea to separate platform-agnostic code from platform-dependent code. I have also considered moving out all the core player stuff (including FFmpeg) to its own separate framework.

There is so much cleanup that could be done at this point, and I have quite a few feature requests and my own ideas to implement for v4.0 ... I struggle to prioritize πŸ˜„

kartik-venugopal commented 2 years ago

BTW, if you are interested in previewing what I've done with v4.0 so far, let me know ... I can share a build with you ... of course, most features are only partially implemented ... but at least you can get a taste of what's coming ... and you can play around with it and give me feedback.

Let me know if you're interested.

kartik-venugopal commented 2 years ago

This feature has been released in v3.12.0. Enjoy πŸ˜„

cesss commented 2 years ago

That's great!!!! Thanks a lot!! I'm gonna download now. I'll tell you how it works later this weekend πŸ˜ƒ

BTW, can 4.0 run side by side with 3.x? Do they share preference files, caches, etc, or are they safe from interference? Do they use different folders for caches, perhaps?

kartik-venugopal commented 2 years ago

Cool, thanks. Yes, v4.0 will put its persistent state in a new folder called aural4. However, the preferences settings (Aural > Preferences) might overlap (not sure). Unless you have some important Preferences settings on v3, running v4 should be fine.

That said, I run them both simultaneously all the time without issues.

kartik-venugopal commented 2 years ago

Here you go: Aural4.app.zip

Screenshot 2022-10-28 at 12 09 08 AM
cesss commented 2 years ago

Got it! Thanks a lot!! I'll tell you how it goes!

kartik-venugopal commented 2 years ago

Tried your violet color scheme πŸ˜„ Pretty cool !!! ... it's a nice change from my usual color schemes (all black / gray-based). I might include it in the next release as a built-in scheme, if it's okay with you ;)

Screenshot 2022-10-28 at 1 19 35 PM
cesss commented 2 years ago

Sure! I'm glad you liked it! Feel free to include it! It's the scheme I use. Maybe I'll create more schemes in the future.

cesss commented 2 years ago

I'm good at finding crashes πŸ˜„ ...got a crash in Aural4.

Easy to reproduce: Start the app, then Aural>Preferences>Sound>[crash]

Here's the crash report:

-------------------------------------
Translated Report (Full Report Below)
-------------------------------------

Process:               Aural [974]
Path:                  /Users/USER/*/Aural4.app/Contents/MacOS/Aural
Identifier:            com.kv.Aural
Version:               4.0.0 (4.0.0)
Code Type:             X86-64 (Native)
Parent Process:        launchd [1]
User ID:               501

Date/Time:             2022-10-29 12:00:50.3341 +0200
OS Version:            macOS 12.6 (21G115)
Report Version:        12
Bridge OS Version:     6.6 (19P6067)
Anonymous UUID:        4FF62CF3-286B-A276-BA0A-B5EBF6A450EE

Time Awake Since Boot: 1500 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes:       0x0000000000000001, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    Namespace SIGNAL, Code 4 Illegal instruction: 4
Terminating Process:   exc handler [974]

Application Specific Backtrace 0:
0   CoreFoundation                      0x00007ff813f49773 __exceptionPreprocess + 242
1   libobjc.A.dylib                     0x00007ff813ca9bc3 objc_exception_throw + 48
2   CoreFoundation                      0x00007ff813f495da +[NSException exceptionWithName:reason:userInfo:] + 0
3   AppKit                              0x00007ff816c4398b -[NSBezierPath controlPointBounds] + 72
4   AppKit                              0x00007ff816c437fb -[NSBezierPath bounds] + 93
5   AppKit                              0x00007ff81725cc10 -[NSGradient drawInBezierPath:angle:] + 54
6   Aural                               0x00000001070df36b Aural + 1610603
7   Aural                               0x00000001070df898 Aural + 1611928
8   AppKit                              0x00007ff816bbeb5f -[NSSliderCell drawInteriorWithFrame:inView:] + 643
9   AppKit                              0x00007ff816bbe7e7 -[NSSliderCell drawWithFrame:inView:] + 103
10  AppKit                              0x00007ff816a61e77 -[NSControl drawRect:] + 228
11  AppKit                              0x00007ff816b6f1d7 -[NSSlider drawRect:] + 80
12  AppKit                              0x00007ff816a61c80 _NSViewDrawRect + 121
13  AppKit                              0x00007ff81717dccd -[NSView _recursive:displayRectIgnoringOpacity:inContext:stopAtLayerBackedViews:] + 1828
14  AppKit                              0x00007ff816a61391 -[NSView(NSLayerKitGlue) _drawViewBackingLayer:inContext:drawingHandler:] + 747
15  AppKit                              0x00007ff816a60fd0 -[NSView(NSLayerKitGlue) drawLayer:inContext:] + 290
16  QuartzCore                          0x00007ff81af9ea7b CABackingStoreUpdate_ + 594
17  QuartzCore                          0x00007ff81b0029d9 ___ZN2CA5Layer8display_Ev_block_invoke + 53
18  QuartzCore                          0x00007ff81af9daa1 -[CALayer _display] + 2379
19  AppKit                              0x00007ff816a60e05 -[_NSBackingLayer display] + 462
20  AppKit                              0x00007ff8169d63ad -[_NSViewBackingLayer display] + 554
21  QuartzCore                          0x00007ff81af9ca07 _ZN2CA5Layer17display_if_neededEPNS_11TransactionE + 873
22  QuartzCore                          0x00007ff81b0f42aa _ZN2CA7Context18commit_transactionEPNS_11TransactionEdPd + 640
23  QuartzCore                          0x00007ff81af7de6d _ZN2CA11Transaction6commitEv + 777
24  AppKit                              0x00007ff816a721d1 __62+[CATransaction(NSCATransaction) NS_setFlushesWithDisplayLink]_block_invoke + 285
25  AppKit                              0x00007ff8171b9f5c ___NSRunLoopObserverCreateWithHandler_block_invoke + 41
26  CoreFoundation                      0x00007ff813ecd520 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
27  CoreFoundation                      0x00007ff813ecd3b2 __CFRunLoopDoObservers + 543
28  CoreFoundation                      0x00007ff813ecc844 __CFRunLoopRun + 840
29  CoreFoundation                      0x00007ff813ecbe3c CFRunLoopRunSpecific + 562
30  HIToolbox                           0x00007ff81cb7b5e6 RunCurrentEventLoopInMode + 292
31  HIToolbox                           0x00007ff81cb7b213 ReceiveNextEventCommon + 283
32  HIToolbox                           0x00007ff81cb7b0e5 _BlockUntilNextEventMatchingListInModeWithFilter + 70
33  AppKit                              0x00007ff816905fad _DPSNextEvent + 927
34  AppKit                              0x00007ff81690466a -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1394
35  AppKit                              0x00007ff8168f6d19 -[NSApplication run] + 586
36  AppKit                              0x00007ff8168cac97 NSApplicationMain + 817
37  Aural                               0x0000000106f5b899 Aural + 22681
38  dyld                                0x000000010ba5752e start + 462

Thread 0 Crashed::  Dispatch queue: com.apple.main-thread
0   AppKit                              0x7ff816c82e5a -[NSApplication _crashOnException:] + 313
1   AppKit                              0x7ff816a7240d __62+[CATransaction(NSCATransaction) NS_setFlushesWithDisplayLink]_block_invoke + 857
2   AppKit                              0x7ff8171b9f5c ___NSRunLoopObserverCreateWithHandler_block_invoke + 41
3   CoreFoundation                      0x7ff813ecd520 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
4   CoreFoundation                      0x7ff813ecd3b2 __CFRunLoopDoObservers + 543
5   CoreFoundation                      0x7ff813ecc844 __CFRunLoopRun + 840
6   CoreFoundation                      0x7ff813ecbe3c CFRunLoopRunSpecific + 562
7   HIToolbox                           0x7ff81cb7b5e6 RunCurrentEventLoopInMode + 292
8   HIToolbox                           0x7ff81cb7b213 ReceiveNextEventCommon + 283
9   HIToolbox                           0x7ff81cb7b0e5 _BlockUntilNextEventMatchingListInModeWithFilter + 70
10  AppKit                              0x7ff816905fad _DPSNextEvent + 927
11  AppKit                              0x7ff81690466a -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1394
12  AppKit                              0x7ff8168f6d19 -[NSApplication run] + 586
13  AppKit                              0x7ff8168cac97 NSApplicationMain + 817
14  Aural                                  0x106f5b899 0x106f56000 + 22681
15  dyld                                   0x10ba5752e start + 462

Thread 1:
0   libsystem_pthread.dylib             0x7ff813e02f48 start_wqthread + 0

Thread 2:
0   libsystem_pthread.dylib             0x7ff813e02f48 start_wqthread + 0

Thread 3:
0   libsystem_pthread.dylib             0x7ff813e02f48 start_wqthread + 0

Thread 4:: AMCP Logging Spool
0   libsystem_kernel.dylib              0x7ff813dca9b6 semaphore_wait_trap + 10
1   caulk                               0x7ff81c9072e6 caulk::mach::semaphore::wait_or_error() + 16
2   caulk                               0x7ff81c8ef148 caulk::concurrent::details::worker_thread::run() + 36
3   caulk                               0x7ff81c8eee0c void* caulk::thread_proxy<std::__1::tuple<caulk::thread::attributes, void (caulk::concurrent::details::worker_thread::*)(), std::__1::tuple<caulk::concurrent::details::worker_thread*> > >(void*) + 41
4   libsystem_pthread.dylib             0x7ff813e074e1 _pthread_start + 125
5   libsystem_pthread.dylib             0x7ff813e02f6b thread_start + 15

Thread 5:: com.apple.audio.toolbox.AUScheduledParameterRefresher
0   libsystem_kernel.dylib              0x7ff813dca9b6 semaphore_wait_trap + 10
1   caulk                               0x7ff81c9072e6 caulk::mach::semaphore::wait_or_error() + 16
2   caulk                               0x7ff81c8ef148 caulk::concurrent::details::worker_thread::run() + 36
3   caulk                               0x7ff81c8eee0c void* caulk::thread_proxy<std::__1::tuple<caulk::thread::attributes, void (caulk::concurrent::details::worker_thread::*)(), std::__1::tuple<caulk::concurrent::details::worker_thread*> > >(void*) + 41
4   libsystem_pthread.dylib             0x7ff813e074e1 _pthread_start + 125
5   libsystem_pthread.dylib             0x7ff813e02f6b thread_start + 15

Thread 6:
0   libsystem_kernel.dylib              0x7ff813dca9b6 semaphore_wait_trap + 10
1   caulk                               0x7ff81c9072e6 caulk::mach::semaphore::wait_or_error() + 16
2   caulk                               0x7ff81c8ef148 caulk::concurrent::details::worker_thread::run() + 36
3   caulk                               0x7ff81c8eee0c void* caulk::thread_proxy<std::__1::tuple<caulk::thread::attributes, void (caulk::concurrent::details::worker_thread::*)(), std::__1::tuple<caulk::concurrent::details::worker_thread*> > >(void*) + 41
4   libsystem_pthread.dylib             0x7ff813e074e1 _pthread_start + 125
5   libsystem_pthread.dylib             0x7ff813e02f6b thread_start + 15

Thread 7:: com.apple.audio.IOThread.client
0   libsystem_kernel.dylib              0x7ff813dca97a mach_msg_trap + 10
1   libsystem_kernel.dylib              0x7ff813dcace8 mach_msg + 56
2   CoreAudio                           0x7ff815a4dc07 HALB_MachPort::SendSimpleMessageWithSimpleReply(unsigned int, unsigned int, int, int&, bool, unsigned int) + 111
3   CoreAudio                           0x7ff8158d8729 HALC_ProxyIOContext::IOWorkLoop() + 3931
4   CoreAudio                           0x7ff8158d7205 invocation function for block in HALC_ProxyIOContext::HALC_ProxyIOContext(unsigned int, unsigned int) + 63
5   CoreAudio                           0x7ff815aa3616 HALB_IOThread::Entry(void*) + 72
6   libsystem_pthread.dylib             0x7ff813e074e1 _pthread_start + 125
7   libsystem_pthread.dylib             0x7ff813e02f6b thread_start + 15

Thread 8:
0   libsystem_pthread.dylib             0x7ff813e02f48 start_wqthread + 0

Thread 9:
0   libsystem_pthread.dylib             0x7ff813e02f48 start_wqthread + 0

Thread 10:
0   libsystem_pthread.dylib             0x7ff813e02f48 start_wqthread + 0

Thread 11:: com.apple.NSEventThread
0   libsystem_kernel.dylib              0x7ff813dca97a mach_msg_trap + 10
1   libsystem_kernel.dylib              0x7ff813dcace8 mach_msg + 56
2   CoreFoundation                      0x7ff813ece36d __CFRunLoopServiceMachPort + 319
3   CoreFoundation                      0x7ff813ecc9f8 __CFRunLoopRun + 1276
4   CoreFoundation                      0x7ff813ecbe3c CFRunLoopRunSpecific + 562
5   AppKit                              0x7ff816a739ce _NSEventThread + 132
6   libsystem_pthread.dylib             0x7ff813e074e1 _pthread_start + 125
7   libsystem_pthread.dylib             0x7ff813e02f6b thread_start + 15

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x00007f8a1f050800  rbx: 0x00007ff813c9a400  rcx: 0xb3834989fd940023  rdx: 0x0000000000000e01
  rdi: 0x00007ff7b8fa7c10  rsi: 0x0000000000000f10  rbp: 0x00007ff7b8fa80a0  rsp: 0x00007ff7b8fa8070
   r8: 0x0000000000000110   r9: 0x00007ff7b8fa7650  r10: 0x0000000000000110  r11: 0x00007f8a1f051710
  r12: 0x00007f8a1e810050  r13: 0x00006000030b86e0  r14: 0x0000600000f50990  r15: 0x00007ff82e225210
  rip: 0x00007ff816c82e5a  rfl: 0x0000000000010202  cr2: 0x00007ff856c11628

Logical CPU:     4
Error Code:      0x00000000 
Trap Number:     6

Thread 0 instruction stream:
  00 e8 f2 fe 7c 00 48 8b-35 69 44 9b 3e 48 8b 1d  ....|.H.5iD.>H..
  5a 0d 08 3d 4c 89 f7 ff-d3 48 8d 3d 8e 31 0b 3d  Z..=L....H.=.1.=
  48 89 c6 31 c0 e8 d1 5a-e3 ff 4c 89 f7 4c 89 fe  H..1...Z..L..L..
  ff d3 48 8b 35 7d 86 9b-3e 48 8d 15 6e 21 0b 3d  ..H.5}..>H..n!.=
  48 89 c7 ff 15 25 0d 08-3d 48 8b 35 66 3e 9b 3e  H....%..=H.5f>.>
  48 89 c7 ff 15 15 0d 08-3d 48 89 05 be 37 a1 3e  H.......=H...7.>
 [0f]0b 48 8d 3d 25 bd 72-3e 48 8d 35 0e 16 0a 3d  ..H.=%.r>H.5...= <==
  e8 15 00 7d 00 e9 cb fe-ff ff 48 8d 3d 0d bd 72  ...}......H.=..r
  3e 48 8d 35 f6 15 0a 3d-e8 fd ff 7c 00 e9 19 ff  >H.5...=...|....
  ff ff 48 89 c7 e8 c8 03-7d 00 31 ff 31 f6 31 c0  ..H.....}.1.1.1.
  e8 56 5a e3 ff e8 e8 03-7d 00 0f 0b 48 89 c3 e8  .VZ.....}...H...
  d2 03 7d 00 48 89 df e8-22 fd 7c 00 e8 c1 04 7d  ..}.H...".|....}

Binary Images:
    0x7ff8168c7000 -     0x7ff817756fff com.apple.AppKit (6.9) <06015263-62ac-3b08-a298-dc835c18452a> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
    0x7ff813e4e000 -     0x7ff814350fff com.apple.CoreFoundation (6.9) <93c48919-68af-367e-9a67-db4159bc962c> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
    0x7ff81cb4d000 -     0x7ff81ce40fff com.apple.HIToolbox (2.1.1) <06fdecd6-9f69-397b-b1e2-a8226c0ba7ed> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
       0x106f56000 -        0x107405fff com.kv.Aural (4.0.0) <445b2f6f-c563-3673-abc5-35c4debf659f> /Users/USER/*/Aural4.app/Contents/MacOS/Aural
       0x10ba52000 -        0x10babdfff dyld (*) <71febccd-d9dc-3599-9971-2b3407c588a8> /usr/lib/dyld
    0x7ff813e01000 -     0x7ff813e0cfff libsystem_pthread.dylib (*) <b5454e27-e8c7-3fdb-b77f-714f1e82e70b> /usr/lib/system/libsystem_pthread.dylib
    0x7ff813dc9000 -     0x7ff813e00fff libsystem_kernel.dylib (*) <8cc28466-fd2f-3c80-9834-9525b7beac19> /usr/lib/system/libsystem_kernel.dylib
    0x7ff81c8ed000 -     0x7ff81c90efff com.apple.audio.caulk (1.0) <8e7b3d95-1d47-3f17-9512-c5fcc30792c2> /System/Library/PrivateFrameworks/caulk.framework/Versions/A/caulk
    0x7ff81571e000 -     0x7ff815e53fff com.apple.audio.CoreAudio (5.0) <9be547d0-0af1-3470-afde-2ac4cd34441e> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=1.0G resident=0K(0%) swapped_out_or_unallocated=1.0G(100%)
Writable regions: Total=1.9G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.9G(100%)

                                VIRTUAL   REGION 
REGION TYPE                        SIZE    COUNT (non-coalesced) 
===========                     =======  ======= 
Accelerate framework               384K        3 
Activity Tracing                   256K        1 
CG backing stores                 2528K        4 
CG image                          4044K       46 
CG raster data                      36K        1 
ColorSync                          224K       27 
CoreAnimation                     4116K       79 
CoreGraphics                        12K        2 
CoreUI image data                 2056K       15 
Foundation                          16K        1 
Kernel Alloc Once                    8K        1 
MALLOC                           336.2M       61 
MALLOC guard page                   48K       10 
MALLOC_MEDIUM (reserved)           1.2G       10         reserved VM address space (unallocated)
MALLOC_NANO (reserved)           384.0M        1         reserved VM address space (unallocated)
ObjC additional data                15K        1 
STACK GUARD                       56.0M       12 
Stack                             13.6M       12 
VM_ALLOCATE                        564K       25 
VM_ALLOCATE (reserved)              32K        1         reserved VM address space (unallocated)
__CTF                               756        1 
__DATA                            26.8M      448 
__DATA_CONST                      23.9M      287 
__DATA_DIRTY                      1288K      166 
__FONT_DATA                          4K        1 
__LINKEDIT                       646.1M       14 
__TEXT                           408.0M      461 
__UNICODE                          592K        1 
dyld private memory               1024K        1 
mapped file                      166.0M       46 
shared memory                      772K       15 
===========                     =======  ======= 
TOTAL                              3.2G     1754 
TOTAL, minus reserved VM space     1.7G     1754 

-----------
Full Report
-----------

{"app_name":"Aural","timestamp":"2022-10-29 12:00:50.00 +0200","app_version":"4.0.0","slice_uuid":"445b2f6f-c563-3673-abc5-35c4debf659f","build_version":"4.0.0","platform":1,"bundleID":"com.kv.Aural","share_with_app_devs":0,"is_first_party":0,"bug_type":"309","os_version":"macOS 12.6 (21G115)","incident_id":"56792CD7-64A4-4AF9-8284-505B1292DA4E","name":"Aural"}
{
  "uptime" : 1500,
  "procLaunch" : "2022-10-29 12:00:42.9846 +0200",
  "procRole" : "Foreground",
  "version" : 2,
  "userID" : 501,
  "deployVersion" : 210,
  "modelCode" : "MacBookPro15,1",
  "procStartAbsTime" : 1549486591432,
  "coalitionID" : 836,
  "osVersion" : {
    "train" : "macOS 12.6",
    "build" : "21G115",
    "releaseType" : "User"
  },
  "captureTime" : "2022-10-29 12:00:50.3341 +0200",
  "incident" : "56792CD7-64A4-4AF9-8284-505B1292DA4E",
  "bug_type" : "309",
  "pid" : 974,
  "procExitAbsTime" : 1556835428010,
  "cpuType" : "X86-64",
  "procName" : "Aural",
  "procPath" : "\/Users\/USER\/*\/Aural4.app\/Contents\/MacOS\/Aural",
  "bundleInfo" : {"CFBundleShortVersionString":"4.0.0","CFBundleVersion":"4.0.0","CFBundleIdentifier":"com.kv.Aural"},
  "storeInfo" : {"deviceIdentifierForVendor":"39FD0C01-0F4D-5B5A-8C9E-D957F9D8EB10","thirdParty":true},
  "parentProc" : "launchd",
  "parentPid" : 1,
  "coalitionName" : "com.kv.Aural",
  "crashReporterKey" : "4FF62CF3-286B-A276-BA0A-B5EBF6A450EE",
  "bridgeVersion" : {"build":"19P6067","train":"6.6"},
  "sip" : "enabled",
  "isCorpse" : 1,
  "exception" : {"codes":"0x0000000000000001, 0x0000000000000000","rawCodes":[1,0],"type":"EXC_BAD_INSTRUCTION","signal":"SIGILL"},
  "termination" : {"flags":0,"code":4,"namespace":"SIGNAL","indicator":"Illegal instruction: 4","byProc":"exc handler","byPid":974},
  "asiBacktraces" : ["0   CoreFoundation                      0x00007ff813f49773 __exceptionPreprocess + 242\n1   libobjc.A.dylib                     0x00007ff813ca9bc3 objc_exception_throw + 48\n2   CoreFoundation                      0x00007ff813f495da +[NSException exceptionWithName:reason:userInfo:] + 0\n3   AppKit                              0x00007ff816c4398b -[NSBezierPath controlPointBounds] + 72\n4   AppKit                              0x00007ff816c437fb -[NSBezierPath bounds] + 93\n5   AppKit                              0x00007ff81725cc10 -[NSGradient drawInBezierPath:angle:] + 54\n6   Aural                               0x00000001070df36b Aural + 1610603\n7   Aural                               0x00000001070df898 Aural + 1611928\n8   AppKit                              0x00007ff816bbeb5f -[NSSliderCell drawInteriorWithFrame:inView:] + 643\n9   AppKit                              0x00007ff816bbe7e7 -[NSSliderCell drawWithFrame:inView:] + 103\n10  AppKit                              0x00007ff816a61e77 -[NSControl drawRect:] + 228\n11  AppKit                              0x00007ff816b6f1d7 -[NSSlider drawRect:] + 80\n12  AppKit                              0x00007ff816a61c80 _NSViewDrawRect + 121\n13  AppKit                              0x00007ff81717dccd -[NSView _recursive:displayRectIgnoringOpacity:inContext:stopAtLayerBackedViews:] + 1828\n14  AppKit                              0x00007ff816a61391 -[NSView(NSLayerKitGlue) _drawViewBackingLayer:inContext:drawingHandler:] + 747\n15  AppKit                              0x00007ff816a60fd0 -[NSView(NSLayerKitGlue) drawLayer:inContext:] + 290\n16  QuartzCore                          0x00007ff81af9ea7b CABackingStoreUpdate_ + 594\n17  QuartzCore                          0x00007ff81b0029d9 ___ZN2CA5Layer8display_Ev_block_invoke + 53\n18  QuartzCore                          0x00007ff81af9daa1 -[CALayer _display] + 2379\n19  AppKit                              0x00007ff816a60e05 -[_NSBackingLayer display] + 462\n20  AppKit                              0x00007ff8169d63ad -[_NSViewBackingLayer display] + 554\n21  QuartzCore                          0x00007ff81af9ca07 _ZN2CA5Layer17display_if_neededEPNS_11TransactionE + 873\n22  QuartzCore                          0x00007ff81b0f42aa _ZN2CA7Context18commit_transactionEPNS_11TransactionEdPd + 640\n23  QuartzCore                          0x00007ff81af7de6d _ZN2CA11Transaction6commitEv + 777\n24  AppKit                              0x00007ff816a721d1 __62+[CATransaction(NSCATransaction) NS_setFlushesWithDisplayLink]_block_invoke + 285\n25  AppKit                              0x00007ff8171b9f5c ___NSRunLoopObserverCreateWithHandler_block_invoke + 41\n26  CoreFoundation                      0x00007ff813ecd520 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23\n27  CoreFoundation                      0x00007ff813ecd3b2 __CFRunLoopDoObservers + 543\n28  CoreFoundation                      0x00007ff813ecc844 __CFRunLoopRun + 840\n29  CoreFoundation                      0x00007ff813ecbe3c CFRunLoopRunSpecific + 562\n30  HIToolbox                           0x00007ff81cb7b5e6 RunCurrentEventLoopInMode + 292\n31  HIToolbox                           0x00007ff81cb7b213 ReceiveNextEventCommon + 283\n32  HIToolbox                           0x00007ff81cb7b0e5 _BlockUntilNextEventMatchingListInModeWithFilter + 70\n33  AppKit                              0x00007ff816905fad _DPSNextEvent + 927\n34  AppKit                              0x00007ff81690466a -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1394\n35  AppKit                              0x00007ff8168f6d19 -[NSApplication run] + 586\n36  AppKit                              0x00007ff8168cac97 NSApplicationMain + 817\n37  Aural                               0x0000000106f5b899 Aural + 22681\n38  dyld                                0x000000010ba5752e start + 462"],
  "extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0},
  "faultingThread" : 0,
  "threads" : [{"triggered":true,"id":16888,"instructionState":{"instructionStream":{"bytes":[0,232,242,254,124,0,72,139,53,105,68,155,62,72,139,29,90,13,8,61,76,137,247,255,211,72,141,61,142,49,11,61,72,137,198,49,192,232,209,90,227,255,76,137,247,76,137,254,255,211,72,139,53,125,134,155,62,72,141,21,110,33,11,61,72,137,199,255,21,37,13,8,61,72,139,53,102,62,155,62,72,137,199,255,21,21,13,8,61,72,137,5,190,55,161,62,15,11,72,141,61,37,189,114,62,72,141,53,14,22,10,61,232,21,0,125,0,233,203,254,255,255,72,141,61,13,189,114,62,72,141,53,246,21,10,61,232,253,255,124,0,233,25,255,255,255,72,137,199,232,200,3,125,0,49,255,49,246,49,192,232,86,90,227,255,232,232,3,125,0,15,11,72,137,195,232,210,3,125,0,72,137,223,232,34,253,124,0,232,193,4,125],"offset":96}},"threadState":{"r13":{"value":105553167353568},"rax":{"value":140231202637824},"rflags":{"value":66050},"cpu":{"value":4},"r14":{"value":105553132325264},"rsi":{"value":3856},"r8":{"value":272},"cr2":{"value":140704584111656},"rdx":{"value":3585},"r10":{"value":272},"r9":{"value":140701937071696},"r15":{"value":140703902618128},"rbx":{"value":140703460598784,"symbolLocation":0,"symbol":"objc_msgSend"},"trap":{"value":6},"err":{"value":0},"r11":{"value":140231202641680},"rip":{"value":140703510834778,"matchesCrashFrame":1},"rbp":{"value":140701937074336},"rsp":{"value":140701937074288},"r12":{"value":140231193985104},"rcx":{"value":12935263411751878691},"flavor":"x86_THREAD_STATE","rdi":{"value":140701937073168}},"queue":"com.apple.main-thread","frames":[{"imageOffset":3915354,"symbol":"-[NSApplication _crashOnException:]","symbolLocation":313,"imageIndex":0},{"imageOffset":1750029,"symbol":"__62+[CATransaction(NSCATransaction) NS_setFlushesWithDisplayLink]_block_invoke","symbolLocation":857,"imageIndex":0},{"imageOffset":9383772,"symbol":"___NSRunLoopObserverCreateWithHandler_block_invoke","symbolLocation":41,"imageIndex":0},{"imageOffset":521504,"symbol":"__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__","symbolLocation":23,"imageIndex":1},{"imageOffset":521138,"symbol":"__CFRunLoopDoObservers","symbolLocation":543,"imageIndex":1},{"imageOffset":518212,"symbol":"__CFRunLoopRun","symbolLocation":840,"imageIndex":1},{"imageOffset":515644,"symbol":"CFRunLoopRunSpecific","symbolLocation":562,"imageIndex":1},{"imageOffset":189926,"symbol":"RunCurrentEventLoopInMode","symbolLocation":292,"imageIndex":2},{"imageOffset":188947,"symbol":"ReceiveNextEventCommon","symbolLocation":283,"imageIndex":2},{"imageOffset":188645,"symbol":"_BlockUntilNextEventMatchingListInModeWithFilter","symbolLocation":70,"imageIndex":2},{"imageOffset":257965,"symbol":"_DPSNextEvent","symbolLocation":927,"imageIndex":0},{"imageOffset":251498,"symbol":"-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]","symbolLocation":1394,"imageIndex":0},{"imageOffset":195865,"symbol":"-[NSApplication run]","symbolLocation":586,"imageIndex":0},{"imageOffset":15511,"symbol":"NSApplicationMain","symbolLocation":817,"imageIndex":0},{"imageOffset":22681,"imageIndex":3},{"imageOffset":21806,"symbol":"start","symbolLocation":462,"imageIndex":4}]},{"id":16901,"frames":[{"imageOffset":8008,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":5}]},{"id":16902,"frames":[{"imageOffset":8008,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":5}]},{"id":16912,"frames":[{"imageOffset":8008,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":5}]},{"id":16942,"name":"AMCP Logging Spool","frames":[{"imageOffset":6582,"symbol":"semaphore_wait_trap","symbolLocation":10,"imageIndex":6},{"imageOffset":107238,"symbol":"caulk::mach::semaphore::wait_or_error()","symbolLocation":16,"imageIndex":7},{"imageOffset":8520,"symbol":"caulk::concurrent::details::worker_thread::run()","symbolLocation":36,"imageIndex":7},{"imageOffset":7692,"symbol":"void* caulk::thread_proxy<std::__1::tuple<caulk::thread::attributes, void (caulk::concurrent::details::worker_thread::*)(), std::__1::tuple<caulk::concurrent::details::worker_thread*> > >(void*)","symbolLocation":41,"imageIndex":7},{"imageOffset":25825,"symbol":"_pthread_start","symbolLocation":125,"imageIndex":5},{"imageOffset":8043,"symbol":"thread_start","symbolLocation":15,"imageIndex":5}]},{"id":16976,"name":"com.apple.audio.toolbox.AUScheduledParameterRefresher","frames":[{"imageOffset":6582,"symbol":"semaphore_wait_trap","symbolLocation":10,"imageIndex":6},{"imageOffset":107238,"symbol":"caulk::mach::semaphore::wait_or_error()","symbolLocation":16,"imageIndex":7},{"imageOffset":8520,"symbol":"caulk::concurrent::details::worker_thread::run()","symbolLocation":36,"imageIndex":7},{"imageOffset":7692,"symbol":"void* caulk::thread_proxy<std::__1::tuple<caulk::thread::attributes, void (caulk::concurrent::details::worker_thread::*)(), std::__1::tuple<caulk::concurrent::details::worker_thread*> > >(void*)","symbolLocation":41,"imageIndex":7},{"imageOffset":25825,"symbol":"_pthread_start","symbolLocation":125,"imageIndex":5},{"imageOffset":8043,"symbol":"thread_start","symbolLocation":15,"imageIndex":5}]},{"id":16977,"frames":[{"imageOffset":6582,"symbol":"semaphore_wait_trap","symbolLocation":10,"imageIndex":6},{"imageOffset":107238,"symbol":"caulk::mach::semaphore::wait_or_error()","symbolLocation":16,"imageIndex":7},{"imageOffset":8520,"symbol":"caulk::concurrent::details::worker_thread::run()","symbolLocation":36,"imageIndex":7},{"imageOffset":7692,"symbol":"void* caulk::thread_proxy<std::__1::tuple<caulk::thread::attributes, void (caulk::concurrent::details::worker_thread::*)(), std::__1::tuple<caulk::concurrent::details::worker_thread*> > >(void*)","symbolLocation":41,"imageIndex":7},{"imageOffset":25825,"symbol":"_pthread_start","symbolLocation":125,"imageIndex":5},{"imageOffset":8043,"symbol":"thread_start","symbolLocation":15,"imageIndex":5}]},{"id":16978,"name":"com.apple.audio.IOThread.client","frames":[{"imageOffset":6522,"symbol":"mach_msg_trap","symbolLocation":10,"imageIndex":6},{"imageOffset":7400,"symbol":"mach_msg","symbolLocation":56,"imageIndex":6},{"imageOffset":3341319,"symbol":"HALB_MachPort::SendSimpleMessageWithSimpleReply(unsigned int, unsigned int, int, int&, bool, unsigned int)","symbolLocation":111,"imageIndex":8},{"imageOffset":1812265,"symbol":"HALC_ProxyIOContext::IOWorkLoop()","symbolLocation":3931,"imageIndex":8},{"imageOffset":1806853,"symbol":"invocation function for block in HALC_ProxyIOContext::HALC_ProxyIOContext(unsigned int, unsigned int)","symbolLocation":63,"imageIndex":8},{"imageOffset":3692054,"symbol":"HALB_IOThread::Entry(void*)","symbolLocation":72,"imageIndex":8},{"imageOffset":25825,"symbol":"_pthread_start","symbolLocation":125,"imageIndex":5},{"imageOffset":8043,"symbol":"thread_start","symbolLocation":15,"imageIndex":5}]},{"id":16999,"frames":[{"imageOffset":8008,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":5}]},{"id":17001,"frames":[{"imageOffset":8008,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":5}]},{"id":17002,"frames":[{"imageOffset":8008,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":5}]},{"id":17010,"name":"com.apple.NSEventThread","frames":[{"imageOffset":6522,"symbol":"mach_msg_trap","symbolLocation":10,"imageIndex":6},{"imageOffset":7400,"symbol":"mach_msg","symbolLocation":56,"imageIndex":6},{"imageOffset":525165,"symbol":"__CFRunLoopServiceMachPort","symbolLocation":319,"imageIndex":1},{"imageOffset":518648,"symbol":"__CFRunLoopRun","symbolLocation":1276,"imageIndex":1},{"imageOffset":515644,"symbol":"CFRunLoopRunSpecific","symbolLocation":562,"imageIndex":1},{"imageOffset":1755598,"symbol":"_NSEventThread","symbolLocation":132,"imageIndex":0},{"imageOffset":25825,"symbol":"_pthread_start","symbolLocation":125,"imageIndex":5},{"imageOffset":8043,"symbol":"thread_start","symbolLocation":15,"imageIndex":5}]}],
  "usedImages" : [
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 140703506919424,
    "CFBundleShortVersionString" : "6.9",
    "CFBundleIdentifier" : "com.apple.AppKit",
    "size" : 15269888,
    "uuid" : "06015263-62ac-3b08-a298-dc835c18452a",
    "path" : "\/System\/Library\/Frameworks\/AppKit.framework\/Versions\/C\/AppKit",
    "name" : "AppKit",
    "CFBundleVersion" : "2113.60.148"
  },
  {
    "source" : "P",
    "arch" : "x86_64h",
    "base" : 140703462383616,
    "CFBundleShortVersionString" : "6.9",
    "CFBundleIdentifier" : "com.apple.CoreFoundation",
    "size" : 5255168,
    "uuid" : "93c48919-68af-367e-9a67-db4159bc962c",
    "path" : "\/System\/Library\/Frameworks\/CoreFoundation.framework\/Versions\/A\/CoreFoundation",
    "name" : "CoreFoundation",
    "CFBundleVersion" : "1866"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 140703610228736,
    "CFBundleShortVersionString" : "2.1.1",
    "CFBundleIdentifier" : "com.apple.HIToolbox",
    "size" : 3096576,
    "uuid" : "06fdecd6-9f69-397b-b1e2-a8226c0ba7ed",
    "path" : "\/System\/Library\/Frameworks\/Carbon.framework\/Versions\/A\/Frameworks\/HIToolbox.framework\/Versions\/A\/HIToolbox",
    "name" : "HIToolbox"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4411711488,
    "CFBundleShortVersionString" : "4.0.0",
    "CFBundleIdentifier" : "com.kv.Aural",
    "size" : 4915200,
    "uuid" : "445b2f6f-c563-3673-abc5-35c4debf659f",
    "path" : "\/Users\/USER\/*\/Aural4.app\/Contents\/MacOS\/Aural",
    "name" : "Aural",
    "CFBundleVersion" : "4.0.0"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 4490338304,
    "size" : 442368,
    "uuid" : "71febccd-d9dc-3599-9971-2b3407c588a8",
    "path" : "\/usr\/lib\/dyld",
    "name" : "dyld"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 140703462068224,
    "size" : 49152,
    "uuid" : "b5454e27-e8c7-3fdb-b77f-714f1e82e70b",
    "path" : "\/usr\/lib\/system\/libsystem_pthread.dylib",
    "name" : "libsystem_pthread.dylib"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 140703461838848,
    "size" : 229376,
    "uuid" : "8cc28466-fd2f-3c80-9834-9525b7beac19",
    "path" : "\/usr\/lib\/system\/libsystem_kernel.dylib",
    "name" : "libsystem_kernel.dylib"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 140703607738368,
    "CFBundleShortVersionString" : "1.0",
    "CFBundleIdentifier" : "com.apple.audio.caulk",
    "size" : 139264,
    "uuid" : "8e7b3d95-1d47-3f17-9512-c5fcc30792c2",
    "path" : "\/System\/Library\/PrivateFrameworks\/caulk.framework\/Versions\/A\/caulk",
    "name" : "caulk"
  },
  {
    "source" : "P",
    "arch" : "x86_64",
    "base" : 140703488401408,
    "CFBundleShortVersionString" : "5.0",
    "CFBundleIdentifier" : "com.apple.audio.CoreAudio",
    "size" : 7561216,
    "uuid" : "9be547d0-0af1-3470-afde-2ac4cd34441e",
    "path" : "\/System\/Library\/Frameworks\/CoreAudio.framework\/Versions\/A\/CoreAudio",
    "name" : "CoreAudio",
    "CFBundleVersion" : "5.0"
  }
],
  "sharedCache" : {
  "base" : 140703458811904,
  "size" : 19331678208,
  "uuid" : "73669942-bd8a-3e40-951f-7fbe07b51cb8"
},
  "vmSummary" : "ReadOnly portion of Libraries: Total=1.0G resident=0K(0%) swapped_out_or_unallocated=1.0G(100%)\nWritable regions: Total=1.9G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.9G(100%)\n\n                                VIRTUAL   REGION \nREGION TYPE                        SIZE    COUNT (non-coalesced) \n===========                     =======  ======= \nAccelerate framework               384K        3 \nActivity Tracing                   256K        1 \nCG backing stores                 2528K        4 \nCG image                          4044K       46 \nCG raster data                      36K        1 \nColorSync                          224K       27 \nCoreAnimation                     4116K       79 \nCoreGraphics                        12K        2 \nCoreUI image data                 2056K       15 \nFoundation                          16K        1 \nKernel Alloc Once                    8K        1 \nMALLOC                           336.2M       61 \nMALLOC guard page                   48K       10 \nMALLOC_MEDIUM (reserved)           1.2G       10         reserved VM address space (unallocated)\nMALLOC_NANO (reserved)           384.0M        1         reserved VM address space (unallocated)\nObjC additional data                15K        1 \nSTACK GUARD                       56.0M       12 \nStack                             13.6M       12 \nVM_ALLOCATE                        564K       25 \nVM_ALLOCATE (reserved)              32K        1         reserved VM address space (unallocated)\n__CTF                               756        1 \n__DATA                            26.8M      448 \n__DATA_CONST                      23.9M      287 \n__DATA_DIRTY                      1288K      166 \n__FONT_DATA                          4K        1 \n__LINKEDIT                       646.1M       14 \n__TEXT                           408.0M      461 \n__UNICODE                          592K        1 \ndyld private memory               1024K        1 \nmapped file                      166.0M       46 \nshared memory                      772K       15 \n===========                     =======  ======= \nTOTAL                              3.2G     1754 \nTOTAL, minus reserved VM space     1.7G     1754 \n",
  "legacyInfo" : {
  "threadTriggered" : {
    "queue" : "com.apple.main-thread"
  }
},
  "trialInfo" : {
  "rollouts" : [
    {
      "rolloutId" : "5ffde50ce2aacd000d47a95f",
      "factorPackIds" : {

      },
      "deploymentId" : 240000211
    },
    {
      "rolloutId" : "61af99aeda72d16a4beb7756",
      "factorPackIds" : {

      },
      "deploymentId" : 240000396
    }
  ],
  "experiments" : [

  ]
}
}

Model: MacBookPro15,1, BootROM 1731.140.2.0.0 (iBridge: 19.16.16067.0.0,0), 6 processors, 6-Core Intel Core i9, 2,9 GHz, 32 GB, SMC 
Graphics: Intel UHD Graphics 630, Intel UHD Graphics 630, Built-In
Display: Color LCD, 2880 x 1800 Retina, Main, MirrorOff, Online
Graphics: Radeon Pro 560X, Radeon Pro 560X, PCIe, 4 GB
Memory Module: BANK 0/ChannelA-DIMM0, 16 GB, DDR4, 2400 MHz, Micron, 16ATS2G64HZ-2G6B1
Memory Module: BANK 2/ChannelB-DIMM0, 16 GB, DDR4, 2400 MHz, Micron, 16ATS2G64HZ-2G6B1
AirPort: spairport_wireless_card_type_wifi (0x14E4, 0x7BF), wl0: Jul 12 2021 19:26:30 version 9.30.464.0.32.5.76 FWID 01-45ccefcd
Bluetooth: Version (null), 0 services, 0 devices, 0 incoming serial ports
USB Device: Elements 25A2
USB Device: USB31Bus
USB Device: T2Bus
USB Device: Touch Bar Backlight
USB Device: Touch Bar Display
USB Device: Apple Internal Keyboard / Trackpad
USB Device: Headset
USB Device: Ambient Light Sensor
USB Device: FaceTime HD Camera (Built-in)
USB Device: Apple T2 Controller
Thunderbolt Bus: MacBook Pro, Apple Inc., 47.5
Thunderbolt Bus: MacBook Pro, Apple Inc., 47.5
kartik-venugopal commented 2 years ago

Thanks dude, but v4.0 is in its infancy so expect random crashes, bugs, and unimplemented features ... I wouldn't worry about it πŸ˜„

Thanks though πŸ˜„

EDIT - I just wanted to give you a sense of the new UI - more compact than v3.x, with new icons and styling. New player text layout, etc. Don't worry about bugs, crashes, etc.

cesss commented 2 years ago

Ok! Yes, I was trying to look at the differences, by clicking everywhere from curiosity. But curiosity killed the cat 🀣

kartik-venugopal commented 2 years ago

LOL. What did you think of the new cat πŸ˜† ? How do you like the new UI ? Is it better smaller than v3 ? Also, what do you think of the list view in the Play Queue ? The view that shows the cover art, artist, album, etc.

cesss commented 2 years ago

Yes, I liked the smaller UI, and I think that the new UI is a step in the right direction. I also liked the vector-graphics style of the play buttons. I think I prefer this new small UI. But, however, is it possible/easy to change the window size programmatically? I ask this, because sometimes a bigger UI is welcome. I mean, Aural has a Font scheme setting. If that Font scheme was not only the font shape, but also the size, I think it would be a nice addition: If you want a tiny UI, you can have it (even smaller than the one you are offering now). And if you've been coding a lot lately and your eyes are tired and you wish to enjoy a big font, you can have it too. I believe that would be the best of both worlds.

But maybe the icons could be a problem there: do you use bitmap icons, or vector icons? (if they are vector, like SVG or something, no problem, you could resize them programmatically, when the user changes the font size).

cesss commented 2 years ago

FWIW: Vox UI was even smaller than Aural4 (I mean the good-old-days Vox player, not the current one).

cesss commented 2 years ago

The new playlist is gorgeous, great work!! πŸ˜ƒ

cesss commented 2 years ago

BTW, have you ever experienced that some tracks downloaded from YouTube have some kind of noise pattern in the very high frequencies? I noticed it today for the first time, when listening to "Cillo - Breathe" (with Aural 3). It's weird because I've listened to it a lot of times and never realized. If I pump up the 10K and the 16K in the EQ, I find that noise pattern. If I lower both bands to the minimum, it disappears.

I thought it could be because of the new 15band EQ, but it's not.

In fact I realized it even happens when listening to it in YouTube: https://www.youtube.com/watch?v=6bILMMBRNno (listen from 3:45 to 3:55 and pay attention to the high frequencies during what should be silence).

I'm not sure if that's a problem of the YouTube compression, or because that track was poorly recorded.

kartik-venugopal commented 2 years ago

I mean, Aural has a Font scheme setting. If that Font scheme was not only the font shape, but also the size, I think it would be a nice addition: If you want a tiny UI, you can have it (even smaller than the one you are offering now). And if you've been coding a lot lately and your eyes are tired and you wish to enjoy a big font, you can have it too. I believe that would be the best of both worlds.

Hey, thanks for all your great feedback. I just wanted to reply to this point - the font size can absolutely be changed to anything you like, in 0.5 pt increments.

In the Font Scheme > "Customize" dialog, see the last 3 tabs. You can increase / decrease size for individual UI elements using the numerical stepper controls. See the image below, where the playlist track text size control is highlighted:

Screenshot 2022-10-29 at 2 38 53 PM
kartik-venugopal commented 2 years ago

But, however, is it possible/easy to change the window size programmatically? I ask this, because sometimes a bigger UI is welcome. I mean, Aural has a Font scheme setting. If that Font scheme was not only the font shape, but also the size, I think it would be a nice addition: If you want a tiny UI, you can have it (even smaller than the one you are offering now). And if you've been coding a lot lately and your eyes are tired and you wish to enjoy a big font, you can have it too. I believe that would be the best of both worlds.

But maybe the icons could be a problem there: do you use bitmap icons, or vector icons? (if they are vector, like SVG or something, no problem, you could resize them programmatically, when the user changes the font size).

Hmm ... changing the window size programmatically is definitely possible (that is how window layouts currently work - they change the playlist window size programmatically). However, until now, the main window (player) and effects window have been at a constant size. If you want to change the window size (main / effects windows) as a user, it is possible, but would be immensely complicated to implement because of AutoLayout constraints ... they are a nightmare to deal with. But it is definitely worth an experiment. I could simply make the window size variable right now and see what happens if I resize those 2 windows.

One alternative to changing the window size to any arbitrary size would be to offer a few preset window sizes: for example, tiny, normal, large. What do you think ?

I use bitmap images - PNG. They can be resized (via AutoLayout constraints) ... but this will be trickier than resizing the other UI elements because the other elements don't have fixed sizes ... currently, the icons have fixed sizes (eg. 30x20). Worth an experiment !

kartik-venugopal commented 2 years ago

BTW, have you ever experienced that some tracks downloaded from YouTube have some kind of noise pattern in the very high frequencies? I noticed it today for the first time, when listening to "Cillo - Breathe" (with Aural 3). It's weird because I've listened to it a lot of times and never realized. If I pump up the 10K and the 16K in the EQ, I find that noise pattern. If I lower both bands to the minimum, it disappears.

I thought it could be because of the new 15band EQ, but it's not.

In fact I realized it even happens when listening to it in YouTube: https://www.youtube.com/watch?v=6bILMMBRNno (listen from 3:45 to 3:55 and pay attention to the high frequencies during what should be silence).

I'm not sure if that's a problem of the YouTube compression, or because that track was poorly recorded.

Hey, that is interesting, but I have never noticed it. Of course, I have noticed variable quality among different tracks downloaded from YouTube (and I have downloaded a lot). But, I just assumed that it has to do with the quality of the original file that was uploaded and perhaps some transcoding / compression / resampling that YouTube does on its end - I don't know what it does.

BTW, the 15 band EQ is not a new thing. It was always there, but the 10 band EQ was removed leaving only the 15 band EQ now.

cesss commented 2 years ago

Don't worry about resizing it. It was just a suggestion in case it was easy. There are some UI toolkits in which you don't size the UI manually, but just tell the toolkit to put some widgets, and the toolkit will make the window or frame big enough for fitting all the widgets inside. If you change the font size, the widgets change their size, and so does the window. All this resizing is done by these toolkits, no need of any effort from the developer. So, I was making the suggestion just in case you were using a toolkit with that behaviour.

cesss commented 2 years ago

Hey, just found you implemented a widget for the touchbar! That's cool. I really think the touchbar came at the wrong time (ie: at the same time Apple did huge mistakes, like removal of the physical Esc key, removal of magsafe, removal of useful ports, etc), and I think that made the touchbar take a blame it didn't deserve. Had it be introduced at a better time for Apple, it would have been more successful.

kartik-venugopal commented 2 years ago

Hey, where did you find the widget ? I don't remember implementing anything for the TouchBar ! Can you attach an image or something showing me what you mean ?

EDIT - If you're talking about the play/pause, forward/backward controls, those come for free when your app becomes the "Now Playing" media app on macOS and Aural does integrate with Control Center to become the "Now Playing" app. But, the TouchBar functionality is just a bonus that you get when you implement that. I didn't do anything specifically for the TouchBar.

cesss commented 2 years ago

Well, it's complete mistery, @kartik-venugopal , because now I'm not able to get the touchbar control anymore! I tried several things, and nothing. And yes, the current song does show in the Control Center, but there's nothing in the touchbar no matter if Aural has the focus or not. I tried to give the focus to Finder, to web browsers, to Aural... nothing.

What I saw last weekend was the Aural icon next to Esc in the touchbar, which was quite cool to see, and then, to the right of it the play buttons and I believe that the tracking position too. No idea why it showed last Sunday, and not anymore...