Actos, ChordML and ChordQL

Actos is a a Peer-to-Peer (P2P) application developed in Java that uses the JXTA open platform. ChordML was conceived as a means to document music in a standard, portable, non-proprietary and scalable format. ChordQL is a query language for analysis and querying chord sequences.

ChordML
  
Sample ChordML files
  Sample transformed HTML files
  DTD

ChordQL
  Samples

The Actos application
  Download and video demonstrations

Using Actos, ChordML and ChordQL

 
ChordML

ChordML is an XML application for representing music synoptically. ChordML is human-readable and stores chords, lyrics, repetition and metainformation about a music. ChordML does not intend to be a notational format that describes a music completely. Instead, it narrows its objectives essentially capturing music chords. It suits the need of musicians that need just an abbreviated notation, and tools that can operate with such information. This simplicity encourages the utilization of the standard by different applications. It also allows the analisys of certain aspects of music, like chord progressions and patterns.

   Sample ChordML files
 PrimeiroAmor.cml
 ProcessingPlant.cml
 Trials.cml

   Sample transformed HTML files
ChordML can be transformed into HTML for easy viewing in standard browsers through the use of XSLT and extensions. The HTML documents below were transformed from ChordML using the Actos application.
 PrimeiroAmor.html
 ProcessingPlant.html
 Trials.html

  DTD
Here is the ChordML DTD

 

ChordQL

ChordQL, also an XML language, is a query language for querying chord sequences. ChordQL queries are interpreted by a query processor. The query processor compares a query with a (ChordML) music and responds either with a match or a no-match answer. ChordQL allows the users to express queries of chord sequences using the key names (A7, F#/A#, etc) or grades relative to the key, represented in roman numbers (I, ii, IV64, etc). Internally, Actos' chord query processor transforms the query to Regular Expressions using XSLT and applies it to each music instance returning either a "match" or "no match" answer. Besides performing exact chord matches, queries can contain attributes that instruct Actos' chord query processor to disregard chord inversions, major/minor modes or other chord suffixes in the notation.

   Samples
Here is a sample ChordQL query. It checks if a music contains a G chord followed by a D/F# chord:
<query>
  <c r="G"/><c r="D" b="F#"/>
</query>

  Here are some more samples of ChordQL queries.

    

The Actos application

The Actos application enables users to exchange ChordML files over the internet in a Peer-to-Peer model. Actos is built on JXTA, an open Peer-to-Peer platform. It has no centralized server, and includes a ChordML transformer, which converts ChordML files into HTML. Actos also contains a ChordQL query processor that performs distributed searches through the collection of ChordML files of all peers connected to the network.

  Here you can read the paper about Actos to be presented at the MAX 2002 conference, being held in September 2002 in Milan, Italy. RTF format - PostScript format.

   Having read the Disclaimers at the bottom of this page, you can download Actos here . README.txt contains further installation instructions.

Here you can view two video demonstrations of Actos in action (.avi format): Video - first part     Video - second part
(The videos can be viewed in the Windows platform with the Windows Media Player.)

Actos uses the following software:
- Java 2 Runtime Environment - J2SE (or SDK 1.3) - It needs to be installed before Actos. For more information, see README.txt in Actos' distribution.
- JXTA binaries (All files ship with actos_deploy.zip)
- Xerces XML parser (All files ship with actos_deploy.zip)
- Xalan XSLT transformer (All files ship with actos_deploy.zip)
- GNU Regular Expressions for Java package (All files ship with actos_deploy.zip)

Using Actos, ChordML and ChordQL

How are you using or how do you intend to use Actos? I will be more than glad to hear more about it.
You can reach Gustavo Frederico at gcsfred@magma dot ca.

ChordML and ChordQL can be used in non-commercial applications with no charge and no fees, including software for academic purposes. It is requested, though, that all software using ChordML include the following sentence in its documentation or User Interface: "This software uses ChordML. ChordML was created by Gustavo Frederico." It is requested that all software using ChordQL include the following sentence in its documentation or User Interface: "This software uses ChordQL. ChordQL was created by Gustavo Frederico." If you intend to use ChordML or ChordQL commercially, please contact Gustavo Frederico . For the use of the Actos application, please read the Disclaimers below.
  Suggestions and comments about Actos, ChordML and ChordQL are welcomed.



    Disclaimer
Gustavo Frederico takes no responsibility over the misuse of ChordML for the encoding of copyrighted material.
The encoding of material is done at the sole risk and full responsibility of the user. The encoding or transmission
of encoded copyrighted material not owned by the user is discouraged. The encoding or transmission of encoded
copyrighted material not created by the user is discouraged. In no event shall Gustavo Frederico be liable for any
direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, 
procurement of substitute goods or services) however caused and on any theory of liability, wheter in contract, 
strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this standard, 
even if advised of the possibility of such damage. Gustavo reserves the right, in his sole discretion and without 
any obligation, to make improvements to, or change, or correct  any errors or omissions in any portion of the standards.

  


    Disclaimer
Actos is the creation of Gustavo Frederico. Gustavo Frederico takes no responsibility over the misuse of Actos
for the encoding of copyrighted material. The encoding of material is done at the sole risk and full responsibility 
of the user. The encoding or transmission of encoded copyrighted material without the legal rights and/or
permissions to do so may characterize crime. Such practice is discouraged.
The encoding or transmission of encoded copyrighted material not created by the user is discouraged.
In no event shall Gustavo Frederico be liable for any direct, indirect, incidental, special, exemplary,
or consequential damages  (including, but not limited to, procurement of substitute goods or services) however 
caused and on any theory of liability, wheter in contract, strict liability, or 
tort (including negligence or otherwise) arising in any way out of the use of this software, 
even if advised of the possibility of such damage. This product includes software developed by Daishi Kato. This 
product includes software developed by the Apache Software Foundation (http://www.apache.org/). See 
ApacheLicense.txt.
This software is provided as is and has no warranties. No support is provided.
You may not (i) modify, translate, reverse engineer, decompile or disassemble the software; 
(ii) remove any proprietary notices or labels on the software or documentation; (iii) transmit or store copyrighted 
material without the legal rights to do so; (iv) redistribute, rebrand, embbed or include Actos other 
software without the written permission of its creator.
jxta.org and all jxta.org-based trademarks and logos, Sun, Sun Microsystems, the Sun Logo, Solaris, 
Java, Jini, J2ME and Personal Java are trademarks or registered trademarks of Sun Microsystems, Inc., in the 
United States and other countries. All other trademarks or registered trademarks are the property of their respective 
holders. Gustavo reserves the right, in his sole discretion and without any obligation, to make improvements to, or 
change, or correct any errors or omissions in any portion of the software.