Mercurial > hg > amuse
diff base/charm/example/eg-constituent-constructors.lisp @ 253:b5ffec94ae6d
some very sketchy Charm constituent code
author | Jamie Forth <j.forth@gold.ac.uk> |
---|---|
date | Thu, 24 Feb 2011 11:23:18 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/base/charm/example/eg-constituent-constructors.lisp Thu Feb 24 11:23:18 2011 +0000 @@ -0,0 +1,128 @@ +(cl:in-package #:amuse-geerdes) + +;;; The idea of Charm constituents here is closely tied up with the +;;; database. The basic constructors below will work without a working +;;; database, but obviously not the store and get stuff. + +(asdf:oos 'asdf:load-op 'amuse-geerdes) +(asdf:oos 'asdf:load-op 'geerdes-tools) +(asdf:oos 'asdf:load-op 'amuse-charm) +(use-package 'amuse-charm) + +(defparameter *charm-database* ; just for testing + (connect-to-database :database-name "amuse_charm" + :username "jamie" + :make-default nil)) +(disconnect-from-database *charm-database*) + +(connect-to-database) ; default amuse connection for getting geerdes data +(disconnect-from-database) + +;(create-charm-db-tables *charm-database*) +;(drop-charm-db-tables *charm-database*) + +(defparameter *composition* + (get-composition (g-id-file-id 1))) + +(defparameter *charm-constituent-composition* + (composition->charm-constituent *composition* + (make-charm-property-list + 'composition) + (make-charm-property-list + 'polyphonic))) + +(defparameter *charm-constituent-composition-identifier* + (store-charm-constituent *charm-constituent-composition* + *charm-database*)) + +(defparameter *charm-constituent-composition-db* + (get-charm-constituent *charm-constituent-composition-identifier* + *charm-database*)) + + +;;; Slice composition into segments + +(defparameter *onset-segments-constituent* + (make-onset-segment-constituent *composition*)) + +(defparameter *onset-segment-constituent-identifier* + (store-charm-constituent *onset-segments-constituent* + *charm-database*)) + +(defparameter *charm-constituent-composition-db* + (get-charm-constituent *onset-segment-constituent-identifier* ;1922 + *charm-database*)) + +;;; Bar segments + +(defparameter *bar-segments-constituent* + (segment-at-bar *composition*)) + + +;;; Part-like constituents. + +(defparameter *lead-vocals* + (geerdes-tools:vocal-part *composition*)) + +(defparameter *charm-vocals* + (composition->charm-constituent *lead-vocals* + (make-charm-property-list 'voice + 'monophonic) + (make-charm-property-list 'song))) + +(defparameter *charm-vocals-identifier* + (store-charm-constituent *charm-vocals* *charm-database*)) + +(defparameter *charm-vocals-db* + (get-charm-constituent *charm-vocals-identifier* + *charm-database*)) + +(defparameter *bass-guitar* + (geerdes-tools:bass-part *composition*)) + +(defparameter *charm-bass* + (composition->charm-constituent *bass-guitar* + (make-charm-property-list 'guitar + 'polyphonic) + (make-charm-property-list 'song))) + +(defparameter *charm-bass-identifier* + (store-charm-constituent *charm-bass* *charm-database*)) + +(defparameter *charm-bass-db* + (get-charm-constituent *charm-bass-identifier* *charm-database*)) + + +;;; Combine above as events. + +(defparameter *bass+vocals-constituent1* + (make-standard-charm-constituent + (append (%list-slot-sequence-data *charm-bass*) + (%list-slot-sequence-data *charm-vocals*)) *composition* + (make-charm-property-list 'vocal 'bass-guitar 'polyphonic) + (make-charm-property-list 'song))) + +(defparameter *bass+vocals-constituent1-identifier* + (store-charm-constituent *bass+vocals-constituent1* *charm-database*)) + +(defparameter *bass+vocals-constituent1-db* + (get-charm-constituent *bass+vocals-constituent1-identifier* + *charm-database*)) + + +;;; Combine above as constituents + +(defparameter *bass+vocals-constituent2* + (make-standard-charm-constituent + (list *charm-bass* *charm-vocals*) + *composition* + (make-charm-property-list 'vocal 'bass-guitar 'polyphonic) + (make-charm-property-list 'song))) + +(defparameter *bass+vocals-constituent2-identifier* + (store-charm-constituent *bass+vocals-constituent2* + *charm-database*)) + +(defparameter *bass+vocals-constituent2-db* + (get-charm-constituent *bass+vocals-constituent2-identifier* + *charm-database*))