j@253: (cl:in-package #:amuse-geerdes) j@253: j@253: ;;; The idea of Charm constituents here is closely tied up with the j@253: ;;; database. The basic constructors below will work without a working j@253: ;;; database, but obviously not the store and get stuff. j@253: j@253: (asdf:oos 'asdf:load-op 'amuse-geerdes) j@253: (asdf:oos 'asdf:load-op 'geerdes-tools) j@253: (asdf:oos 'asdf:load-op 'amuse-charm) j@253: (use-package 'amuse-charm) j@253: j@253: (defparameter *charm-database* ; just for testing j@253: (connect-to-database :database-name "amuse_charm" j@253: :username "jamie" j@253: :make-default nil)) j@253: (disconnect-from-database *charm-database*) j@253: j@253: (connect-to-database) ; default amuse connection for getting geerdes data j@253: (disconnect-from-database) j@253: j@253: ;(create-charm-db-tables *charm-database*) j@253: ;(drop-charm-db-tables *charm-database*) j@253: j@253: (defparameter *composition* j@253: (get-composition (g-id-file-id 1))) j@253: j@253: (defparameter *charm-constituent-composition* j@253: (composition->charm-constituent *composition* j@253: (make-charm-property-list j@253: 'composition) j@253: (make-charm-property-list j@253: 'polyphonic))) j@253: j@253: (defparameter *charm-constituent-composition-identifier* j@253: (store-charm-constituent *charm-constituent-composition* j@253: *charm-database*)) j@253: j@253: (defparameter *charm-constituent-composition-db* j@253: (get-charm-constituent *charm-constituent-composition-identifier* j@253: *charm-database*)) j@253: j@253: j@253: ;;; Slice composition into segments j@253: j@253: (defparameter *onset-segments-constituent* j@253: (make-onset-segment-constituent *composition*)) j@253: j@253: (defparameter *onset-segment-constituent-identifier* j@253: (store-charm-constituent *onset-segments-constituent* j@253: *charm-database*)) j@253: j@253: (defparameter *charm-constituent-composition-db* j@253: (get-charm-constituent *onset-segment-constituent-identifier* ;1922 j@253: *charm-database*)) j@253: j@253: ;;; Bar segments j@253: j@253: (defparameter *bar-segments-constituent* j@253: (segment-at-bar *composition*)) j@253: j@253: j@253: ;;; Part-like constituents. j@253: j@253: (defparameter *lead-vocals* j@253: (geerdes-tools:vocal-part *composition*)) j@253: j@253: (defparameter *charm-vocals* j@253: (composition->charm-constituent *lead-vocals* j@253: (make-charm-property-list 'voice j@253: 'monophonic) j@253: (make-charm-property-list 'song))) j@253: j@253: (defparameter *charm-vocals-identifier* j@253: (store-charm-constituent *charm-vocals* *charm-database*)) j@253: j@253: (defparameter *charm-vocals-db* j@253: (get-charm-constituent *charm-vocals-identifier* j@253: *charm-database*)) j@253: j@253: (defparameter *bass-guitar* j@253: (geerdes-tools:bass-part *composition*)) j@253: j@253: (defparameter *charm-bass* j@253: (composition->charm-constituent *bass-guitar* j@253: (make-charm-property-list 'guitar j@253: 'polyphonic) j@253: (make-charm-property-list 'song))) j@253: j@253: (defparameter *charm-bass-identifier* j@253: (store-charm-constituent *charm-bass* *charm-database*)) j@253: j@253: (defparameter *charm-bass-db* j@253: (get-charm-constituent *charm-bass-identifier* *charm-database*)) j@253: j@253: j@253: ;;; Combine above as events. j@253: j@253: (defparameter *bass+vocals-constituent1* j@253: (make-standard-charm-constituent j@253: (append (%list-slot-sequence-data *charm-bass*) j@253: (%list-slot-sequence-data *charm-vocals*)) *composition* j@253: (make-charm-property-list 'vocal 'bass-guitar 'polyphonic) j@253: (make-charm-property-list 'song))) j@253: j@253: (defparameter *bass+vocals-constituent1-identifier* j@253: (store-charm-constituent *bass+vocals-constituent1* *charm-database*)) j@253: j@253: (defparameter *bass+vocals-constituent1-db* j@253: (get-charm-constituent *bass+vocals-constituent1-identifier* j@253: *charm-database*)) j@253: j@253: j@253: ;;; Combine above as constituents j@253: j@253: (defparameter *bass+vocals-constituent2* j@253: (make-standard-charm-constituent j@253: (list *charm-bass* *charm-vocals*) j@253: *composition* j@253: (make-charm-property-list 'vocal 'bass-guitar 'polyphonic) j@253: (make-charm-property-list 'song))) j@253: j@253: (defparameter *bass+vocals-constituent2-identifier* j@253: (store-charm-constituent *bass+vocals-constituent2* j@253: *charm-database*)) j@253: j@253: (defparameter *bass+vocals-constituent2-db* j@253: (get-charm-constituent *bass+vocals-constituent2-identifier* j@253: *charm-database*))