Git Product home page Git Product logo

tg's People

Contributors

alexwithbeard avatar dmnc avatar jepler avatar pingumacpenguin avatar stefantalpalaru avatar vacaboja avatar wahlstedt avatar xyzzy42 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tg's Issues

Manually select audio device

Basically the name of the feature speaks of itself. I'd like to be able to manually change input audio device which the program will use.

implementing self-calibration

I've implemented a self calibration. It depends on the computer clock being regulated to at least one second per day. On Linux systems NTPD regulates the time far more accurately. By comparing the sound data frame count to the clock one can accurately calibrate the actual frequency. Since the computer OS is not real time, one has to wait considerable time to get a horologically accurate rate, between 12 and 24 hours.

The self calibration watches a window average of the computed calibration correction, and when it is less than 0.001 s/day it will start updating the calibration every 10 minutes. I've attached two graphs of calibration value vs runtime. One can see that the calibration varies a lot a first, but after about 24 hours the variation is far less than the 0.1 s/day increment that the program currently uses to set the calibration. Just leave your computer running with the tg-timer for a day and you are all set.

calibration

calibration-close

if someone else has a fork, I could add it to yours if you like.

[Feature] Custom periodic tick marks on the time strip graph

Problems with a wheel in the train can show themselves as periodic changes in amplitude or rate, with the period equal to the period of the wheel. E.g., one minute for the center wheel.

The time strip chart current has marks for 10 seconds and 1 minute. Allow custom tick marks, perhaps as marks on one side, at a custom interval. This can be set to the period of one of the wheels.

To be more accurate, the tick marks should not be based on elapsed time, but on ticks. The time would be more or less, depending on how slow or fast the watch is running at the moment. For example, a 15 tooth escapement in a 18,000 bph movement takes 3 seconds to revolve. But the the marks would be every 7.5 tick-tock pairs, not every 3 seconds. But just counting ticks would lead to long term errors for longer periods like the center wheel or the mainspring barrel, as tg will miss a few ticks due to problems with audio noise or quality. So it would be necessary to try to account for that.

Instead of just a single user supplied period, the user could inter the wheel train's information. The teeth on each wheel and the number of leaves its pinion. Then the period of each wheel could be automatically determined and multiple wheels could be shown at once. This might make it easier to identify when an error corresponds to the period of a wheel.

Instead of just a mark, a continuous sine wave could be drawn. The sine wave would show the position of the wheel in its revolution.

[Feature] Use standard format for snapshot data

TG uses a custom text based format to save the snapshots. This makes it hard to load the data into another program, like R or Python. These tools could be used to do a more sophisticated analysis of the data, such as a generating an Allan deviation plot.

Use a more standard format, such as jSON or XML, for the save data. This will make it easier to import, since libraries for reading it are common on virtually all platforms. jSON is also text based and should be comparable in efficiency to the custom format tg uses.

Integer comparison.

A minor issue, when compiling (on Linux), I see the following warning.

src/algo.c: In function ‘locate_events’:
src/algo.c:609:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
events[i] + p->timestamp < p->sample_count ||

This is a potential risk, but not a major bug.

Error opening audio input Mac OS Big Sur 11.1

Hi,

I got this error when I try to laugh tg-timer:
||PaMacCore (AUHAL)|| Error on line 1277: err='-66748', msg=Unknown Error
Error opening audio input: Internal PortAudio error

Have you got a idea and and a solution to solve this?

Best regard

Errors when launching on OSX

WARNING: Method userSpaceScaleFactor in class NSView is deprecated on 10.7 and later. It should not be used in new applications. Use convertRectToBacking: instead.

and

WARNING: 140: This application, or a library it uses, is using the deprecated Carbon Component Manager for hosting Audio Units. Support for this will be removed in a future release. Also, this makes the host incompatible with version 3 audio units. Please transition to the API's in AudioComponent.h.

I'm guessing the second is a GTK+2/3 issue as I believe gtk+3 does not use carbon. The first one, I am completely lost on - it looks like it's probably from somewhere up the dependency tree to me.

Support for low BPH clocks

I would love to use tg-timer with clocks with low BPH such as mechanical wall clocks, for example one is running with 6300 bph. It seems to me code is not designed to process >0.5s periods so my hope for a quick fix is quite faint.

[documentation request] Microphone guidance

Please close if this is an inappropriate ticket / request, but i was thinking it would be helpful for users to have some kind of guidance on setting up their hardware to use with this tool maybe included in the readme (or even just a link to something)

[Feature] Long term time strip graph

The time strip graph, on the left side, is limited in the amount of time it can display based on the vertical resolution of the screen. The most it can do it about 3 minutes. Much less on a small screen.

For longer term accuracy, it would be good to have a longer strip available. As an example, a point where the center wheel binds would only show up every hour.

One idea is to support an alternate layout, which places the strip chart horizontally. This way it can be longer, since screens are wider than tall and the tg status bar would not be using space. One or more row(s) of the waveform displays could be eliminated in this layout.

Another idea is to support a zoom out mode. Each row (or column in a horizontal layout) would not be one sample, but multiple samples grouped together, providing a 2x, 3x, etc. zoom out factor.

Here are some ideas for different ways multiple samples could be shown in a single pixel/row of the strip chart:

  • A single pixel that corresponds to the mean of the sample group (of 2, 3, etc. or more samples based on zoom out factor).
  • As above, but the median value. This is more robust, i.e. less likely to have a significant error due to a single glitch (audio related) in a group of samples.
  • A line, showing the range from the two extreme samples.
  • A multi-colored line, similar to a box plot of the sample distribution. A darker color line in the center shows the range from the 1st to 3rd quartile, while a lighter color shows the rest of the limits (as in previous example). Outliers greater than 1.5*IQR are shown as individual dots.

[Bug] Crash when clicking CENTER on the trace on MacOS Ventura

Hi,

Whenever I click "CENTER" on the trace the program immediately crashes. The terminal shows zsh: segmentation fault tg-timer

Also attaching the OS "unexpected quit" report:

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

Process:               tg-timer [43462]
Path:                  /opt/homebrew/*/tg-timer
Identifier:            tg-timer
Version:               ???
Code Type:             ARM-64 (Native)
Parent Process:        zsh [40657]
Responsible:           Terminal [40655]
User ID:               501

Date/Time:             2023-03-30 18:32:59.3248 +0300
OS Version:            macOS 13.2.1 (22D68)
Report Version:        12
Anonymous UUID:        74BAC681-36D2-B0CD-18F6-57CBBE946561

Sleep/Wake UUID:       B90505FD-CA01-4EB9-976C-003A012566C4

Time Awake Since Boot: 88000 seconds
Time Since Wake:       7675 seconds

System Integrity Protection: enabled

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

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000000
Exception Codes:       0x0000000000000001, 0x0000000000000000

Termination Reason:    Namespace SIGNAL, Code 11 Segmentation fault: 11
Terminating Process:   exc handler [43462]

VM Region Info: 0 is not in any region.  Bytes before following region: 4376117248
      REGION TYPE                    START - END         [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      UNUSED SPACE AT START
--->  
      __TEXT                      104d64000-104d78000    [   80K] r-x/r-x SM=COW  ...ew/*/tg-timer

Thread 0 Crashed::  Dispatch queue: com.apple.main-thread
0   tg-timer                      	       0x104d74498 handle_center_trace + 28
1   libgobject-2.0.0.dylib        	       0x105b7a5b4 _g_closure_invoke_va + 232
2   libgobject-2.0.0.dylib        	       0x105b7a5b4 _g_closure_invoke_va + 232
3   libgobject-2.0.0.dylib        	       0x105b9000c g_signal_emit_valist + 864
4   libgobject-2.0.0.dylib        	       0x105b90870 g_signal_emit + 28
5   libgtk-3.0.dylib              	       0x106033478 gtk_button_do_release + 68
6   libgtk-3.0.dylib              	       0x106032fe8 gtk_real_button_released + 208
7   libgobject-2.0.0.dylib        	       0x105b7a5b4 _g_closure_invoke_va + 232
8   libgobject-2.0.0.dylib        	       0x105b9000c g_signal_emit_valist + 864
9   libgobject-2.0.0.dylib        	       0x105b90870 g_signal_emit + 28
10  libgtk-3.0.dylib              	       0x106033548 multipress_released_cb + 48
11  libgtk-3.0.dylib              	       0x105ff7de0 _gtk_marshal_VOID__INT_DOUBLE_DOUBLEv + 80
12  libgobject-2.0.0.dylib        	       0x105b7a5b4 _g_closure_invoke_va + 232
13  libgobject-2.0.0.dylib        	       0x105b9000c g_signal_emit_valist + 864
14  libgobject-2.0.0.dylib        	       0x105b90870 g_signal_emit + 28
15  libgtk-3.0.dylib              	       0x1060e7e14 gtk_gesture_multi_press_end + 128
16  libgobject-2.0.0.dylib        	       0x105b7d6e8 g_cclosure_marshal_VOID__BOXEDv + 116
17  libgobject-2.0.0.dylib        	       0x105b7a5b4 _g_closure_invoke_va + 232
18  libgobject-2.0.0.dylib        	       0x105b9000c g_signal_emit_valist + 864
19  libgobject-2.0.0.dylib        	       0x105b90870 g_signal_emit + 28
20  libgtk-3.0.dylib              	       0x1060e6968 _gtk_gesture_set_recognized + 88
21  libgtk-3.0.dylib              	       0x1060e489c _gtk_gesture_check_recognized + 68
22  libgtk-3.0.dylib              	       0x1060e61e4 gtk_gesture_handle_event + 268
23  libgtk-3.0.dylib              	       0x1060e96c8 gtk_gesture_single_handle_event + 360
24  libgtk-3.0.dylib              	       0x1060b4050 gtk_event_controller_handle_event + 124
25  libgtk-3.0.dylib              	       0x106252a04 _gtk_widget_run_controllers + 124
26  libgtk-3.0.dylib              	       0x105ff34bc _gtk_marshal_BOOLEAN__BOXEDv + 124
27  libgobject-2.0.0.dylib        	       0x105b7a5b4 _g_closure_invoke_va + 232
28  libgobject-2.0.0.dylib        	       0x105b9000c g_signal_emit_valist + 864
29  libgobject-2.0.0.dylib        	       0x105b90870 g_signal_emit + 28
30  libgtk-3.0.dylib              	       0x106252634 gtk_widget_event_internal + 300
31  libgtk-3.0.dylib              	       0x10612b7f4 propagate_event + 388
32  libgtk-3.0.dylib              	       0x10612abfc gtk_main_do_event + 1068
33  libgdk-3.0.dylib              	       0x10598676c _gdk_event_emit + 64
34  libgdk-3.0.dylib              	       0x1059aa2b4 gdk_event_dispatch + 52
35  libglib-2.0.0.dylib           	       0x106901c3c g_main_context_dispatch + 256
36  libglib-2.0.0.dylib           	       0x106901f5c g_main_context_iterate + 436
37  libglib-2.0.0.dylib           	       0x106901fc4 g_main_context_iteration + 60
38  libgio-2.0.0.dylib            	       0x1067a49b0 g_application_run + 548
39  tg-timer                      	       0x104d7109c main + 204
40  dyld                          	       0x1a58c7e50 start + 2544

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

Thread 2:: pool-spawner
0   libsystem_kernel.dylib        	       0x1a5bb584c __psynch_cvwait + 8
1   libsystem_pthread.dylib       	       0x1a5bf2638 _pthread_cond_wait + 1232
2   libglib-2.0.0.dylib           	       0x10694dabc g_cond_wait + 44
3   libglib-2.0.0.dylib           	       0x1068d33a4 g_async_queue_pop_intern_unlocked + 116
4   libglib-2.0.0.dylib           	       0x106928638 g_thread_pool_spawn_thread + 124
5   libglib-2.0.0.dylib           	       0x10692815c g_thread_proxy + 68
6   libsystem_pthread.dylib       	       0x1a5bf206c _pthread_start + 148
7   libsystem_pthread.dylib       	       0x1a5bece2c thread_start + 8

Thread 3:: gmain
0   libsystem_kernel.dylib        	       0x1a5bbd130 __select + 8
1   libglib-2.0.0.dylib           	       0x106910b64 g_poll + 424
2   libglib-2.0.0.dylib           	       0x106901efc g_main_context_iterate + 340
3   libglib-2.0.0.dylib           	       0x106901fc4 g_main_context_iteration + 60
4   libglib-2.0.0.dylib           	       0x10690335c glib_worker_main + 48
5   libglib-2.0.0.dylib           	       0x10692815c g_thread_proxy + 68
6   libsystem_pthread.dylib       	       0x1a5bf206c _pthread_start + 148
7   libsystem_pthread.dylib       	       0x1a5bece2c thread_start + 8

Thread 4:: caulk.messenger.shared:17
0   libsystem_kernel.dylib        	       0x1a5bb1fcc semaphore_wait_trap + 8
1   caulk                         	       0x1af0d6cfc caulk::mach::semaphore::wait_or_error() + 28
2   caulk                         	       0x1af0b9634 caulk::concurrent::details::worker_thread::run() + 56
3   caulk                         	       0x1af0b9278 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*) + 96
4   libsystem_pthread.dylib       	       0x1a5bf206c _pthread_start + 148
5   libsystem_pthread.dylib       	       0x1a5bece2c thread_start + 8

Thread 5:
0   libsystem_pthread.dylib       	       0x1a5bece18 start_wqthread + 0

Thread 6:: com.apple.audio.IOThread.client
0   libsystem_kernel.dylib        	       0x1a5bb2050 mach_msg2_trap + 8
1   libsystem_kernel.dylib        	       0x1a5bc411c mach_msg2_internal + 80
2   libsystem_kernel.dylib        	       0x1a5bbac24 mach_msg_overwrite + 452
3   libsystem_kernel.dylib        	       0x1a5bb23cc mach_msg + 24
4   CoreAudio                     	       0x1a8000bbc HALB_MachPort::SendSimpleMessageWithSimpleReply(unsigned int, unsigned int, int, int&, bool, unsigned int) + 104
5   CoreAudio                     	       0x1a7ed3488 HALC_ProxyIOContext::IOWorkLoop() + 3612
6   CoreAudio                     	       0x1a7ed2024 invocation function for block in HALC_ProxyIOContext::HALC_ProxyIOContext(unsigned int, unsigned int) + 116
7   CoreAudio                     	       0x1a805caec HALB_IOThread::Entry(void*) + 88
8   libsystem_pthread.dylib       	       0x1a5bf206c _pthread_start + 148
9   libsystem_pthread.dylib       	       0x1a5bece2c thread_start + 8

Thread 7:
0   libsystem_kernel.dylib        	       0x1a5bb584c __psynch_cvwait + 8
1   libsystem_pthread.dylib       	       0x1a5bf2638 _pthread_cond_wait + 1232
2   tg-timer                      	       0x104d70690 computing_thread + 96
3   libsystem_pthread.dylib       	       0x1a5bf206c _pthread_start + 148
4   libsystem_pthread.dylib       	       0x1a5bece2c thread_start + 8

Thread 8:: com.apple.NSEventThread
0   libsystem_kernel.dylib        	       0x1a5bb2050 mach_msg2_trap + 8
1   libsystem_kernel.dylib        	       0x1a5bc411c mach_msg2_internal + 80
2   libsystem_kernel.dylib        	       0x1a5bbac24 mach_msg_overwrite + 452
3   libsystem_kernel.dylib        	       0x1a5bb23cc mach_msg + 24
4   CoreFoundation                	       0x1a5cd1bb0 __CFRunLoopServiceMachPort + 160
5   CoreFoundation                	       0x1a5cd049c __CFRunLoopRun + 1232
6   CoreFoundation                	       0x1a5ccf878 CFRunLoopRunSpecific + 612
7   AppKit                        	       0x1a908019c _NSEventThread + 172
8   libsystem_pthread.dylib       	       0x1a5bf206c _pthread_start + 148
9   libsystem_pthread.dylib       	       0x1a5bece2c thread_start + 8

Thread 9:
0   libsystem_kernel.dylib        	       0x1a5bbd130 __select + 8
1   libglib-2.0.0.dylib           	       0x106910b64 g_poll + 424
2   libgdk-3.0.dylib              	       0x1059aa944 select_thread_func + 244
3   libsystem_pthread.dylib       	       0x1a5bf206c _pthread_start + 148
4   libsystem_pthread.dylib       	       0x1a5bece2c thread_start + 8

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

Thread 11:
0   libsystem_pthread.dylib       	       0x1a5bece18 start_wqthread + 0

Thread 12:: CVDisplayLink
0   libsystem_kernel.dylib        	       0x1a5bb584c __psynch_cvwait + 8
1   libsystem_pthread.dylib       	       0x1a5bf2664 _pthread_cond_wait + 1276
2   CoreVideo                     	       0x1adb1aa20 CVDisplayLink::waitUntil(unsigned long long) + 324
3   CoreVideo                     	       0x1adb19af0 CVDisplayLink::runIOThread() + 504
4   libsystem_pthread.dylib       	       0x1a5bf206c _pthread_start + 148
5   libsystem_pthread.dylib       	       0x1a5bece2c thread_start + 8


Thread 0 crashed with ARM Thread State (64-bit):
    x0: 0x0000000135738760   x1: 0x00006000023611d0   x2: 0x0000000135738760   x3: 0x000000016b09a9d0
    x4: 0x0000000104d7447c   x5: 0x0000000000000000   x6: 0x0000000000000000   x7: 0x0000000105b7c9d4
    x8: 0x0000000000000000   x9: 0x0000000000000000  x10: 0x0000000000000002  x11: 0x0000000000000001
   x12: 0x0000000000000001  x13: 0x000000016b09a8d0  x14: 0x00000000000007fb  x15: 0x00000000fda0a03f
   x16: 0x00000001a5becaf0  x17: 0x00000000fda0a03f  x18: 0x0000000000000000  x19: 0x00006000023611d0
   x20: 0x000060000326aeb0  x21: 0x0000000000000000  x22: 0x000000016b09a9d0  x23: 0x0000000135738760
   x24: 0x0000000000000000  x25: 0x0000000000000000  x26: 0x0000000000000002  x27: 0x0000000105b7c9d4
   x28: 0x0000000000000000   fp: 0x000000016b09a810   lr: 0x0000000105b7a5b4
    sp: 0x000000016b09a800   pc: 0x0000000104d74498 cpsr: 0x40001000
   far: 0x0000000000000000  esr: 0x92000006 (Data Abort) byte read Translation fault

Binary Images:
       0x104d64000 -        0x104d77fff tg-timer (*) <2b4812c5-9b9e-378f-95fe-925c31516fc8> /opt/homebrew/*/tg-timer
       0x105b70000 -        0x105babfff libgobject-2.0.0.dylib (*) <73b4a699-9497-373d-809f-b5cd8a53e5ea> /opt/homebrew/*/libgobject-2.0.0.dylib
       0x105fe8000 -        0x1065bbfff libgtk-3.0.dylib (*) <fad941d1-9627-327b-a7dd-950019751325> /opt/homebrew/*/libgtk-3.0.dylib
       0x105970000 -        0x1059d7fff libgdk-3.0.dylib (*) <46f117b9-741e-304c-b029-d5c955e46ddf> /opt/homebrew/*/libgdk-3.0.dylib
       0x1068c8000 -        0x1069b7fff libglib-2.0.0.dylib (*) <06451657-b400-3e07-945d-358f09f8c513> /opt/homebrew/*/libglib-2.0.0.dylib
       0x10670c000 -        0x10683ffff libgio-2.0.0.dylib (*) <b5834437-3ede-3ead-a103-bc06ef14b64f> /opt/homebrew/*/libgio-2.0.0.dylib
       0x1a58c2000 -        0x1a594cba3 dyld (*) <191e84f1-4b95-39c8-b253-1c1ef56c0fa8> /usr/lib/dyld
       0x1a5beb000 -        0x1a5bf7ffb libsystem_pthread.dylib (*) <9f3b729a-ed04-3e65-adac-d75ad06ebbdc> /usr/lib/system/libsystem_pthread.dylib
       0x1a5bb1000 -        0x1a5beafeb libsystem_kernel.dylib (*) <3dcd49b9-b3c5-3d90-be40-a3b807cb9cd7> /usr/lib/system/libsystem_kernel.dylib
       0x1af0b7000 -        0x1af0e0fff com.apple.audio.caulk (1.0) <41def0d0-3b1f-3029-8e99-2c9304571021> /System/Library/PrivateFrameworks/caulk.framework/Versions/A/caulk
       0x1a7ced000 -        0x1a83f4fff com.apple.audio.CoreAudio (5.0) <e182f603-d6fa-3458-afb4-e3ccf4273180> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
       0x1a5c50000 -        0x1a6127fff com.apple.CoreFoundation (6.9) <18260df4-69a8-30d3-8175-fb8ae7ae7709> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
       0x1a8f1c000 -        0x1a9e27fff com.apple.AppKit (6.9) <88722053-0df0-3d4f-bf55-7e3c2d2c8e29> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
       0x1adb17000 -        0x1adb78fff com.apple.CoreVideo (1.8) <9147e445-3e39-3d2b-b970-5b8a51a4c869> /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo

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.3G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.3G(100%)

                                VIRTUAL   REGION 
REGION TYPE                        SIZE    COUNT (non-coalesced) 
===========                     =======  ======= 
Accelerate framework               128K        1 
Activity Tracing                   256K        1 
CG backing stores                 2944K        8 
CG image                           112K        5 
ColorSync                          528K       25 
CoreAnimation                      112K        7 
CoreGraphics                        48K        3 
CoreUI image data                  496K        7 
Foundation                          16K        1 
Kernel Alloc Once                   32K        1 
MALLOC                           299.4M       54 
MALLOC guard page                  192K        9 
MALLOC_LARGE (reserved)           13.8M        1         reserved VM address space (unallocated)
MALLOC_MEDIUM (reserved)         568.0M        7         reserved VM address space (unallocated)
MALLOC_NANO (reserved)           384.0M        1         reserved VM address space (unallocated)
STACK GUARD                       56.2M       13 
Stack                             14.4M       13 
VM_ALLOCATE                        384K       20 
__AUTH                             684K      174 
__AUTH_CONST                      12.2M      334 
__CTF                               756        1 
__DATA                            14.1M      355 
__DATA_CONST                      16.2M      373 
__DATA_DIRTY                       793K      115 
__FONT_DATA                        2352        1 
__LINKEDIT                       772.8M       39 
__OBJC_CONST                      1542K      148 
__OBJC_RO                         65.5M        1 
__OBJC_RW                         1988K        1 
__TEXT                           260.0M      389 
dyld private memory                256K        1 
mapped file                       80.5M       28 
shared memory                     1440K       18 
===========                     =======  ======= 
TOTAL                              2.5G     2155 
TOTAL, minus reserved VM space     1.6G     2155 



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

{"app_name":"tg-timer","timestamp":"2023-03-30 18:32:59.00 +0300","app_version":"","slice_uuid":"2b4812c5-9b9e-378f-95fe-925c31516fc8","build_version":"","platform":1,"share_with_app_devs":0,"is_first_party":1,"bug_type":"309","os_version":"macOS 13.2.1 (22D68)","roots_installed":0,"incident_id":"D094112D-5EEF-423B-B428-4E19C7D07B61","name":"tg-timer"}
{
  "uptime" : 88000,
  "procRole" : "Foreground",
  "version" : 2,
  "userID" : 501,
  "deployVersion" : 210,
  "modelCode" : "Mac14,7",
  "coalitionID" : 13257,
  "osVersion" : {
    "train" : "macOS 13.2.1",
    "build" : "22D68",
    "releaseType" : "User"
  },
  "captureTime" : "2023-03-30 18:32:59.3248 +0300",
  "incident" : "D094112D-5EEF-423B-B428-4E19C7D07B61",
  "pid" : 43462,
  "translated" : false,
  "cpuType" : "ARM-64",
  "roots_installed" : 0,
  "bug_type" : "309",
  "procLaunch" : "2023-03-30 18:31:29.9661 +0300",
  "procStartAbsTime" : 2110905037058,
  "procExitAbsTime" : 2113049116428,
  "procName" : "tg-timer",
  "procPath" : "\/opt\/homebrew\/*\/tg-timer",
  "parentProc" : "zsh",
  "parentPid" : 40657,
  "coalitionName" : "com.apple.Terminal",
  "crashReporterKey" : "74BAC681-36D2-B0CD-18F6-57CBBE946561",
  "responsiblePid" : 40655,
  "responsibleProc" : "Terminal",
  "wakeTime" : 7675,
  "sleepWakeUUID" : "B90505FD-CA01-4EB9-976C-003A012566C4",
  "sip" : "enabled",
  "vmRegionInfo" : "0 is not in any region.  Bytes before following region: 4376117248\n      REGION TYPE                    START - END         [ VSIZE] PRT\/MAX SHRMOD  REGION DETAIL\n      UNUSED SPACE AT START\n--->  \n      __TEXT                      104d64000-104d78000    [   80K] r-x\/r-x SM=COW  ...ew\/*\/tg-timer",
  "exception" : {"codes":"0x0000000000000001, 0x0000000000000000","rawCodes":[1,0],"type":"EXC_BAD_ACCESS","signal":"SIGSEGV","subtype":"KERN_INVALID_ADDRESS at 0x0000000000000000"},
  "termination" : {"flags":0,"code":11,"namespace":"SIGNAL","indicator":"Segmentation fault: 11","byProc":"exc handler","byPid":43462},
  "vmregioninfo" : "0 is not in any region.  Bytes before following region: 4376117248\n      REGION TYPE                    START - END         [ VSIZE] PRT\/MAX SHRMOD  REGION DETAIL\n      UNUSED SPACE AT START\n--->  \n      __TEXT                      104d64000-104d78000    [   80K] r-x\/r-x SM=COW  ...ew\/*\/tg-timer",
  "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":1240914,"threadState":{"x":[{"value":5191731040},{"value":105553153364432},{"value":5191731040},{"value":6090762704},{"value":4376183932,"symbolLocation":0,"symbol":"handle_center_trace"},{"value":0},{"value":0},{"value":4390898132,"symbolLocation":0,"symbol":"g_cclosure_marshal_VOID__VOIDv"},{"value":0},{"value":0},{"value":2},{"value":1},{"value":1},{"value":6090762448},{"value":2043},{"value":4255162431},{"value":7075711728,"symbolLocation":0,"symbol":"pthread_mutex_unlock"},{"value":4255162431},{"value":0},{"value":105553153364432},{"value":105553169133232},{"value":0},{"value":6090762704},{"value":5191731040},{"value":0},{"value":0},{"value":2},{"value":4390898132,"symbolLocation":0,"symbol":"g_cclosure_marshal_VOID__VOIDv"},{"value":0}],"flavor":"ARM_THREAD_STATE64","lr":{"value":4390888884},"cpsr":{"value":1073745920},"fp":{"value":6090762256},"sp":{"value":6090762240},"esr":{"value":2449473542,"description":"(Data Abort) byte read Translation fault"},"pc":{"value":4376183960,"matchesCrashFrame":1},"far":{"value":0}},"queue":"com.apple.main-thread","frames":[{"imageOffset":66712,"symbol":"handle_center_trace","symbolLocation":28,"imageIndex":0},{"imageOffset":42420,"symbol":"_g_closure_invoke_va","symbolLocation":232,"imageIndex":1},{"imageOffset":42420,"symbol":"_g_closure_invoke_va","symbolLocation":232,"imageIndex":1},{"imageOffset":131084,"symbol":"g_signal_emit_valist","symbolLocation":864,"imageIndex":1},{"imageOffset":133232,"symbol":"g_signal_emit","symbolLocation":28,"imageIndex":1},{"imageOffset":308344,"symbol":"gtk_button_do_release","symbolLocation":68,"imageIndex":2},{"imageOffset":307176,"symbol":"gtk_real_button_released","symbolLocation":208,"imageIndex":2},{"imageOffset":42420,"symbol":"_g_closure_invoke_va","symbolLocation":232,"imageIndex":1},{"imageOffset":131084,"symbol":"g_signal_emit_valist","symbolLocation":864,"imageIndex":1},{"imageOffset":133232,"symbol":"g_signal_emit","symbolLocation":28,"imageIndex":1},{"imageOffset":308552,"symbol":"multipress_released_cb","symbolLocation":48,"imageIndex":2},{"imageOffset":64992,"symbol":"_gtk_marshal_VOID__INT_DOUBLE_DOUBLEv","symbolLocation":80,"imageIndex":2},{"imageOffset":42420,"symbol":"_g_closure_invoke_va","symbolLocation":232,"imageIndex":1},{"imageOffset":131084,"symbol":"g_signal_emit_valist","symbolLocation":864,"imageIndex":1},{"imageOffset":133232,"symbol":"g_signal_emit","symbolLocation":28,"imageIndex":1},{"imageOffset":1048084,"symbol":"gtk_gesture_multi_press_end","symbolLocation":128,"imageIndex":2},{"imageOffset":55016,"symbol":"g_cclosure_marshal_VOID__BOXEDv","symbolLocation":116,"imageIndex":1},{"imageOffset":42420,"symbol":"_g_closure_invoke_va","symbolLocation":232,"imageIndex":1},{"imageOffset":131084,"symbol":"g_signal_emit_valist","symbolLocation":864,"imageIndex":1},{"imageOffset":133232,"symbol":"g_signal_emit","symbolLocation":28,"imageIndex":1},{"imageOffset":1042792,"symbol":"_gtk_gesture_set_recognized","symbolLocation":88,"imageIndex":2},{"imageOffset":1034396,"symbol":"_gtk_gesture_check_recognized","symbolLocation":68,"imageIndex":2},{"imageOffset":1040868,"symbol":"gtk_gesture_handle_event","symbolLocation":268,"imageIndex":2},{"imageOffset":1054408,"symbol":"gtk_gesture_single_handle_event","symbolLocation":360,"imageIndex":2},{"imageOffset":835664,"symbol":"gtk_event_controller_handle_event","symbolLocation":124,"imageIndex":2},{"imageOffset":2533892,"symbol":"_gtk_widget_run_controllers","symbolLocation":124,"imageIndex":2},{"imageOffset":46268,"symbol":"_gtk_marshal_BOOLEAN__BOXEDv","symbolLocation":124,"imageIndex":2},{"imageOffset":42420,"symbol":"_g_closure_invoke_va","symbolLocation":232,"imageIndex":1},{"imageOffset":131084,"symbol":"g_signal_emit_valist","symbolLocation":864,"imageIndex":1},{"imageOffset":133232,"symbol":"g_signal_emit","symbolLocation":28,"imageIndex":1},{"imageOffset":2532916,"symbol":"gtk_widget_event_internal","symbolLocation":300,"imageIndex":2},{"imageOffset":1325044,"symbol":"propagate_event","symbolLocation":388,"imageIndex":2},{"imageOffset":1321980,"symbol":"gtk_main_do_event","symbolLocation":1068,"imageIndex":2},{"imageOffset":92012,"symbol":"_gdk_event_emit","symbolLocation":64,"imageIndex":3},{"imageOffset":238260,"symbol":"gdk_event_dispatch","symbolLocation":52,"imageIndex":3},{"imageOffset":236604,"symbol":"g_main_context_dispatch","symbolLocation":256,"imageIndex":4},{"imageOffset":237404,"symbol":"g_main_context_iterate","symbolLocation":436,"imageIndex":4},{"imageOffset":237508,"symbol":"g_main_context_iteration","symbolLocation":60,"imageIndex":4},{"imageOffset":625072,"symbol":"g_application_run","symbolLocation":548,"imageIndex":5},{"imageOffset":53404,"symbol":"main","symbolLocation":204,"imageIndex":0},{"imageOffset":24144,"symbol":"start","symbolLocation":2544,"imageIndex":6}]},{"id":1240918,"frames":[{"imageOffset":7704,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":7}]},{"id":1240920,"name":"pool-spawner","frames":[{"imageOffset":18508,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":8},{"imageOffset":30264,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":7},{"imageOffset":547516,"symbol":"g_cond_wait","symbolLocation":44,"imageIndex":4},{"imageOffset":45988,"symbol":"g_async_queue_pop_intern_unlocked","symbolLocation":116,"imageIndex":4},{"imageOffset":394808,"symbol":"g_thread_pool_spawn_thread","symbolLocation":124,"imageIndex":4},{"imageOffset":393564,"symbol":"g_thread_proxy","symbolLocation":68,"imageIndex":4},{"imageOffset":28780,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":7},{"imageOffset":7724,"symbol":"thread_start","symbolLocation":8,"imageIndex":7}]},{"id":1240921,"name":"gmain","frames":[{"imageOffset":49456,"symbol":"__select","symbolLocation":8,"imageIndex":8},{"imageOffset":297828,"symbol":"g_poll","symbolLocation":424,"imageIndex":4},{"imageOffset":237308,"symbol":"g_main_context_iterate","symbolLocation":340,"imageIndex":4},{"imageOffset":237508,"symbol":"g_main_context_iteration","symbolLocation":60,"imageIndex":4},{"imageOffset":242524,"symbol":"glib_worker_main","symbolLocation":48,"imageIndex":4},{"imageOffset":393564,"symbol":"g_thread_proxy","symbolLocation":68,"imageIndex":4},{"imageOffset":28780,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":7},{"imageOffset":7724,"symbol":"thread_start","symbolLocation":8,"imageIndex":7}]},{"id":1240934,"name":"caulk.messenger.shared:17","frames":[{"imageOffset":4044,"symbol":"semaphore_wait_trap","symbolLocation":8,"imageIndex":8},{"imageOffset":130300,"symbol":"caulk::mach::semaphore::wait_or_error()","symbolLocation":28,"imageIndex":9},{"imageOffset":9780,"symbol":"caulk::concurrent::details::worker_thread::run()","symbolLocation":56,"imageIndex":9},{"imageOffset":8824,"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":96,"imageIndex":9},{"imageOffset":28780,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":7},{"imageOffset":7724,"symbol":"thread_start","symbolLocation":8,"imageIndex":7}]},{"id":1240961,"frames":[{"imageOffset":7704,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":7}]},{"id":1240962,"name":"com.apple.audio.IOThread.client","frames":[{"imageOffset":4176,"symbol":"mach_msg2_trap","symbolLocation":8,"imageIndex":8},{"imageOffset":78108,"symbol":"mach_msg2_internal","symbolLocation":80,"imageIndex":8},{"imageOffset":39972,"symbol":"mach_msg_overwrite","symbolLocation":452,"imageIndex":8},{"imageOffset":5068,"symbol":"mach_msg","symbolLocation":24,"imageIndex":8},{"imageOffset":3226556,"symbol":"HALB_MachPort::SendSimpleMessageWithSimpleReply(unsigned int, unsigned int, int, int&, bool, unsigned int)","symbolLocation":104,"imageIndex":10},{"imageOffset":1991816,"symbol":"HALC_ProxyIOContext::IOWorkLoop()","symbolLocation":3612,"imageIndex":10},{"imageOffset":1986596,"symbol":"invocation function for block in HALC_ProxyIOContext::HALC_ProxyIOContext(unsigned int, unsigned int)","symbolLocation":116,"imageIndex":10},{"imageOffset":3603180,"symbol":"HALB_IOThread::Entry(void*)","symbolLocation":88,"imageIndex":10},{"imageOffset":28780,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":7},{"imageOffset":7724,"symbol":"thread_start","symbolLocation":8,"imageIndex":7}]},{"id":1240995,"frames":[{"imageOffset":18508,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":8},{"imageOffset":30264,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":7},{"imageOffset":50832,"symbol":"computing_thread","symbolLocation":96,"imageIndex":0},{"imageOffset":28780,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":7},{"imageOffset":7724,"symbol":"thread_start","symbolLocation":8,"imageIndex":7}]},{"id":1241002,"name":"com.apple.NSEventThread","frames":[{"imageOffset":4176,"symbol":"mach_msg2_trap","symbolLocation":8,"imageIndex":8},{"imageOffset":78108,"symbol":"mach_msg2_internal","symbolLocation":80,"imageIndex":8},{"imageOffset":39972,"symbol":"mach_msg_overwrite","symbolLocation":452,"imageIndex":8},{"imageOffset":5068,"symbol":"mach_msg","symbolLocation":24,"imageIndex":8},{"imageOffset":531376,"symbol":"__CFRunLoopServiceMachPort","symbolLocation":160,"imageIndex":11},{"imageOffset":525468,"symbol":"__CFRunLoopRun","symbolLocation":1232,"imageIndex":11},{"imageOffset":522360,"symbol":"CFRunLoopRunSpecific","symbolLocation":612,"imageIndex":11},{"imageOffset":1458588,"symbol":"_NSEventThread","symbolLocation":172,"imageIndex":12},{"imageOffset":28780,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":7},{"imageOffset":7724,"symbol":"thread_start","symbolLocation":8,"imageIndex":7}]},{"id":1241005,"frames":[{"imageOffset":49456,"symbol":"__select","symbolLocation":8,"imageIndex":8},{"imageOffset":297828,"symbol":"g_poll","symbolLocation":424,"imageIndex":4},{"imageOffset":239940,"symbol":"select_thread_func","symbolLocation":244,"imageIndex":3},{"imageOffset":28780,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":7},{"imageOffset":7724,"symbol":"thread_start","symbolLocation":8,"imageIndex":7}]},{"id":1241511,"frames":[{"imageOffset":7704,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":7}]},{"id":1243033,"frames":[{"imageOffset":7704,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":7}]},{"id":1243083,"name":"CVDisplayLink","frames":[{"imageOffset":18508,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":8},{"imageOffset":30308,"symbol":"_pthread_cond_wait","symbolLocation":1276,"imageIndex":7},{"imageOffset":14880,"symbol":"CVDisplayLink::waitUntil(unsigned long long)","symbolLocation":324,"imageIndex":13},{"imageOffset":10992,"symbol":"CVDisplayLink::runIOThread()","symbolLocation":504,"imageIndex":13},{"imageOffset":28780,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":7},{"imageOffset":7724,"symbol":"thread_start","symbolLocation":8,"imageIndex":7}]}],
  "usedImages" : [
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4376117248,
    "size" : 81920,
    "uuid" : "2b4812c5-9b9e-378f-95fe-925c31516fc8",
    "path" : "\/opt\/homebrew\/*\/tg-timer",
    "name" : "tg-timer"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4390846464,
    "size" : 245760,
    "uuid" : "73b4a699-9497-373d-809f-b5cd8a53e5ea",
    "path" : "\/opt\/homebrew\/*\/libgobject-2.0.0.dylib",
    "name" : "libgobject-2.0.0.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4395532288,
    "size" : 6111232,
    "uuid" : "fad941d1-9627-327b-a7dd-950019751325",
    "path" : "\/opt\/homebrew\/*\/libgtk-3.0.dylib",
    "name" : "libgtk-3.0.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4388749312,
    "size" : 425984,
    "uuid" : "46f117b9-741e-304c-b029-d5c955e46ddf",
    "path" : "\/opt\/homebrew\/*\/libgdk-3.0.dylib",
    "name" : "libgdk-3.0.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4404838400,
    "size" : 983040,
    "uuid" : "06451657-b400-3e07-945d-358f09f8c513",
    "path" : "\/opt\/homebrew\/*\/libglib-2.0.0.dylib",
    "name" : "libglib-2.0.0.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4403019776,
    "size" : 1261568,
    "uuid" : "b5834437-3ede-3ead-a103-bc06ef14b64f",
    "path" : "\/opt\/homebrew\/*\/libgio-2.0.0.dylib",
    "name" : "libgio-2.0.0.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7072391168,
    "size" : 568228,
    "uuid" : "191e84f1-4b95-39c8-b253-1c1ef56c0fa8",
    "path" : "\/usr\/lib\/dyld",
    "name" : "dyld"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7075704832,
    "size" : 53244,
    "uuid" : "9f3b729a-ed04-3e65-adac-d75ad06ebbdc",
    "path" : "\/usr\/lib\/system\/libsystem_pthread.dylib",
    "name" : "libsystem_pthread.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7075467264,
    "size" : 237548,
    "uuid" : "3dcd49b9-b3c5-3d90-be40-a3b807cb9cd7",
    "path" : "\/usr\/lib\/system\/libsystem_kernel.dylib",
    "name" : "libsystem_kernel.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7231729664,
    "CFBundleShortVersionString" : "1.0",
    "CFBundleIdentifier" : "com.apple.audio.caulk",
    "size" : 172032,
    "uuid" : "41def0d0-3b1f-3029-8e99-2c9304571021",
    "path" : "\/System\/Library\/PrivateFrameworks\/caulk.framework\/Versions\/A\/caulk",
    "name" : "caulk"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7110316032,
    "CFBundleShortVersionString" : "5.0",
    "CFBundleIdentifier" : "com.apple.audio.CoreAudio",
    "size" : 7372800,
    "uuid" : "e182f603-d6fa-3458-afb4-e3ccf4273180",
    "path" : "\/System\/Library\/Frameworks\/CoreAudio.framework\/Versions\/A\/CoreAudio",
    "name" : "CoreAudio",
    "CFBundleVersion" : "5.0"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7076118528,
    "CFBundleShortVersionString" : "6.9",
    "CFBundleIdentifier" : "com.apple.CoreFoundation",
    "size" : 5079040,
    "uuid" : "18260df4-69a8-30d3-8175-fb8ae7ae7709",
    "path" : "\/System\/Library\/Frameworks\/CoreFoundation.framework\/Versions\/A\/CoreFoundation",
    "name" : "CoreFoundation",
    "CFBundleVersion" : "1953.300"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7129382912,
    "CFBundleShortVersionString" : "6.9",
    "CFBundleIdentifier" : "com.apple.AppKit",
    "size" : 15777792,
    "uuid" : "88722053-0df0-3d4f-bf55-7e3c2d2c8e29",
    "path" : "\/System\/Library\/Frameworks\/AppKit.framework\/Versions\/C\/AppKit",
    "name" : "AppKit",
    "CFBundleVersion" : "2299.40.118"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7209054208,
    "CFBundleShortVersionString" : "1.8",
    "CFBundleIdentifier" : "com.apple.CoreVideo",
    "size" : 401408,
    "uuid" : "9147e445-3e39-3d2b-b970-5b8a51a4c869",
    "path" : "\/System\/Library\/Frameworks\/CoreVideo.framework\/Versions\/A\/CoreVideo",
    "name" : "CoreVideo",
    "CFBundleVersion" : "0.0"
  }
],
  "sharedCache" : {
  "base" : 7071744000,
  "size" : 3447455744,
  "uuid" : "835716ae-b363-3187-b065-cf94139bfc85"
},
  "vmSummary" : "ReadOnly portion of Libraries: Total=1.0G resident=0K(0%) swapped_out_or_unallocated=1.0G(100%)\nWritable regions: Total=1.3G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.3G(100%)\n\n                                VIRTUAL   REGION \nREGION TYPE                        SIZE    COUNT (non-coalesced) \n===========                     =======  ======= \nAccelerate framework               128K        1 \nActivity Tracing                   256K        1 \nCG backing stores                 2944K        8 \nCG image                           112K        5 \nColorSync                          528K       25 \nCoreAnimation                      112K        7 \nCoreGraphics                        48K        3 \nCoreUI image data                  496K        7 \nFoundation                          16K        1 \nKernel Alloc Once                   32K        1 \nMALLOC                           299.4M       54 \nMALLOC guard page                  192K        9 \nMALLOC_LARGE (reserved)           13.8M        1         reserved VM address space (unallocated)\nMALLOC_MEDIUM (reserved)         568.0M        7         reserved VM address space (unallocated)\nMALLOC_NANO (reserved)           384.0M        1         reserved VM address space (unallocated)\nSTACK GUARD                       56.2M       13 \nStack                             14.4M       13 \nVM_ALLOCATE                        384K       20 \n__AUTH                             684K      174 \n__AUTH_CONST                      12.2M      334 \n__CTF                               756        1 \n__DATA                            14.1M      355 \n__DATA_CONST                      16.2M      373 \n__DATA_DIRTY                       793K      115 \n__FONT_DATA                        2352        1 \n__LINKEDIT                       772.8M       39 \n__OBJC_CONST                      1542K      148 \n__OBJC_RO                         65.5M        1 \n__OBJC_RW                         1988K        1 \n__TEXT                           260.0M      389 \ndyld private memory                256K        1 \nmapped file                       80.5M       28 \nshared memory                     1440K       18 \n===========                     =======  ======= \nTOTAL                              2.5G     2155 \nTOTAL, minus reserved VM space     1.6G     2155 \n",
  "legacyInfo" : {
  "threadTriggered" : {
    "queue" : "com.apple.main-thread"
  }
},
  "trialInfo" : {
  "rollouts" : [
    {
      "rolloutId" : "5f72dc58705eff005a46b3a9",
      "factorPackIds" : {

      },
      "deploymentId" : 240000015
    },
    {
      "rolloutId" : "62b4513af75dc926494899c6",
      "factorPackIds" : {
        "COREOS_ICD" : "62fbe3cfa9a700130f60b3ea"
      },
      "deploymentId" : 240000019
    }
  ],
  "experiments" : [
    {
      "treatmentId" : "c28e4ee6-1b08-4f90-8e05-2809e78310a3",
      "experimentId" : "6317d2003d24842ff850182a",
      "deploymentId" : 400000013
    }
  ]
}
}

Model: Mac14,7, BootROM 8419.80.7, proc 8:4:4 processors, 16 GB, SMC 
Graphics: Apple M2, Apple M2, Built-In
Display: DELL P2722HE, 1920 x 1080 (1080p FHD - Full High Definition), Main, MirrorOff, Online
Display: Color LCD, 2560 x 1600 Retina, MirrorOff, Online
Memory Module: LPDDR5, Hynix
AirPort: spairport_wireless_card_type_wifi (0x14E4, 0x4378), wl0: Nov 30 2022 02:22:05 version 18.20.379.9.7.8.145 FWID 01-f2bc7a93
Bluetooth: Version (null), 0 services, 0 devices, 0 incoming serial ports
Network Service: Wi-Fi, AirPort, en0
USB Device: USB31Bus
USB Device: USB31Bus
USB Device: USB5806 Smart Hub
USB Device: USB 10/100/1000 LAN
USB Device: USB2806 Smart Hub
USB Device: Hub Feature Controller
Thunderbolt Bus: MacBook Pro, Apple Inc.
Thunderbolt Bus: MacBook Pro, Apple Inc.

Idea - timing

There is an online lighting detector network. It has one interesting feature. It uses a GPS in two ways.
First you get the location of the detector. Second it uses an interupt from the GPS that it will generate every second. From two interupts and a clock counter, it get get the number of computer clock ticks in a second. Millionths of a second is possible. Very accurately and that handles temperature, voltage differences over time. A GPS is of course highly stable over time.

It might be an idea to add this in to get a very accurate reference clock that doesn't depend on sound cards etc.

Just an idea.

Supporting SemVer

It would be really nice to support http://semver.org/.

It's picking up lots of support and provides a really easy to understand framework for picking version numbers.

Please ignore and close if you're already intending to do this. I just saw a 0.4.99 version number somewhere and thought it was worth highlighting.

[Feature] Continuous auto-calibration using audio timestamps

The audio buffers as supplied by PortAudio should have timestamps. If the computer's clock is being synchronized with NTP, then these timestamps should be very accurate. More accurate than a typical quartz watch.

So it should be possible to use these timestamps to calibrate tg. The number of samples received vs the timestamps between those samples should give the actual sampling rate.

This can be done continuously, so that as the sampling rate changes with temperature the calibration changes too.

For this to work, it requires:

  • PortAudio's timestamps are based on the computer's system clock and not PortAudio synthetically constructing them based on the samples received since the previous timestamp. On Linux, ALSA does provide real timestamps, generated in the kernel from the audio driver's interrupt code. PortAudio would need to use these.
  • The system clock is more accurate over the τ of interest than the audio hardware's clock. With NTP, even with an internet based NTP server, this should be the case.
  • That there is not a source of error (over the appropriate τ) prior to the timestamp of the audio. An example would be buffering in the microcontroller used in a USB audio device, to buffer data between each isochronous USB frame, which allows for unmeasured error on the computer's side of the USB interface. USB audio devices shouldn't do this.

Mono input support

Currently, when using a mono input (I'm using a piezoelectric mic) tg gives the following error.

Error opening audio input: Invalid number of channels

I have tried reducing the number of channels at https://github.com/vacaboja/tg/blob/master/audio.c#L54 by doing

    PaDeviceIndex defaultIndex = Pa_GetDefaultInputDevice();
    int maxChannels = Pa_GetDeviceInfo(defaultIndex)->maxInputChannels;
    err = Pa_OpenDefaultStream(&stream,maxChannels,0,paFloat32,PA_SAMPLE_RATE,paFramesPerBufferUnspecified,paudio_callback,x);

Or even just forcing to 1, but this kills the signal entirely.

I'm not a C programmer at all, so I'm just fumbling around in the dark here really 😞

Interface is missing icons on Mac OS X

I see this on the snapshot tab

image

And this in the log:

(tg:42716): Gtk-WARNING **: Could not load a pixbuf from /org/gtk/libgtk/theme/Adwaita/assets/check-symbolic.svg.
This may indicate that pixbuf loaders or the mime database could not be found.

Icons seem to be missing across the interface. The open and close file dialogue suffers from the same fate.

I am unsure if this is a tg thing or a GTK+ thing?

Problems building for windows

I'm struggling to build this project on Windows.
I've installed and updated MSYS2 - no issues there.

I then tried pasting this entire code into the MSYS shell:

```sh
pacman -S mingw-w64-x86_64-gcc make pkg-config mingw-w64-x86_64-gtk3 mingw-w64-x86_64-portaudio mingw-w64-x86_64-fftw git autoconf automake libtool
git clone https://github.com/vacaboja/tg.git
cd tg
./autogen.sh
./configure
make

but nothing happened, it instantly returned to >
So I tried typing the lines following sh in one by one, the pacman and git lines directly into the MSYS shell, and the remainder into Mingw64.exe shell. The application build, but running it (as administrator, and after copying all the .dlls from a released version of TG) produced the dreaded:
the application was unable to start correctly (0xc00007b)

Any suggestions?

screen size problem for 7 inch lcd.

I've built this on a raspberry pi with a 7 inch LCD. Is there a way to adjust the programs screen size by modifying the code or config file associated with it?

TG struggles or fails to detect anything below 18000 BPH

TG detects my Swiza clock and Timex watch without any trouble, they both run at 18000 BPH. But TG struggles to detect my portable alarm clock which runs at 14400 BPH, and completely fails to detect my Equity alarm clock which runs at 12000 BPH. All tests were done using my laptop's built-in microphone without any changes between tests. It picks up a fairly clean signal for being a laptop mic.

Video demonstration: https://www.youtube.com/watch?v=O1wFaMU1lsc

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.