Hi Michael,
Thank you for taking the time to look into my problem.
Honestly, I recreated a new project, imported all track except that one and redid it. So, I don’t want to get back to that. But I don’t think it is ever late for enhancing user input validation and exception handling of old source codes.
Maybe, those clefs where places, after I changed the quantization value and added another clef with distance around say 1/16th note or something.
# most likely you have class method for this!
def addClef(track_id, time, clef_type):
neiboring_clefs = all clef on track "track_id" with distance 1 quarter ( or 4 PPQN , or whatever) // i guess sorted by time position
if neighorig_clefs != NULL:
print( "there is already a clef at that location")
return
else:
track.addClef(track_if, clef_type);
For score editor, I can think of two things as posttests or cleanup feature, before asking users to run Cubase in Safe mode
You guys can do:
- Go over musical objects that needs to appear only once. clef, time signatures, etc.
def scoreCleanup_clef():
tracks_with_clef_removed = set()
for track in tracks:
for i in range(1, len(track.clef))
if track.clef[i].gettime() - track.clef[i-1].gettime() < 1 quarter:
del track.clef[i].gettime() # or whatever the developer team wishes
tracks_with_clef_removed.append(track.getId())
return tracks_with_clef_removed // let the user know what tracks are cleaned up.
Same issue exists for Marker track that is for project view and not score editor. I reported the same bug. One delete a marker track, then put it back, all the markers are there ( this is already reported and not fixed yet). There are other issues with Chord track, etc. These can fix them.
- Programmers/Developers can add another feature ( in preferences)
“checkbox” Enable user behavior Analyzer API and asking the Steinberg product user to enable that. Of course, when software is at production this must be enabled automatically.
basically, enabling this features enables Cubase/or another software to log all the mouse clicks (recorded pixel-by-pixel mouse movements to figure out how users might use different features), keyboard actions, and system signals every say 5 minutes. Then, when an error occurs, at steinberg can have access to that log and reproduce same error possibly with dummy content ( just like lorem ipsum for dummy text);
there are also ways for evaluation of users behaviors, statistical methods and tools like, Heat maps,
Not giving anybody advice for best practices in software engineering. But we should “Never assume anything. Never trust user input. Sanitation is okay, but validation/rejection is better.” and also where possible, users should be able to check their input and correct it if necessary.
After all, we are using Steinberg products to make our life easier as musicians and create good music. We expect Steinberg to give us products that we utilized them to write music more effective and quality than Mozart era!
Thanks you.