bar-holder/change-pitches [ Methods ]
[ Top ] [ bar-holder ] [ Methods ]
DESCRIPTION
Change the pitches in the specified bars to the specified new pitches. NB: This method requires that full bars be given, even if not all pitches are being changed.
ARGUMENTS
- A bar-holder object (such as the PIECE slot within a slippery-chicken object). - The ID of the player whose part is to be changed. - An integer that is the number of the first bar in which pitches are to be changed. - A list of lists of note-name symbols, each sublist representing a consecutive bar and containing the same number of note-name symbols as there are rhythms in that bar. A NIL in these lists means no change is to be made to the corresponding rhythm or bar (see example below). NB: This method counts tied notes rather than just attacked notes.
OPTIONAL ARGUMENTS
keyword arguments: - :use-last-octave. T or NIL to indicate whether the method is to require that each note-name symbols in the <new-pitches> list has an octave indicator. If this argument is set to NIL, each note-name symbol must have an octave indicator (e.g., the 4 in c4). If this argument is set to T, only the first note-name symbol in the bar is required to have an octave indicator, and all subsequent note-name symbols without octave indicators will use the last octave indicated; e.g. '((a3 b g cs4)). NB: This feature does not work with chords. Default = T. - :written. T or NIL to indicate whether these are the written or sounding notes for a transposing instrument. Default = NIL.
RETURN VALUE
Always returns T.
EXAMPLE
;;; NIL indicates that no change is to be made; this applies to single rhythms ;;; as well as entire bars. (let ((mini (make-slippery-chicken '+mini+ :ensemble '(((cl (b-flat-clarinet :midi-channel 1)) (vc (cello :midi-channel 2)))) :set-palette '((1 ((c2 d2 e2 f2 g2 a2 b2 c3 d3 e3 f3 g3 a3 b3 c4 d4 e4 f4 g4 a4 b4 c5)))) :set-map '((1 (1 1 1 1 1))) :rthm-seq-palette '((1 ((((4 4) h q e (s) s)) :pitch-seq-palette ((1 (2) 3 4))))) :rthm-seq-map '((1 ((cl (1 1 1 1 1)) (vc (1 1 1 1 1)))))))) (change-pitches (piece mini) 'cl 2 '((c4 d4 e4 f4))) (change-pitches (piece mini) 'vc 3 '((c3 d e f) nil (g3 nil b c4)))) => T
SYNOPSIS
(defmethod change-pitches ((bh bar-holder) player start-bar new-pitches &key (use-last-octave t) written)
bar-holder/delete-all-marks [ Methods ]
[ Top ] [ bar-holder ] [ Methods ]
DESCRIPTION
Delete all marks from the MARKS slots of all events in the specified measure range of a given bar-holder object and set the slot to NIL. This method always applies to full bars.
ARGUMENTS
- A bar-holder object. - An integer that is the number of the first bar from which all marks are to be deleted. - An integer that is the number of consecutive bars including the first bar from which all marks are to be deleted. - The ID of the player from whose part the marks are to be deleted.
RETURN VALUE
Always returns T.
EXAMPLE
(let ((mini (make-slippery-chicken '+mini+ :ensemble '(((cl (b-flat-clarinet :midi-channel 1)) (vc (cello :midi-channel 2)))) :set-palette '((1 ((c2 d2 e2 f2 g2 a2 b2 c3 d3 e3 f3 g3 a3 b3 c4 d4 e4 f4 g4 a4 b4 c5)))) :set-map '((1 (1 1 1 1 1))) :rthm-seq-palette '((1 ((((4 4) h q e (s) s)) :pitch-seq-palette ((1 (2) 3 4)) :marks (a 1 s 2 te 3 as 4)))) :rthm-seq-map '((1 ((cl (1 1 1 1 1)) (vc (1 1 1 1 1)))))))) (delete-all-marks (piece mini) 2 2 'vc)) => T
SYNOPSIS
(defmethod delete-all-marks ((bh bar-holder) start-bar num-bars player)
bar-holder/get-note [ Methods ]
[ Top ] [ bar-holder ] [ Methods ]
DESCRIPTION
Return the event object (or pitch object, if accessing a note within a chord) from a specified bar and note within a given bar-holder object.
ARGUMENTS
- A bar-holder object (e.g. PIECE slot of a slippery-chicken object). - An integer that is the 1-based number of the bar from which the note is to be retrieved. - An integer or two-item list of integers that is the 1-based number of the note to retrieve within the specified bar. If an integer, the entire event object is retrieved. A two-item list of integers is used to retrieve a specific note from within a chord, in the form '(2 1), where 2 is the second note (or non-rhythm event) in the bar, and 1 is the first note in the chord counting from the bottom. NB: This argument also counts tied notes, not just attacked notes. - The ID of the player from whose part the note is to be retrieved.
OPTIONAL ARGUMENTS
- T or NIL to indicate whether, when accessing a pitch in a chord, to return the written or sounding pitch. T = written. Default = NIL.
RETURN VALUE
An event object, or single pitch object if accessing a note within a chord.
EXAMPLE
(let ((mini (make-slippery-chicken '+mini+ :ensemble '(((cl (b-flat-clarinet :midi-channel 1)) (vc (cello :midi-channel 2)))) :set-palette '((1 ((c2 d2 e2 f2 g2 a2 b2 c3 d3 e3 f3 g3 a3 b3 c4 d4 e4 f4 g4 a4 b4 c5)))) :set-map '((1 (1 1 1 1 1))) :rthm-seq-palette '((1 ((((4 4) h q e s s)) :pitch-seq-palette ((1 (2) 3 4 5))))) :rthm-seq-map '((1 ((cl (1 1 1 1 1)) (vc (1 1 1 1 1)))))))) (print (get-note (piece mini) 3 '(2 1) 'vc)) ; single pitch within a chord (print (get-note (piece mini) 3 2 'vc)) ; entire chord event (print (get-note (piece mini) 5 3 'cl)))
SYNOPSIS
(defmethod get-note ((bh bar-holder) bar-num note-num player &optional written)
bar-holder/transpose-bars [ Methods ]
[ Top ] [ bar-holder ] [ Methods ]
DESCRIPTION
Transpose the pitches of the specified bars in a given player's part by a specified number of semitones.
ARGUMENTS
- A bar-holder object (such as the PIECE slot of a slippery-chicken object). - A positive or negative integer that is the number of semitones by which the pitches of the specified bars are to be transposed. - An integer that is the number of the first bar in which the pitches are to be transposed. - An integer that is the number of consecutive bars, including the start-bar, in which the pitches are to be transposed. - The ID of the player whose part is to be changed.
OPTIONAL ARGUMENTS
keyword arguments: - :destructively. T or NIL to indicate whether the transposed pitches are to replace the existing pitches of the given bar-holder object. This must be set to T if the pitches of the original object are to be transposed before, for example, generating output. If NIL, the original object will first be cloned, the pitches of the original object will be left untouched and the changes will be made to the copy. Default = NIL. - :print-bar-nums. T or NIL to indicate whether the method should print feedback about which bars have been transposed to the listener. T = print feedback. Default = NIL. - :chord-function. The function that is to be used for transposition of chords objects. Default = #'transpose (of the chord class). - :chord-function. The function that is to be used for transposition of pitch objects. Default = #'transpose (of the pitch class).
RETURN VALUE
Returns a list of the rthm-seq-bar objects that have been transposed.
EXAMPLE
(let ((mini (make-slippery-chicken '+mini+ :ensemble '(((cl (b-flat-clarinet :midi-channel 1)) (vc (cello :midi-channel 2)))) :set-palette '((1 ((c2 d2 e2 f2 g2 a2 b2 c3 d3 e3 f3 g3 a3 b3 c4 d4 e4 f4 g4 a4 b4 c5)))) :set-map '((1 (1 1 1 1 1))) :rthm-seq-palette '((1 ((((4 4) h q e (s) s)) :pitch-seq-palette ((1 (2) 3 4))))) :rthm-seq-map '((1 ((cl (1 1 1 1 1)) (vc (1 1 1 1 1)))))))) (transpose-bars (piece mini) 11 2 2 'cl :destructively t :print-bar-nums t))
SYNOPSIS
(defmethod transpose-bars ((bh bar-holder) semitones start-bar num-bars player &key (destructively nil) (print-bar-nums nil) ;; the default functions are the class methods for ;; pitch or chord. (chord-function #'transpose) (pitch-function #'transpose))
linked-named-object/bar-holder [ Classes ]
[ Top ] [ linked-named-object ] [ Classes ]
NAME
bar-holder File: bar-holder.lsp Class Hierarchy: named-object -> linked-named-object -> bar-holder Version: 1.1.0 Project: slippery chicken (algorithmic composition) Purpose: This class is meant to be sub-classed by piece, section and sequence, all of which hold each other or, ultimately a list of bars with relevant rhythms, timings, pitches etc. Author: Michael Edwards: m@michael-edwards.org Creation date: 16th February 2002 $$ Last modified: 17:46:39 Sat Jan 27 2024 CET SVN ID: $Id$