diff --git a/CHANGELOG.md b/CHANGELOG.md index 4adb179..48cede9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). -# master +# v1.5.0 +* `show` for midi now states the contained tracks + # v1.4.0 * Added convenience function `tracknames(midi)` diff --git a/Project.toml b/Project.toml index e0fbe50..0fa254c 100644 --- a/Project.toml +++ b/Project.toml @@ -1,10 +1,10 @@ name = "MIDI" uuid = "f57c4921-e30c-5f49-b073-3f2f2ada663e" repo = "https://github.com/JuliaMusic/MIDI.jl.git" -version = "1.4.3" +version = "1.5.0" [deps] Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [compat] -julia = "≥ 0.7.0" +julia = "1" diff --git a/src/findevents.jl b/src/findevents.jl index f79b6a3..10b5661 100644 --- a/src/findevents.jl +++ b/src/findevents.jl @@ -4,20 +4,24 @@ export trackname, addtrackname!, textevent, findtextevents export tracknames +const NOTRACKNAME = "No track name found" + """ trackname(track::MIDI.MIDITrack) Return the name of the given `track` as a string, by finding the "track name" `MetaEvent`. + +If no such event exists, `"No track name found"` is returned. """ function trackname(track::MIDI.MIDITrack) pos = findtrackname(track) if pos == 0 - return "No track name found" + return NOTRACKNAME # check if there really is a name elseif length(track.events[pos].data) == 0 - return "No track name found" + return NOTRACKNAME else event = track.events[pos] # extract the name (string(Char()) takes care of ASCII encoding) diff --git a/src/midifile.jl b/src/midifile.jl index a30f54b..ab47b9d 100644 --- a/src/midifile.jl +++ b/src/midifile.jl @@ -17,9 +17,17 @@ mutable struct MIDIFile end # Pretty print function Base.show(io::IO, midi::MIDIFile) where {N} - print(io, "MIDIFile:\n"* - " format: $(Int(midi.format))\n tracks: $(length(midi.tracks))\n"* - " tpq: $(midi.tpq)") + tnames = tracknames(midi) + s = "MIDIFile (format=$(Int(midi.format)), tpq=$(midi.tpq)) " + if any(!isequal(NOTRACKNAME), tnames) # we have tracknames + s *= "with tracks:\n" + for t in tnames + s *= " "*t*"\n" + end + else # some track doesn't have a name + s *= "with $(length(midi.tracks)) tracks" + end + print(io, s) end