diff --git a/Help/keyboard.html b/Help/keyboard.html
index 43263587..1662d625 100644
--- a/Help/keyboard.html
+++ b/Help/keyboard.html
@@ -11,11 +11,11 @@
File handling |
- Ctrl-O |
+ Ctrl+O |
Show file open dialog |
- Ctrl-S |
+ Ctrl-S |
Save detections to the records archive.
|
@@ -24,116 +24,116 @@
Analysis |
- Ctrl-A |
+ Ctrl-A |
Analyse the current file.
|
- Shift-Ctrl-A |
+ Shift-Ctrl-A |
Analyse all open files.
|
- Esc |
+ Esc |
Stop analysis |
- Ctrl-Tab |
+ Ctrl-Tab |
Toggle between exploring the archive and the latest analysis results. This allows you to compare current detections with those you've previously recorded. |
Transport Controls |
- SpaceBar |
+ SpaceBar |
Toggle Play/Pause the audio |
- P |
+ P |
Play the selected region. Only active if a region has been selected. |
- Ctrl-C |
+ Ctrl-C |
Centre the spectrogram at the current playhead position. |
- Ctrl-G |
+ Ctrl-G |
Go to position in file |
- Home (Fn + ArrowLeft) |
+ Home (Fn + ArrowLeft) |
Move the playhead to the beginning of the file |
- End (Fn + ArrowLeft) |
+ End (Fn + ArrowLeft) |
Move the playhead to the end of the file |
- PgUp (Fn + ArrowUp) |
+ PgUp (Fn + ArrowUp) |
Move the playhead back by a screen width |
- PgDn (Fn + ArrowDown) |
+ PgDn (Fn + ArrowDown) |
Move the playhead forward by a screen width |
- Left arrow (←) |
+ Left arrow (←) |
Move the playhead forward. |
- Right arrow (→) |
+ Right arrow (→) |
Move the playhead backward. |
- Tab or Down Arrow (↓) |
+ Tab or Down Arrow (↓) |
Skip to the next detection |
- Shift Tab or Up Arrow (↑) |
+ Shift Tab or Up Arrow (↑) |
Skip back to the previous detection |
Spectrogram |
- Plus (+) |
+ Plus (+) |
Zoom in on the spectrogram. When zooming, Chirpity automatically adjusts the short-time Fourier transform (STFT) window size to optimize
the spectral resolution
|
- Minus (-) |
+ Minus (-) |
Zoom out the spectrogram. When zooming, Chirpity automatically adjusts the STFT window size to optimize the
spectral resolution
|
- Ctrl Plus (+) |
+ Ctrl Plus (+) |
Manually reduce the spectrogram window size. Adjusting the window size has the effect of sharpening / blurring the calls in the spectrogram.
|
- Ctrl Minus (-) |
+ Ctrl Minus (-) |
Manually increase the spectrogram window size
|
- Ctrl-T |
+ Ctrl-T |
Toggle between Timecode and Time of Day |
Records |
- Delete or Backspace |
+ Delete or Backspace |
Delete current record |
- Ctrl-Z |
+ Ctrl-Z |
Restore deleted record(s) |
- Ctrl-V |
+ Ctrl-V |
Validate the current active record (confirm the detection) |
diff --git a/js/ui.js b/js/ui.js
index f9e0f735..264e3ed9 100644
--- a/js/ui.js
+++ b/js/ui.js
@@ -3353,8 +3353,6 @@ function formatDuration(seconds){
STATE.mode !== 'explore' && enableMenuItem(['save2db'])
}
if (STATE.currentFile) enableMenuItem(['analyse'])
-
- adjustSpecDims(true)
}
@@ -3454,6 +3452,7 @@ function formatDuration(seconds){
return
}
if (index <= 1) {
+ adjustSpecDims(true)
if (selection) {
const selectionTable = document.getElementById('selectionResultTableBody');
selectionTable.textContent = '';
@@ -5000,7 +4999,7 @@ async function readLabels(labelFile, updating){
// If we haven't clicked the active row or we cleared the region, load the row we clicked
if (resultContext || hideInSelection || hideInSummary) {
// Lets check if the summary needs to be filtered
- if (!(inSummary && target.closest('tr').classList.contains('text-warning'))) {
+ if (inSummary && ! target.closest('tr').classList.contains('text-warning')) {
target.click(); // Wait for file to load
await waitForFileLoad();
}
@@ -5230,11 +5229,19 @@ async function readLabels(labelFile, updating){
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
-
- async function waitForFileLoad() {
- while (!fileLoaded) {
- await delay(100); // Wait for 100 milliseconds before checking again
- }
+ let fileLoadRetryCount = 0
+ function waitForFileLoad() {
+ let maxRetries = 20;
+ return new Promise((resolve) =>{
+ setTimeout(() =>{
+ if (fileLoaded) resolve(fileLoadRetryCount = 0)
+ else {
+ console.log('retries: ', ++fileLoadRetryCount)
+ resolve(waitForFileLoad())
+ }
+ }, 100)
+ if (fileLoadRetryCount >= maxRetries) resolve(fileLoadRetryCount = 0)
+ })
}
async function waitForLocations() {
diff --git a/js/worker.js b/js/worker.js
index 8ca2e263..7149349e 100644
--- a/js/worker.js
+++ b/js/worker.js
@@ -1146,7 +1146,7 @@ async function notifyMissingFile(file) {
const row = await diskDB.getAsync('SELECT * FROM FILES WHERE name = ?', file);
if (row?.id) missingFile = file
UI.postMessage({
- event: 'generate-alert', type: 'error',
+ event: 'generate-alert', type: 'warning',
message: `Unable to locate source file with any supported file extension: ${file}`,
file: missingFile
})
@@ -1520,7 +1520,7 @@ const getPredictBuffers = async ({
predictionsRequested[file] = 0;
const samplesInBatch = sampleRate * BATCH_SIZE * WINDOW_SIZE
- const highWaterMark = samplesInBatch * 2;
+ const highWaterMark = samplesInBatch * 2;
let chunkStart = start * sampleRate;
if (STATE.detect.backend === 'tensorflow'){
@@ -3727,7 +3727,7 @@ async function convertAndOrganiseFiles(threadLimit) {
const attempted = successfulConversions + failedConversions;
// Create a summary message
let summaryMessage;
- let type = 'notice';
+ let type = 'info';
if (attempted) {
summaryMessage = `Processing complete: ${successfulConversions} successful, ${failedConversions} failed.`;