Login
Check-in [0c1ec64c24]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Update README, bump version, tag as v1.0.0

WOO!

Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | v1.0.0
Files: files | file ages | folders
SHA3-256: 0c1ec64c24153e0e6b2e9ff0aededa33cdab7ade8f633ae4b771f955b6ce7077
User & Date: alexa 2022-04-08 09:30:15
Context
2022-04-13
22:24
Fix typo check-in: a2e8085025 user: alexa tags: trunk
2022-04-08
09:30
Update README, bump version, tag as v1.0.0

WOO! check-in: 0c1ec64c24 user: alexa tags: trunk, v1.0.0

09:13
Add docstrings check-in: d7e2123b0e user: alexa tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to README.md.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29




30
31
32
33
34
35
36
# CL-MeltySynth
 
A port of the excellent [MeltySynth](https://github.com/sinshu/meltysynth/) by Sinshu to Common Lisp.  This
provides MIDI music playback for Common Lisp projects without a lot of dependencies.

## How do I get set up?

This has only been tested with SBCL (specifically 2.2.2, 2.2.3, and the currently in-dev 2.2.4).  Other Lisps may
work, but are unsupported.

1. Setup SBCL and Quicklisp
2. Clone [CL-SDM](https://nanako.mooo.com/fossil/cl-sdm/) locally somewhere that ASDF can find it.  This isn't
   installable with Quicklisp.
3. Install CL-PortAudio (for the example program), and Babel and Trival-Indent (for CL-SDM).
4. Clone this repo where ASDF can find it.

To build the example program, midi123, run `rake`.  The binary will be in the `bin/` directory.  You can disable
executable compression if you'd like by running `rake midi123[1]` instead.

You can also play around with CL-MeltySynth or midi123 from a REPL.  To load just the library, do
`(asdf:load-system :cl-meltysynth)` from within the REPL.  Or do `(asdf:load-system :midi123)` if you want to load
the library and example program.  You can then run `(midi123:main "-h")` to see how to run the program.  The
`&REST` arguments to `MIDI123:MAIN` should all be strings and are just the standard command line options:

```
(midi123:main "-f" "/path/to/midi-file.mid" "-s" "/path/to/soundfont.sf2")
```

### Building The midi123 Example Program





1. Install cl-portaudio library via Quicklisp.
2. Run `rake` (or `rake midi123[1]` if you don't want SBCL to produce a compressed binary).
3. The program will be in the `bin/` directory.  You can use `midi123 --help` to see a list of command line
   options.
   
Some example usages:











|
|
















>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# CL-MeltySynth
 
A port of the excellent [MeltySynth](https://github.com/sinshu/meltysynth/) by Sinshu to Common Lisp.  This
provides MIDI music playback for Common Lisp projects without a lot of dependencies.

## How do I get set up?

This has only been tested with SBCL (specifically 2.2.2, 2.2.3, and the currently in-dev 2.2.4).  Other Lisps may
work, but are unsupported.

1. Setup SBCL and Quicklisp
2. Clone [CL-SDM](https://chiselapp.com/user/MistressRemilia/repository/cl-sdm) locally somewhere that ASDF can
   find it.  This isn't installable with Quicklisp.
3. Install CL-PortAudio (for the example program), and Babel and Trival-Indent (for CL-SDM).
4. Clone this repo where ASDF can find it.

To build the example program, midi123, run `rake`.  The binary will be in the `bin/` directory.  You can disable
executable compression if you'd like by running `rake midi123[1]` instead.

You can also play around with CL-MeltySynth or midi123 from a REPL.  To load just the library, do
`(asdf:load-system :cl-meltysynth)` from within the REPL.  Or do `(asdf:load-system :midi123)` if you want to load
the library and example program.  You can then run `(midi123:main "-h")` to see how to run the program.  The
`&REST` arguments to `MIDI123:MAIN` should all be strings and are just the standard command line options:

```
(midi123:main "-f" "/path/to/midi-file.mid" "-s" "/path/to/soundfont.sf2")
```

### Building The midi123 Example Program

`midi123` is a simple command line player for MIDI files (but still feature-full
enough that it's actually useful).  It's code is short and documented to show a
few basic ways to use CL-MeltySynth.

1. Install cl-portaudio library via Quicklisp.
2. Run `rake` (or `rake midi123[1]` if you don't want SBCL to produce a compressed binary).
3. The program will be in the `bin/` directory.  You can use `midi123 --help` to see a list of command line
   options.
   
Some example usages:
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
    - [x] Chorus
* __Examples__
    - [x] midi123 can play MIDIs
    - [x] midi123 can render to WAV files
* __Other things__
    - [x] Standard MIDI file support
    - [x] Loop extension support
    - [/] Performace optimization (mostly done)
    - [/] Unit tests ported (only some are currently ported)
    - [ ] Document public API
    - [x] Non-looping MIDIs
    
### Known Issues

* midi123 does not yet render to WAV files.
* Some functions are consing a bit more than they should be right now.
* No SIMD optimizations (though this might be a non-issue).

## How do I contribute?

1. Go to https://nanako.mooo.com/cl-meltysynth and clone the Fossil repository.
2. Create a new branch for your feature.
3. Push locally to the new branch.
4. Create a [bundle](https://fossil-scm.org/home/help?cmd=bundle) with Fossil that contains your changes.
5. Get in contact with me.

## Contributors








|

|


<
<
<
<
<
<


|







102
103
104
105
106
107
108
109
110
111
112
113






114
115
116
117
118
119
120
121
122
123
    - [x] Chorus
* __Examples__
    - [x] midi123 can play MIDIs
    - [x] midi123 can render to WAV files
* __Other things__
    - [x] Standard MIDI file support
    - [x] Loop extension support
    - [x] Performance optimization
    - [/] Unit tests ported (only some are currently ported)
    - [x] Document public API
    - [x] Non-looping MIDIs
    






## How do I contribute?

1. Go to https://chiselapp.com/user/MistressRemilia/repository/CL-MeltySynth/ and clone the Fossil repository.
2. Create a new branch for your feature.
3. Push locally to the new branch.
4. Create a [bundle](https://fossil-scm.org/home/help?cmd=bundle) with Fossil that contains your changes.
5. Get in contact with me.

## Contributors

Changes to cl-meltysynth.asd.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(require 'asdf)
(in-package :asdf-user)

(defun %do-block-compile (thunk)
  (apply thunk (when (uiop:featurep :sbcl) '(:block-compile t))))

(asdf:defsystem cl-meltysynth
  :long-name "cl-meltysynth"
  :version "0.2.0"
  :license "AGPLv3 (see LICENSE for details)"

  :maintainer "Remilia Scarlet"
  :author "Remilia Scarlet"

  :depends-on (:cl-sdm)









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(require 'asdf)
(in-package :asdf-user)

(defun %do-block-compile (thunk)
  (apply thunk (when (uiop:featurep :sbcl) '(:block-compile t))))

(asdf:defsystem cl-meltysynth
  :long-name "cl-meltysynth"
  :version "1.0.0"
  :license "AGPLv3 (see LICENSE for details)"

  :maintainer "Remilia Scarlet"
  :author "Remilia Scarlet"

  :depends-on (:cl-sdm)

Changes to midi123.asd.

1
2
3
4
5
6
7
8
9
10
11
12
13
(require 'asdf)
(in-package :asdf-user)

(asdf:defsystem midi123
  :long-name "midi123"
  :version "0.2.0"
  :license "AGPLv3 (see LICENSE for details)"

  :maintainer "Remilia Scarlet"
  :author "Remilia Scarlet"

  :depends-on (:cl-sdm :cl-meltysynth :cl-portaudio)






|







1
2
3
4
5
6
7
8
9
10
11
12
13
(require 'asdf)
(in-package :asdf-user)

(asdf:defsystem midi123
  :long-name "midi123"
  :version "1.0.0"
  :license "AGPLv3 (see LICENSE for details)"

  :maintainer "Remilia Scarlet"
  :author "Remilia Scarlet"

  :depends-on (:cl-sdm :cl-meltysynth :cl-portaudio)