diff --git a/thirdparty/timidityplus/sndfont.cpp b/thirdparty/timidityplus/sndfont.cpp
index 854529c..2337f17 100644
--- a/thirdparty/timidityplus/sndfont.cpp
+++ b/thirdparty/timidityplus/sndfont.cpp
@@ -267,7 +267,8 @@ void Instruments::init_sf(SFInsts *rec)
 		return;
 	}
 
-	if(load_soundfont(&sfinfo, rec->tf))
+	// SoundFont spec, 7.2: ... contains a minimum of two records, one record for each preset and one for a terminal record
+	if(load_soundfont(&sfinfo, rec->tf) || sfinfo.npresets < 2)
 	{
 	    end_soundfont(rec);
 	    return;
@@ -275,7 +276,7 @@ void Instruments::init_sf(SFInsts *rec)
 
 	correct_samples(&sfinfo);
 	current_sfrec = rec;
-	for (i = 0; i < sfinfo.npresets; i++) {
+	for (i = 0; i < sfinfo.npresets - 1; i++) {
 		int bank = sfinfo.preset[i].bank;
 		int preset = sfinfo.preset[i].preset;