From 564b649204dbcd3e23d84bddb3fe4022aace7aba Mon Sep 17 00:00:00 2001 From: Starbeamrainbowlabs Date: Sun, 3 Dec 2017 17:48:15 +0000 Subject: [PATCH] The 2 most annoying bugs are segfaults, infinite loops, and *off-by-one* errors. --- MusicBoxConverter/MusicBox.cs | 2 +- MusicBoxConverter/MusicBoxScoreGenerator.cs | 10 +++++----- MusicBoxConverter/Program.cs | 4 ++-- MusicBoxConverter/SvgWriter.cs | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/MusicBoxConverter/MusicBox.cs b/MusicBoxConverter/MusicBox.cs index 00d8673..5260a9e 100644 --- a/MusicBoxConverter/MusicBox.cs +++ b/MusicBoxConverter/MusicBox.cs @@ -11,7 +11,7 @@ namespace MusicBoxConverter /// /// The height of a strip for this music box, in millimetres. /// - public float StripHeightMm = 58f; + public float StripHeightMm = 58.8f; public List ValidNotes { get; private set; } public Note LowestNote { diff --git a/MusicBoxConverter/MusicBoxScoreGenerator.cs b/MusicBoxConverter/MusicBoxScoreGenerator.cs index 3d4cd37..4b9112c 100644 --- a/MusicBoxConverter/MusicBoxScoreGenerator.cs +++ b/MusicBoxConverter/MusicBoxScoreGenerator.cs @@ -49,7 +49,7 @@ namespace MusicBoxConverter // Set the scale factor based on the strip height of the music box scaleFactor = new Vector2( scaleFactor.X, - MusicBox.StripHeightMm / MusicBox.NoteCount + MusicBox.StripHeightMm / (MusicBox.NoteCount-1) ); foreach(Note note in AllNotes()) { @@ -60,7 +60,7 @@ namespace MusicBoxConverter public void Output(string destinationFilename) { - Vector2 area = new Vector2(TrackLength, MusicBox.NoteCount).Multiply(scaleFactor); + Vector2 area = new Vector2(TrackLength, MusicBox.NoteCount-1).Multiply(scaleFactor); Vector2 size = area.Add(offset.Multiply(2)); SvgWriter svg = new SvgWriter( @@ -72,10 +72,10 @@ namespace MusicBoxConverter for(float i = 0; i < area.Y; i += scaleFactor.Y) { Vector2 start = offset.Add(new Vector2(0, i)); - svg.WriteLine(start, start.Add(new Vector2(area.X, 0)), "darkgreen", 1); + svg.WriteLine(start, start.Add(new Vector2(area.X, 0)), "darkgreen", 0.75f); } - svg.WriteRectangle(offset, area); + svg.WriteRectangle(offset, area, "red", 0.75f); foreach(Note note in AllNotes()) { @@ -83,7 +83,7 @@ namespace MusicBoxConverter svg.WriteCircle( new Vector2( offset.X + note.Time * scaleFactor.X, - offset.Y + (MusicBox.NoteCount - MusicBox.NoteToBoxNumber(note)) * scaleFactor.Y + offset.Y + ((MusicBox.NoteCount-1) - MusicBox.NoteToBoxNumber(note)) * scaleFactor.Y ), holeSize // radius ); diff --git a/MusicBoxConverter/Program.cs b/MusicBoxConverter/Program.cs index 5a5130c..24b0082 100644 --- a/MusicBoxConverter/Program.cs +++ b/MusicBoxConverter/Program.cs @@ -9,8 +9,8 @@ namespace MusicBoxConverter public static void Main(string[] args) { MusicBoxScoreGenerator converter = new MusicBoxScoreGenerator( - "/home/sbrl/Music/Sheets/HappyBirthday.midi", - //"/tmp/Scale.midi", + //"/home/sbrl/Music/Sheets/HappyBirthday.midi", + "/tmp/Scale.midi", MusicBox.Note30 ); converter.Output("/tmp/test.svg"); diff --git a/MusicBoxConverter/SvgWriter.cs b/MusicBoxConverter/SvgWriter.cs index e7c1371..8cbc0ca 100644 --- a/MusicBoxConverter/SvgWriter.cs +++ b/MusicBoxConverter/SvgWriter.cs @@ -53,7 +53,7 @@ namespace MusicBoxConverter xml.Close(); } - public void WriteLine(Vector2 start, Vector2 end, string strokeStyle = "darkgreen", int strokeWidth = 3) + public void WriteLine(Vector2 start, Vector2 end, string strokeStyle = "darkgreen", float strokeWidth = 3) { xml.WriteStartElement("line"); xml.WriteAttributeString("x1", $"{start.X}{UnitSuffix}"); @@ -85,7 +85,7 @@ namespace MusicBoxConverter xml.WriteEndElement(); }*/ - public void WriteRectangle(Vector2 position, Vector2 size, string strokeStyle = "red", int strokeWidth = 3) + public void WriteRectangle(Vector2 position, Vector2 size, string strokeStyle = "red", float strokeWidth = 3) { xml.WriteStartElement("rect"); xml.WriteAttributeString("x", $"{position.X}{UnitSuffix}");