Skip to content

Commit f1ac01f

Browse files
authored
Merge pull request #84 from spotify/jgao/improve_error_handling_and_messaging
#7: Improve error handling and messaging
2 parents 7524efc + 461cfef commit f1ac01f

File tree

5 files changed

+48
-33
lines changed

5 files changed

+48
-33
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,3 +145,6 @@ cython_debug/
145145

146146
# junit
147147
junit.xml
148+
149+
# intellij
150+
.idea/

basic_pitch/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import pathlib
1919

2020
__author__ = "Spotify"
21-
__version__ = "0.2.4"
21+
__version__ = "0.2.5"
2222
__email__ = "[email protected]"
2323
__demowebsite__ = "https://basicpitch.io"
2424
__description__ = "Basic Pitch, a lightweight yet powerful audio-to-MIDI converter with pitch bend detection."

basic_pitch/inference.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import json
2121
import os
2222
import pathlib
23-
import traceback
2423
from typing import Dict, List, Optional, Sequence, Tuple, Union
2524

2625
from tensorflow import Tensor, signal, keras, saved_model
@@ -405,33 +404,38 @@ def predict_and_save(
405404
try:
406405
np.savez(model_output_path, basic_pitch_model_output=model_output)
407406
file_saved_confirmation(OutputExtensions.MODEL_OUTPUT_NPZ.name, model_output_path)
408-
except Exception:
407+
except Exception as e:
409408
failed_to_save(OutputExtensions.MODEL_OUTPUT_NPZ.name, model_output_path)
409+
raise e
410410

411411
if save_midi:
412-
midi_path = build_output_path(audio_path, output_directory, OutputExtensions.MIDI)
412+
try:
413+
midi_path = build_output_path(audio_path, output_directory, OutputExtensions.MIDI)
414+
except IOError as e:
415+
raise e
413416
try:
414417
midi_data.write(str(midi_path))
415418
file_saved_confirmation(OutputExtensions.MIDI.name, midi_path)
416-
except Exception:
419+
except Exception as e:
417420
failed_to_save(OutputExtensions.MIDI.name, midi_path)
421+
raise e
418422

419423
if sonify_midi:
420424
midi_sonify_path = build_output_path(audio_path, output_directory, OutputExtensions.MIDI_SONIFICATION)
421425
try:
422426
infer.sonify_midi(midi_data, midi_sonify_path, sr=sonification_samplerate)
423427
file_saved_confirmation(OutputExtensions.MIDI_SONIFICATION.name, midi_sonify_path)
424-
except Exception:
428+
except Exception as e:
425429
failed_to_save(OutputExtensions.MIDI_SONIFICATION.name, midi_sonify_path)
430+
raise e
426431

427432
if save_notes:
428433
note_events_path = build_output_path(audio_path, output_directory, OutputExtensions.NOTE_EVENTS)
429434
try:
430435
save_note_events(note_events, note_events_path)
431436
file_saved_confirmation(OutputExtensions.NOTE_EVENTS.name, note_events_path)
432-
except Exception:
437+
except Exception as e:
433438
failed_to_save(OutputExtensions.NOTE_EVENTS.name, note_events_path)
434-
except Exception:
435-
print("🚨 Something went wrong 😔 - see the traceback below for details.")
436-
print("")
437-
print(traceback.format_exc())
439+
raise e
440+
except Exception as e:
441+
raise e

basic_pitch/predict.py

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import argparse
1919
import os
2020
import pathlib
21+
import traceback
2122

2223
from basic_pitch import ICASSP_2022_MODEL_PATH
2324

@@ -127,27 +128,34 @@ def main() -> None:
127128
for audio_path in audio_path_list:
128129
verify_input_path(audio_path)
129130

130-
predict_and_save(
131-
audio_path_list,
132-
output_dir,
133-
args.save_midi,
134-
args.sonify_midi,
135-
args.save_model_outputs,
136-
args.save_note_events,
137-
pathlib.Path(args.model_path),
138-
args.onset_threshold,
139-
args.frame_threshold,
140-
args.minimum_note_length,
141-
args.minimum_frequency,
142-
args.maximum_frequency,
143-
args.multiple_pitch_bends,
144-
not args.no_melodia,
145-
pathlib.Path(args.debug_file) if args.debug_file else None,
146-
args.sonification_samplerate,
147-
args.midi_tempo,
148-
)
149-
150-
print("\n✨ Done ✨\n")
131+
try:
132+
predict_and_save(
133+
audio_path_list,
134+
output_dir,
135+
args.save_midi,
136+
args.sonify_midi,
137+
args.save_model_outputs,
138+
args.save_note_events,
139+
pathlib.Path(args.model_path),
140+
args.onset_threshold,
141+
args.frame_threshold,
142+
args.minimum_note_length,
143+
args.minimum_frequency,
144+
args.maximum_frequency,
145+
args.multiple_pitch_bends,
146+
not args.no_melodia,
147+
pathlib.Path(args.debug_file) if args.debug_file else None,
148+
args.sonification_samplerate,
149+
args.midi_tempo,
150+
)
151+
print("\n✨ Done ✨\n")
152+
except IOError as ioe:
153+
print(ioe)
154+
except Exception as e:
155+
print("🚨 Something went wrong 😔 - see the traceback below for details.")
156+
print("")
157+
print(e)
158+
print(traceback.format_exc())
151159

152160

153161
if __name__ == "__main__":

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[bumpversion]
2-
current_version = 0.2.4
2+
current_version = 0.2.5
33
commit = True
44
tag = True
55

0 commit comments

Comments
 (0)