Jump to content

Recommended Posts

Can anyone post some examples of music that isn't so random, like create a pop tune with algorithmic software? Sometimes I think this is a weakness of these methods, i.e., crafting a memorable theme and developing it is near impossible...

Link to comment
Share on other sites

Good point. At the moment I am working on videos and version 1.1 but I will make some example for you soon.

Using randomisation is of essence when the structure of your pice is clear and the parameter values are set.

On many occasions there is no need to make a specific order of a selection.

 

Maybe you should start your pice in OMN and then extend the material with algorithmic method.

Check the PITCH-VARIANT and TONALITY-MAP those are good functions for harmonic works.

Anyway, when I have more time I will make a pop and jazz example.

 

Thank you for asking :-)

P.S. Maybe Stephane can do something quicker.

Link to comment
Share on other sites

Hi,

here's a short example of a reggae accompaniment i found in my sandbox.

i'm working on a better example (and better commented and explained) i will post once finished but this one can help a bit.

;;; Reggae1

;; Harmonic path
(setf cpath '((e4 maj) (cs4 m) (e4 maj) (cs4 m)
              (gs3 m) (fs3 m) (gs3 m) (b3 7)))

;; Patterns
(setf pbass1.omn (tonality-map
                  (mclist cpath)
                  (make-omn
                   :pitch (rnd-sample 4 '((c2 g2 c2)))
                   :length (gen-repeat
                            8
                            (list
                             (binary-map
                              (gen-binary-euclidean 1 16 5 9)
                              's))))))

(setf pstack1.omn (tonality-map
                  (mclist cpath)
                  (make-omn
                   :pitch '((e3g3c4))
                   :length (gen-repeat
                            8
                           '((-e e - = - = - =)))
                   :articulation '((stacc)))))

;; Drums
(setf kick1 (gen-repeat 
             4
             (list
              (replace-pitch-map 
               *gm-percussion*
               'Bass-Drum1
               '(-e c4 - - - = - = = - - - = - - -)))))
            
(setf snare1 (gen-repeat 
             4
             (list
              (replace-pitch-map
               *gm-percussion*
               'Acoustic-Snare
               '(-q c4 - = - = - =)))))

(setf hh1 (gen-repeat 
             4
             (list
              (replace-pitch-map
               *gm-percussion*
               'Closed-Hi-hat
               '(e c4 = = = = = = = = = = = = = = =)))))

(setf drums (merge-voices kick1 snare1 hh1))

(def-score reggae1
           (:time-signature '(4 4)
            :key-signature '(e maj)
            :tempo 72)

(bass
 :omn pbass1.omn
 :channel 1
 :sound 'gm
 :program 'Electric-Bass-Finger)

(guitar
 :omn pstack1.omn
 :channel 2
 :sound 'gm
 :program ' Electric-Guitar-Clean)

(drums
 :omn drums
 :channel 10))

SB.

Link to comment
Share on other sites

Here is my example named Pop_up !

Each time you run it, it generate a new version based on the chord progression.

i hope it can help.

;; Chord progression
(setf grid1 (tonality-series '((c4 min)(ab4 maj)(f4 min)(g4 maj)
                               (c4 min)(ab3 maj)(f3 min)(g3 maj))))

;; Extract length of grid1 list and give it the name: size1.
(setf size1 (length grid1))

;; Accomp.
(setf bass.pitch (rnd-sample 4 '(c2 c3 g2)))
(setf bass.length (binary-map (gen-binary-euclidean 1 16 4 10)'s))

(setf bass (make-omn
            :pitch bass.pitch
            :length (list bass.length)))

(setf chords.pitch (integer-to-pitch (rnd-sample 16 (gen-integer 12))))
(setf chords.pitch.div (gen-divide 4 chords.pitch))
(setf chords.pitch.chrd (chordize-list chords.pitch.div))
(setf chords.len (binary-map (gen-binary-euclidean 1 16 4 12)'s))

(setf chords (make-omn
              :pitch chords.pitch.chrd
              :length (list chords.len)))

;; Repeat the given material
(setf bass.rep (gen-repeat size1 bass))
(setf chords.rep (gen-repeat size1 chords))

;; Apply the harmonic chords progression to accomp.
(setf bass.map (tonality-map grid1 bass.rep))
(setf chords.map (pitch-transpose -12 (tonality-map grid1 chords.rep)))

;; Melody
;; vector definition for melodic contour generation
(setf vect (vector-smooth 0.45 (gen-white-noise 128)))

;; Convert vector to pitch
(setf melo.pitch (vector-to-pitch '(c4 c6) vect))

;; Rhythm generation for melody
(setf melo.length (gen-repeat
                   size1
                   (list
                   (binary-length-map 
; note the use of binary-LENGTH-map in place of binary-map 
                   (gen-binary-euclidean 1 16 2 10) 's))))

;; Melody assembly 
(setf melo (make-omn
            :pitch melo.pitch
            :length melo.length))

;; Apply the harmonic chords progression to melo.
(setf melo.map (tonality-map grid1 melo))

;; add some rest
(setf melo.rest (length-rest-weight '(3 1) melo.map))  

(def-score Pop_up
           (:key-signature '(c min)
            :time-signature '(4 4)
            :composer "S.Boussuge"
            :copyright "Copyright © 2015 S.Boussuge"
            :tempo 112)

(bass
 :omn bass.map 
 :channel 1
 :sound 'gm
 :program 'Electric-Bass-Finger)

(guitar
 :omn chords.map
 :channel 2
 :sound 'gm
 :program 'Electric-Guitar-Jazz)

(melo
 :omn melo.rest
 :channel 3
 :sound 'gm
 :program 'flute))

SB.

Pop_up.opmo

Link to comment
Share on other sites

  • opmo unfeatured this topic

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

Terms of Use Privacy Policy