使用缺定义的示例.docx
- 文档编号:4362570
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:5
- 大小:17.29KB
使用缺定义的示例.docx
《使用缺定义的示例.docx》由会员分享,可在线阅读,更多相关《使用缺定义的示例.docx(5页珍藏版)》请在冰豆网上搜索。
使用缺定义的示例
Jazz模型
Jazz模型是Jazz理论中概念的完整ActiveRecord模型,建立了和弦和比例之间的关系,以及更多的。
除了在数据库中表示jazz理论关系之外,jazz模型还可以在这些jazz"对象"中执行键转换和其他操作。
默认情况下,它使用内存数据库数据库,但它可以在其他地方保存。
失败
注:
这里项目已经不再处于活动开发状态。
所有工作现在都致力于Jazzity,这是由这个项目启发的public界面:
如果你对Jazz理论的数学分析有兴趣的话,请登录这里。
体系结构概述
Jazz工具箱的核心是表示Jazz理论概念的完整ruby对象模型,以最基本的概念提炼,以非常抽象的方式构建。
系统以数据为中心,所有"规则"(例如C7弦中的音调)都包含在数据库中。
所有chord/scale/mode/etc.定义都存储为一个数学系统(数字序列),然后被用来执行计算。
举例来说,把一些弦放在不同的关键是增加一个双音增量和模拟12.
虽然现在有很多弦计算器,但是我知道这个项目是一个数学/计算系统。
注意:
当前数据库完全由我自己对Jazz理论的知识组成。
我还没有通过爵士理论文献来形式化和扩展当前的弦。
比例和弦尺数据库。
还有很多工作要做,我有很多关于如何扩展这个方法的想法。
内核特性
∙缩放&模式枚举
∙处理各种符号
∙ChordTone枚举
∙通过强度度量遍历ScaleChord关系
∙充分理解理论音调(vs。
只有音高)
安装
只需在你的Gemfile中包含gem:
gem"jazz_model"
从这里开始,你可以直接使用JazzModel下面的类,但在加载定义之前,它不会太多使用:
JazzModel:
:
Base.load_definitions
使用缺省定义的示例
一切都在JazzModel命名空间下,因此如果要直接使用这些类,请先执行这里操作:
includeJazzModel
得到一个弦对象:
Chord['maj7']
Chord['Bbmaj7']#<-WithKeyContext
Chord['Abmaj7#11']
...
获取缩放对象:
Scale['Major']
Scale['MelodicMinor']
Scale['Diminished']
...
获得一个特定的缩放模式:
Scale['Major'].modes['Dorian']#ByModeName
Scale['Major'].modes[2]#ByModeIndex
#Ordirectlyindexthescaleobject(sameasabove):
Scale['Major']['Dorian']
Scale['Major'][2]
枚举和弦的音符:
Chord['maj'].notes#DefaultstoCwithoutspecifiedkeycontext
#=>['C','E','G']
Chord['Ebmaj7'].notes
#=>['Eb','G','Bb','D']
#Orspecifykeycontextwithchainedmethodslikethis...
Chord['maj7'].in_key_of('Eb').notes
Chord['Bmaj7#11'].notes
#=>['B','D#','F#','A#','E#']
#NoteE#-Correcttheoreticvalueforthischord,notF
Chord['Falt'].notes
Chord['F7b9#9'].notes
#=>['F','A','Eb','Gb','G#','C#']
Chord['Gbmaj7'].notes
#=>['Gb','Bb','Db','F']
#But...
Chord['F#maj7'].notes
#=>['F#','A#','C#','E#']
枚举音阶的注释:
Scale['Major'].notes#DefaultstoCwithoutspecifiedkeycontext
#=>['C','D','E','F','G','A','B']
Scale['EbMajor'].notes
#=>['Eb','F','G','Ab','Bb','C','D']
#Orspecifykeycontextwithchainedmethodslikethis:
Scale['Major'].in_key_of('Eb').notes
Scale['WholeTone'].notes
#=>['C','D','E','F#','G#','Bb']
Scale['Bebop'].notes
#=>['C','D','E','F','G','A','Bb','B']
从缩放模式枚举注释:
Scale['Major'].in_key_of('Eb').modes['Dorian'].notes
#=>['F','G','Ab','Bb','C','D','Eb']
Scale['MelodicMinor']['LydianDominant'].notes
#=>['F','G','A','B','C','D','Eb']
枚举与和弦关联的缩放模式:
Chord['min7'].modes.names#.names==.map(&:
name)
#=>['Dorian']
Chord['min7'].modes[0].scale.name
#=>"Major"
Chord['Amin7'].modes.names
#=>['ADorian']
枚举与缩放模式关联的和弦:
Scale['Major']['Dorian'].chords.symbols
#=>['min7','min6']
Scale['Major'][4].chords.symbols
#=>['maj7#11']
ruby示例问题:
FindallchordsassociatedwiththeMajor(Ionian)scaleandprint
eachonanewlinewiththechordtones.
Scale['Major'].chords.map{|c|c.name+':
'+c.notes.join(',')}*"n"
#=>Major7:
C,E,G,B
Major6:
C,E,G,A
Dominant6/9:
C,E,G,Bb,D,A
这些示例应该表明,随着ruby的强大和这个API的优雅特性,从系统中提取Jazz数据是一种轻而易举的方法。
定义可用
默认定义仅为"默认值",在运行jazzmodel:
:
basic。
load_definitions时加载,但可以以给这个定义加载不同的定义:
JazzModel:
:
Base.load_definitions(:
my_custom_set)
目前有两个定义可用:
∙键-创建基本12键。
这个定义应该一直被加载,只要你处理西方的协调。
∙默认值-jazz模型的默认数据集,包括许多比例和和弦。
任何其他定义都可能要构建在这之上,而不是从头开始。
创建定义
gem在类之间有区别,比如和弦和实际定义,如"c大调弦"。
定义是简单的打包指令集,用于使用数据(把它放到数据库里)初始化对象。
由于默认jazz模型使用an内存sqlite3数据库,所以在应用程序加载时需要加载定义。
若要创建定义,只需执行以下操作:
JazzModel:
:
Definition.define:
my_definition=>[:
keys]do
end
在块中,你需要创建构成定义所必需的任何数据。
有关定义的示例,请参见项目中的lib/jazz_model/definitions。
定义类似rake任务的参数-使用哈希值定义你定义的依赖项。
在上面的例子中定义"my_definition"首先要确保"按键"定义已经定义。
预期未来的特性
∙和弦级数分析
∙MIDI集成
∙用户评论&贡献(如和弦比例建议)
∙旋律成分&舔
∙和弦关联的Voicings
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 定义 示例