Changelog
CM 3.9.0
- Enhancement: Grace menu and application command loop completely reimplemented and reorganzied. On Mac the app's menubar is now located in the Mac main menu bar. (On Windows and Linux it continues to be located in the Console Window.)
- Enhancement: All app windows and dialogs now use new look-and-feel developed by Andrew Burnson.
- Enhancement: Switched to oscpack 1.1.0 for OSC support. OSC input and output now works on Mac, Linux and Windows.
- Enhancement: Redesigned players for Midi and Audio files (available in the Files menu).
- Enhancement: Mac port now uses Apple's internal synth as the default MIDI sampler so external player is no longer required to produce sound.
- Enhancement: Redesigned app logo and homepage.
- Enhancement: Sal and Scheme versions of all Help examples and tutorials are now provided.
- Enhancement: Revamped and checked all Help examples and tutorials.
- Enhancement: Upgraded to Juce 3.0.3, S7 Scheme 3.35 (17-Feb-14) and Sndlib 23
- Change: Added CM2 functions
keynum
,pitch-class
,hertz
. The old function nameskey
,pc
andhz
are depreciated but continue to work.
CM 3.8.0
- Enhancement: The real-time scheduler now uses metronomes and is beat based. See the new Metronomes section in the dictionary and the new example for more information. Metronomes were designed and implemented by Halim Beere (halimbeere@gmail.com)
- Enhancement: sprout now supports "live coding" much better. When you sprout a processes together with an id the scheduler now replaces any currently running process with the same id with the newly sprouted version but without altering the next run time in the scheduler. This allows you to "redefine" processes on the fly. See the updated sprout documentation and the new example for more information. (Halim Beere)
- Enhancement: Real-time audio generation using audio plugins (AU, VST, ASIO). Type COMMAND-P to load any plugin graph ("*.filtgraph") that you created and saved in JUCE's "Plugin Host" app. See Audio Plugins for more information.
- Enhancement: Audio file Player window has be remimplemented. Multiple players can now be open and playing at the same time, and each player provides a sampling rate slider for controling sampling rate during playback.
- Enhancement: It is now possible to close any open MIDI input or output port by reselecting it in the device menu.
- Enhancement: Plot window reimplemented. Window now includes a tabbed editor and real-time audio playback for any plot. See the updated Lisp and Sal plotting examples in the menu.
- Enhancement: SDIF file importing using Ircam's SDIF library. See sdif-import and sdif-import-spectra for more information.
- Enhancement: new window plays midifiles the the selected output port. Audio>Play Midi File...
- Enhancement: new function qsort! performs in line (destructive) sorting of lists and vectors. (The standard sort! function that is provided by s7 does destructive sorting of arrays but copies lists.)
- Enhancement: The dialog now defaults to the directory of the window's current file, or the working directory if the window has no file.
- Enhancement: new functions random-series, list-intersection, list-union, list-difference and remove-duplicates.
- Enhancement: new function golden returns the golden mean or inverse golden mean of two numbers.
- Enhancement: new function fibonacci returns the nth number in the fibonacci series.
- Enhancement: new function mod allows a number or lists of numbers to be specified.
- Enhancement: new function minimum allows numbers or a list of numbers to be specified.
- Enhancement: new function maximum allows numbers or a list of numbers to be specified.
- Enhancement: Upgraded to S7 1.105 (6-Feb-12) and latest versions of clm instruments in sndlib.
- Change: function import-spear-frames has been renamed spear-import-spectra
- Enhancement: Upgraded to Juce 1.54.27
CM 3.7.2
- Enhancement: If a process using mp:midi is sprouted in the context of a Fomus score then mp:midi will automatically route its note date to the Fomus score, with the midi channel number used as the Fomus part id.
- Enhancement: All random functions, including S7's
random
function, now use a common random number generator. Use random-seed to get and set the seed that controls random number generation. - Enhancement: The Hush command has been redefined to stop all sound output (not just midi) and is now situated in the top level audio menu along with the keyboard shortcut ⌘-K. Selecting Hush triggers the following actions:
- all processes running in the scheduler are flushed
- midi output message queue is flushed
- AllNotesOff is sent to each midi channel
- audio playback transport is stopped if an audio window is open and playing
- any running scheme expression is interrupted back to top level.
- Enhancement: New editor command Save As Version saves the current contents of the buffer to a new file version (the file name with a number attached to its end) never overwriting an existing version. The editor must already have a file for this command to be active.
- Enhancement: Grace now saves the position and size of the Console window on Quit and restores it to the same configuration on startup.
- Enhancement: added menu item to the Editor's menu. Use this command to abort Scheme's current execution if the process seems to be taking too long or if you managed to start an "infinite loop" running. (Note: if the infinite loop is sending text output to the console then mouse and menu behavior will be very slow, try use the ⌘-K shortcut to abort the loop ...)
- Enhancement: Audio Playback window now supports the following keyboard shortcuts:
- Spacebar - play/pause
- Return - move cursor to start of file
- Right-arrow - move right in file
- Left-arrow - move left in file
- Command-W - close window
- Command-M - minimize window
- Enhancement: mp:on and mp:off now support midi tunings and floating-point keynums identical to mp:midi.
- Enhancement: new instruments parse-samples and cut-samples for parsing samples from an audio file. See Instrument Browser window for more information.
- Enhancement: the file-version function now has an optional nooverwrite arg that, if set to true, returns a versioned file name that is guaranteed to not reference an existing file.
- Enhancement: in the editor double-clicking the left-side
"
character of a string now selects the whole string. - Enhancement: CM dictionary now has an Index section, the editor's ⌘-D (documentation lookup) command now works for all entries in the dictionary.
- Enhancement: updated to S7 Scheme 1.83 (14-Mar-11).
- Enhancement: upgraded to latest Fomus framework (version 0.1.17).
- Change: each unique Fomus output file name now has only one fomus score associated with it and if the file is regenerated its fomus score is cleared and reused. To output different versions of a file use the file-version function to create new (versioned) file names and scores each time.
- Change: the Fomus menu in the Code Editor window is now the same as in the Console Window.
- Bug Fix: fixed a bug in Play Audio File window that moved cursor past end of file.
- Bug Fix: fixed a bug in the midi output queue that sometimes caused data to be double-freed and producing a noticible glitch in real-time sound output.
- Bug Fix: fixed a bug in documentation lookup for symbols that caused some symbols to not be found.
CM 3.7.1
- Enhancement: upgraded to latest Fomus framework (version 0.1.12)
- Bug fix: fixed several csound bugs: "cs:i" and "cs:f" now quotify string arguments, renamed cs:data to cs:event, orc file and sco file are now quoted in shell call.
- Bug fix: the first level of escape char '\' is now removed in Sal2 and Sal1 strings.
- Bug fix: fixed bug in rangauss that didn't allow the optional second argument to be provided.
- Bug fix: added back --gracecl build option to premake.lua. to build gracecl do: "premake --target gnu --sndlib /path/to/sndlib" and then "make". Note that you must still install sndlib in order to build gracecl.
- Bug fix: fixed several compile bugs in CommonLisp.cpp that prevented GraceCl from compiling.
CM 3.7.0
- Enhancement: updated to S7 Scheme 1.72 (23-Oct-10) and latest CLM runtime and instruments.
- Enhancement: updated to latest Fomus framework (0.1.12-alpha-rc6 )
- Enhancement: new menu lets you record, save, import and play back anything sent out the port.
- New functions: mouse-x mouse-y mouse-button return mouse values.
- Enhancement: new function midifile-import
- Enhancement: new function midifile-header
- Enhancement: new function file-version
- Enhancement: Console window displays a silver frame while Lisp is waiting for input. The frame disappears when input is executed to indicate that Lisp is busy and unavailable for input during this time (only works on OSX).
- Bug fix: fixed bug in markov-analyze that caused infinite loop in some cases.
- Bug fix: fixed bug in pathname-directory and pathname-name that returned bogus pathname components.
- Bug fix: fixed some indentation bugs for SAL1 and SAL2 edit buffers.
CM 3.6.0
- Enhancement: Grace's Editor has been completely reimplemented using JUCE's new CodeDocuement, CodeTokenizer and CodeEditorComponent classes. This major improvement is a complete rewrite of the editor and its low-level string lexing and parsing routines. New features of the editor include:
- Extremely fast syntax highlighting.
- Very large files load quickly.
- New Color Themes can be applied on a per buffer basis.
- New Customization Comments let you to save the buffer's current syntax, theme, font-size, lines and columns with the file, these customizations will be applied automatically when the file is reloaded.
- Cleaner editor menu layout, submenus have items to save current setting as a global preference.
- Enhancement: SAL 2.0 algorithmic language. SAL is an easy-to-learn, infix substitute for Scheme. See for a simple introduction.
- Enhancment: Csound settings improved: options list now a preference, header editor fixed.
- Enhancment: Upgraded code base to latest JUCE (1.52) and SndLib (1.54).
- Enhancment: All Sal tutorials and examples converted to Sal2.
- Enhancment: CM documentation now reflects Sal2 syntax.
- Enhancment: New Files tutorials for both Sal and Scheme.
- Enhancment: New Fomus examples for Scheme.
CM 3.5.2
- Sndlib Enhancement:
fullmix
takes negative srates and srate envelopes. - Sndlib Enhancement:
scaled-to:
now works inwith-sound
. - Bug fix:
expandn
now runs many times faster. - Enhancement: improvements to MIDI output timing result in fewer clipped repeated notes in the case of duration == rhythm.
- Bug fix: Several Fomus bugs fixed.
- Bug fix: added clm_error_handler for reporting low level C errors in CLM.
- Bug fix: Fixed several instrument dependencies in instrument browser.
- Bug fix: Updated S7 runtime (tarball of March 9).
CM 3.5.1
- Enhancement: Updated runtime to S7 Scheme 1.45 (27-Feb-10)
- Enhancement: Updated embedded SndLib instrument distribution, added
cmvrev
andstochastic
instruments to browser. - Bug fix: fixed misnamed function bug in
fm
. - Bug fix: fixed bug in
load
that didn't added definitions to the global environment in some cases. - Bug fix: fixed bug in
error
that broke reporting on incorrect opt/key arguments. - Bug fix: fixed bias bug in
shuffle
(Michael Klingbeil).
CM 3.5.0
- New Feaure:
fomusfile
provides a simple way to create Fomus score can be created. - Enhancement: Fomus interface greatly speeded up
- Enhancement: SAL printing has been greatly speeded up
- Enhancement: SAL tokenizing is now in C with improvement in speed and consing.
- New feaure: SAL command
soundfile
creates a sound file from enclosed instrument calls. - New feaure:
define function
in SAL now always creates a function with opt/key parameters. To specify an &rest argument add three dots to the parameter's name. This new behavior is implemented using S7'sdefine*
primative and should be backward compatible. - Enhancement: Instrument Browser now located at the toplevel Audio menu and can be opened using the keyboard shortcut Command-I.
- Enhancement: new SuperCollider Scheme example.
- Enhancement: new SAL tutorial for SndLib.
- Enhancement: Audio File Player has been improved, now allows zooming and scrolling the waveform display, buffer size is saved as a preference.
- Enhancement: load will search for files in the embedded instrument distribution if the filename has no directory component and the file does not otherwise exist in the current working directory.
- Enhancement: Receiving Midi and Osc data has been improved and made more consistent. See
osc:receiver
,osc:receiver?
,mp:receiver
,mp:receiver?
for more information. - Enhancement: Osc Port now supports sending OSC bundles. See
osc:bundle
for more information. - Enhancement:
osc:message
now allows data to be specified as argument values or as a single list of values. - Enhancement: New function
spectrum-rescale!
rescales frequencies of a spectrum. - Enhancement:
mp:instruments
now supports instrument names (strings) as well as program changes. Partial names are also supported: the first instrument that matches or contains the partial name as a substring will be selected. - Enhancement:
divide
now allows its second argument to be a list of denominators. - Incompatible change: function
mp:inhook
removed. - Incompatible change: function
osc:hook
function removed. - Incompatible change: old function
spectrum-rescale!
has been renamedspectrum-modify!
. - Bug fix: function
drunk
now accepts numeric modes and an avoid parameter.
CM 3.4.0
- New feature: Open Sound Control documentation for more information. lets you send and receive OSC data over the network. See
- New feature: lets you select different color schemes for the Console window.
- New feature: lets you specify the default output file audio format.
- New feature: menu now provides separate submenus for Sal and Scheme examples and tutorials. Scheme versions of the tutorials were created by ugurguney@gmail.com.
- New feature: All the bundled examples, tutorials and CLM instruments can be restored to disk using the menu items in the respective menus.
- New feature: implementation of one and two dimensional cellular automata, including the ability to visualize changing automata states in real time in an associated State Window. See Cellular Automata for more information.
- New function:
spectrum-invert!
inverts spectrum around its minimum frequency. - New function:
deltas
returns a list of differences between specified numbers. - New function:
harmonics
returns a list of harmonic ratios between two harmonic numbers. - Enhancement: upgraded the built-in clm instruments to latest sndlib versions.
- Enhancement: In midi input, noteOn messages with 0 velocity are converted to noteOff.
- CM code base moved to JUCE 1.50 (git tip).
- Bug fix: fixed a bug in that crashed the app when very large SAL files were loaded.
- Bug fix: markov-analyze no longer crashes the app when printing long messages.
- Bug fix: fixed cm's error-hook to handle string args coming from built-in s7 error signals.
- Bug fix: fixed missing function bug in rescale-spectrum.
- Bug fix: Recently opened files now lists newly created/saved files and files that were opened using drag and drop.
- Bug fix: plot axis specification with values but no type is automatically set to generic.
- Bug fix: fixed make-graph to test for embedded patterns in data.
- Bug fix: Numerous FOMUS fixes.
CM 3.3.0 [svn: 1770]
- New audio target: FOMUS, a music notation package by David Psenicka that transforms symbolic score information into fully notated manuscripts. For more information about using Fomus in Common Music see the Fomus documentation and the examples and tutorials under the menu. Note that to work with Fomus in Common Music you need to download and install Fomus on your computer.
- New feature: Plot windows support display, editing and sonification of multidimensional data sets. See menu for examples of creating plot displays.
- New feature: Editor window 'triggers' for interactive evaluation. To add a trigger to a buffer use the menu. Once a trigger is attached you can use it to evaluate the buffer or buffer selection interactively. There are currently four types of trigger: button, counter, slider and midi keyboard. Triggers can be configured interactively and restored/saved to XML descriptions.
- New feature: application icons designed by Tobias Kunze for Mac and Windows
- New feature: Drag and Drop supported file types on Console window and Application Icon. Source files are opened in the editor, Midi files are opened in the plotter.
- New feature: Command line options are now available for the 'cm' console application. Type 'cm --help' for more information.
- New feature: imports data from MIDI files to Editor windows, the Console window or the clipboard.
- New feature: for configuring midifile writing. The default time format is now ticks per quarter (480) and the default file tempo is 60 bpm.
- New feature: for Midi instrument channel assignment.
- New feature: SndLib's Instrument Browser has new AutoLoad button to mark instrument for autoloading at startup.
- New feature: The Editor's menu now contains items to stop/pause/resume any musical processes that are currently executing. These items are only available if the scheduler is actually running processes.
- New function: mp:instruments
- New function: drunk
- New function: rest?
- New function: make-repeater
- New function: directory
- New function: ratio->cents
- New function: ratio->steps
- New function: cents->ratio
- Enhancement: Console window now pops to top when errors are printed
- Enhancement: Grace now uses native Yes/No/Cancel dialogs for Mac and Windows. Thank you Andrew Burnson!
- Enhancement: Error messages in Scheme now look exactly like any other error message (s7 scheme only). Thank you Bill Schottstaedt!
- Enhancement: the current 'working directory' is now saved across sessions as a preference.
- Enhancement: the current instrument assignments are now saved in midifiles by default. Use to toggle the setting.
- Enhancement: Updated Sndlib instruments including vkey (vitual sampler), piano.scm and animals.scm. Instrument dependancies are also loaded and loaded instruments are now colored green in the browser.
- Enhancement: Find and Replace tool for Text Editor
- Enhancement: Source tree includes the amalgamated JUCE sources so an external JUCE installation is no longer required to build CM.
- Enhancement: New Console menu commands: Beep On Errors, Copy, Select All, Clear Selection.
- Enhancement: Audio Player is resizable and has a sleek new transport widget with positional slider. Thanks to Andrew Burnson.
- Enhancement: Console and Text Editor font sizes now range from 9 to 32.
- Enhancement: Websites for SndLib and Chicken now appear in the menu.
- Enhancement: Editor menus slightly reorganized: some ititems in the Eval menu have been moved to the Edit menu and lookup symbol documentation (Command-D) is now under
- Bug fix: The 'note' function no longer unsets the default octave if a rest is encountered.
- Bug fix: The 'rhythm' function now handles negative rhythm names as rest markers.
- Bug fix: The 'Hush' menu command for Midi Out port now works correctly. Use (stop) to flush processes and pending output in Scheme code.
- Bug fix: The 'cm' console app now quits more gracefully. Use the lisp function (quit) to quit the app (the 'q' command has been removed).
- Bug fix: fixed scheduler bug that did not preserve insertion order for nodes with equal time stamps. This may effect scheduling!
- Bug fix: fixed transpose function to transpose note names.
- Bug fix: The 'cm' console app now reads input forms that include embedded comments.
- Bug fix: Audio Player's waveform display now works on Windows an Linux.
- Bug fix: Audio Player's Settings... button is now disabled during audio playback.
- Bug fix: Evaling regions in SAL buffers now works correctly.
- Bug fix: COMMAND-A (Select All) in editor now works correctly.
- New application target: the GraceCL application is modified version of the Grace environment for use with Common Lisp (SBCL or CLisp) and Common Music 2 releases (version 2.12.0 or higher). GraceCL is intened to be a replacement for running CM2 under Emacs and Slime, as such it does not contain an Audio menu or real time scheduling. To learn how to use GraceCL, start the application and follow the instructions printed in the Console window.
Version 3.2.4
- Enhancement: SndLib audio and S7 Scheme running on Windows! Thanks to Michael Gogins, who wrote the SCons script that compiles sndlib.a on MingW.
- Enhancement: Midi Input port is working. Use Midi In documentation for more information. menu to select devices, customize channel and message filtering and test input. See
- Enhancement: new Csound audio target. Use csound documentation and the Help menu's csound example for more information. menu to configure your Csound environment. See
- Enhancement: added SndLib documentation.
- Cleaned up numerous dictionary entries including a new entry for sprout. Dictionary now validates as xhtml strict.
- System now builds on Windows/Mingw with Chicken 3.0.0. Carlos Pita reports that you can build with the latest Chicken (3.4.0) if you simply regenerate ChickenBridge.cpp. Instructions are in readme.text.
- Enhancement: Carlos Pita cleaned up the premake.lua script and added support for linking against installed systems. To link against an installed dependancy simply pass the install root as the value of the option eg '--juce /usr/local/'
- Enhancement: audio player now sports a realtime waveform view (lifted from the Juce Demo app...)
- Enhancement: new menu item in Console and Editor works for both .scm and .sal files.
- Enhancement: new menu holds last 8 loaded files for fast loading.
- Enhancement: menu item sets a lisp file to autoload at startup.
- Enhancement: added "Clear Init File" menu item for removing a lisp startup file.
- Bug fix: (Linux/alsa) added flush to sendMessageNow to fix jitter.
- Bug fix: cut command works correctly now.
- Bug fix: removed spurious AudioFile entry from Help menu and tidied up the menu.