PortMidi requires PMALSA to be defined to compile with ALSA support. Without it, it simply does not find any devices. (There is also PMNULL, but the files controlled by that define do not actually exist)
... It was seen to happen, at least for some MIDI files on Windows, because
the FFmpeg library may render them without reporting an error, but the rendering
was really bad!
... Make consistent zoom in and out limits for mouse picks and for scrollwheel
Make scrollwheel do in or out by a constant multiplier, analogously with wave
track
The Note track remembers a continuously varying key height, but rounds it off
whenever it draws
- Highlighting of Buttons in TCP and Sliders
- No crinkly Help Icon anymore
- Invisible numbers in NoteTrack fixed
- Better visibility of label track dragger elements
- Theme rearranged more logically, and dead images culled
... WAV format simply can't do that, others (FLAC, ogg, mp3) can and should
Some history:
This got broken very badly for an interim starting at
919d77d1760bab320ae963e1e54fc6e4981b6000.
Exported files were only tens of bytes!
This was broken differently after
ad04187a4122556c9a91ce1ac6d6a7cf3b4162ac with symptoms as in the bug report.
... But make them nondistinct in all themes, so this commit does not yet make
user visible changes.
This uses the HiliteButtonExpandSel resource which was previously unused.
Perhaps not the intended use of the resource so named, but names can change in
2.2.1.
The two were already alike in Classic but the unused one had been just black
in the others.
Previous fix was at commit f9865f39efe46224a1a77c742a789b2cc70f0c54
But then that had this strange effect on Mac: when a menu command such as
rename brought up a modal dialog, then the first click in the dialog would pass
through to the tracks behind it, changing the selection, and only a repeated
click on the OK button would dismiss the dialog.
I don't know exactly why that happened. This avoids it.
This was caused by the indicator-passed-selection check being inside a loop over all wave tracks. If there are no wave tracks, then the check never happened. I added a duplicate version of the check if there are no wave tracks. This may not be the best solution, but it works for now.
I'm not entirely sure why the check is in the loop (or what's going on with the len and maxLen variables); as such, I just haven't touched that. Perhaps it would be safe to move the check always outside of the loop, but I'm not completely confident in that.
Instead, always start a portaudio stream (if there is either a note track or a wave track). This ensures that playback is always in sync (eg when recording), and gets rid of a lot of duplicate logic throughout.
Scrubbing (currently) still doesn't work with only note tracks, but it should be easier to fix that now than trying to reimplement all of the scrubbing time logic.
Conflicts:
src/AudioIO.cpp
mMidiPlaySpeed doesn't handle all of the options provided by time tracks,
and in fact doesn't even use time tracks. Using the time track
instead allows note tracks to remain synchronized with the rest of the audio.
mMidiPlaySpeed _did_ work where it was used in the transcription tool
bar, but that already updates a time track so no special handling is
needed.