audacia/lib-src/portsmf
Roger Dannenberg ff60f598f3 Fixes 2 bugs in Nyquist: (1) Bug 2706 probably already has a workaround in place, but the original code called snd-samples with ny:all for the maximum length to retrieve, and now that ny:all is bigger than 32-bits, the value was getting truncated. This change fixes legacy code to be 64-bit-aware. (2) allows sounds to be accessed beyond their stop time even when they stop in the middle of a block of samples. For example, this Nyquist prompt no longer generates garbage or crashes:
(setf idur 5000)
(setf impulse (extract-abs 0 (/ idur *sound-srate*) (cue *track*)))
(mult 0.01 (convolve *track* impulse))
2021-03-28 22:55:36 -04:00
..
apps Introduce end-of-line normalization 2016-05-17 01:05:05 +02:00
autotools Do an autoreconf -ivf 2018-04-02 17:32:17 +01:00
portsmf.xcodeproj Update portsmf to SVN r227. 2013-10-31 07:23:14 +00:00
portsmf_test Introduce end-of-line normalization 2016-05-17 01:05:05 +02:00
Makefile.am Introduce end-of-line normalization 2016-05-17 01:05:05 +02:00
Makefile.in Getting all build scripts to the same Automake 1.14 version 2015-06-21 22:09:44 -07:00
README.txt Move library tree where it belongs 2010-01-24 09:19:39 +00:00
algrd_internal.h Extensive changes to improve NoteTrack display and (some) editing, NoteTrack playback via MIDI, and Midi-to-Audio alignment. 2010-09-18 21:02:36 +00:00
algsmfrd_internal.h Move library tree where it belongs 2010-01-24 09:19:39 +00:00
allegro.cpp Fixes 2 bugs in Nyquist: (1) Bug 2706 probably already has a workaround in place, but the original code called snd-samples with ny:all for the maximum length to retrieve, and now that ny:all is bigger than 32-bits, the value was getting truncated. This change fixes legacy code to be 64-bit-aware. (2) allows sounds to be accessed beyond their stop time even when they stop in the middle of a block of samples. For example, this Nyquist prompt no longer generates garbage or crashes: 2021-03-28 22:55:36 -04:00
allegro.h Changes to allegro fix a bug where property lists are not properly saved/restored for Undo/Redo. Other changes make this code safer and more consistent between 32-bit and 64-bit architectures. 2021-03-27 13:21:01 -04:00
allegro.htm Move library tree where it belongs 2010-01-24 09:19:39 +00:00
allegrord.cpp lib-src/portsmf: extra parens around intentional if/while assignments 2018-11-15 11:23:17 -05:00
allegroserial.cpp Move library tree where it belongs 2010-01-24 09:19:39 +00:00
allegrosmfrd.cpp lib-src/portsmf: string literals as const char *, not char * 2018-11-15 11:23:17 -05:00
allegrosmfwr.cpp Fix compiler warnings (string constant to char *) from allegro.h. Also implements play at speed for MIDI, but some MIDI playback problems remain. 2010-09-27 05:51:41 +00:00
allegrowr.cpp Extensive changes to improve NoteTrack display and (some) editing, NoteTrack playback via MIDI, and Midi-to-Audio alignment. 2010-09-18 21:02:36 +00:00
autotools-fix-make-dist.patch Add autotools-fix-make-dist.patch to fix dist target of portsmf. 2013-11-08 00:11:20 +00:00
autotools.patch Add and apply autotools.patch to fix all autotools warnings for portsmf. 2013-11-01 10:12:14 +00:00
changelog.txt Update portsmf to SVN r227. 2013-10-31 07:23:14 +00:00
configure Getting all build scripts to the same Automake 1.14 version 2015-06-21 22:09:44 -07:00
configure.ac Add and apply autotools.patch to fix all autotools warnings for portsmf. 2013-11-01 10:12:14 +00:00
license.txt Move library tree where it belongs 2010-01-24 09:19:39 +00:00
mfmidi.cpp lib-src/portsmf: string literals as const char *, not char * 2018-11-15 11:23:17 -05:00
mfmidi.h lib-src/portsmf: string literals as const char *, not char * 2018-11-15 11:23:17 -05:00
notes.txt Move library tree where it belongs 2010-01-24 09:19:39 +00:00
portSMF-uninstalled.pc.in Introduce end-of-line normalization 2016-05-17 01:05:05 +02:00
portSMF.pc.in Introduce end-of-line normalization 2016-05-17 01:05:05 +02:00
portsmf-VC8.sln Introduce end-of-line normalization 2016-05-17 01:05:05 +02:00
portsmf-VC8.vcproj Introduce end-of-line normalization 2016-05-17 01:05:05 +02:00
portsmf.sln Introduce end-of-line normalization 2016-05-17 01:05:05 +02:00
portsmf.vcproj Introduce end-of-line normalization 2016-05-17 01:05:05 +02:00
strparse.cpp Extensive changes to improve NoteTrack display and (some) editing, NoteTrack playback via MIDI, and Midi-to-Audio alignment. 2010-09-18 21:02:36 +00:00
strparse.h Move library tree where it belongs 2010-01-24 09:19:39 +00:00
todo.txt Move library tree where it belongs 2010-01-24 09:19:39 +00:00
trace.cpp Move library tree where it belongs 2010-01-24 09:19:39 +00:00
trace.h Move library tree where it belongs 2010-01-24 09:19:39 +00:00

README.txt

portsmf README.txt
14 Jun 2008
Roger B. Dannenberg

Portsmf is "Port Standard MIDI File", a cross-platform, C++ library
for reading and writing Standard MIDI Files.

License information: free and open source, see license.txt for details

Features:

- input and output of Standard MIDI Files
- data structures, classes, etc. for representing music data in memory
    o sequence structure consisting of multiple tracks
    o track structure consisting of multiple events
    o events contain note and control data
    o extensible attribute-value property lists
    o tempo track and time signature representation
- input and output of a text-based representation: Allegro files
- extensive editing operations on sequences and tracks
- conversion to/from binary buffers for archiving, undo/redo, etc.

Portsmf is a relatively small number of about 9 files, so there is
currently no support for building/maintaining Portsmf as a separate
library. (Contributions are welcome.) For now, it is suggested that
you simply compile these files along with your application sources.

There is a test program in portsmf_test and makefiles to build it as
an example.

You might want to browse through portsmf_test/allegro_test.cpp 
for examples that use and exercise most of the portsmf functions.