Package: pypcs
pyPCS —— A professional music analyzer (unfinished)pyPCS —— 旨在建立一个专业的音乐分析工具（未完成）目前的状态：基本功能尚未完全开发完（下面介绍的功能有的并未开发完毕），但是已经完成的模块已经上传，
可以直接用pip指令安装该库，如果想要贡献代码可以阅读
CONTRIBUTING.md 以了解更多。Choosing Language简体中文English简体中文PCS 指的是音级集合（Pitch-class set)，是一个使用非常广泛的概念 ，因此借PCS之名。目录背景安装使用一.背景pyPCS旨在创建 一个用于乐理研究人士的趁手的分析工具 和 一个小型音乐片段生成器（基于随机生成后条件筛选）二.安装pyPCS最新的版本（v0.0.4）已经上传到了PyPI，可以直接使用pip安装：python3-mpipinstallpyPCS目前安装完之后还暂时还不能直接使用，需要把下面这两个文件下载到环境目录（如下）："(environment)/Lib/site-packages/pyPCS/"ChordAttr.jsoncircle_of_fifth.png三.使用用pip安装完之后，可以用import直接导入模块importpyPCS目录一维数据结构:1.Chord和弦2.PitchSeries音高序列3.Rhythm时值序列4.PitchClassSeries音级序列二维数据结构：5.PitchSegment截段2.PitchSeriesPitch series 意为音高序列，即一组有序的音高属性series：音高列表

length：音符数量。

average：平均音高。

pitch_tend：音高趋向性。（*自定义的算法）方法play():利用pygame播放该对象。强烈建议在全局用pygame.midi.Output()方法设置输出端口并传入。运算Transposition()：变换音集的音高

Retrograde()：翻转

Inversion()：倒影

RetrogradeInversion()：翻转倒影

Rotation()：轮转魔术方法作为迭代器使用：返回音高。

加减运算符：返回音符被运算后的新对象，不会改变原来的类对象的值。

更改索引值：改变音集的某一个音高，返回一个新的类对象，不会改变原来的类对象。

len()：获取音集的音符数量。

reversed()：将音集倒序，返回一个新的类对象，不会改变原来的类对象。3.Rhythm属性rhythm：时值列表

length：音符数量

average：平均音高

total_duration：总时值（拍）

rhythm_intensity_tend：密度趋向性。（*自定义的算法）方法play():利用pygame播放该对象。强烈建议在全局用pygame.midi.Output()方法设置输出端口并传入。运算Retrograde()：翻转

Rotation()：轮转魔术方法作为迭代器使用：返回时值。

更改索引值：改变音集的某一个音高，返回一个新的类对象，不会改变原来的类对象。

len()：获取音集的音符数量。

reversed()：翻转，返回一个新的类对象，不会改变原来的类对象。4.PitchClassSeries属性series：音级序列

length：音符数量。方法play():利用pygame播放该对象。强烈建议在全局用pygame.midi.Output()方法设置输出端口并传入。运算Transposition()：加减后mod12，变换音级。

Retrograde()：翻转音高＆节奏

Inversion()：倒影

RetrogradeInversion()：翻转倒影

Rotation()：轮转魔术方法作为迭代器使用：返回音级。

加减运算符：返回音符被运算后的新对象，不会改变原来的类对象的值。

更改索引值：改变音集的某一个音高，返回一个新的类对象，不会改变原来的类对象。

len()：获取音集的音符数量。

reversed()：将音级倒序，返回一个新的类对象，不会改变原来的类对象。5.PitchSegmentPitch segment 意为音高截段，相关名词可以参考文献《Introduction to Post-Tonal Theory》（《后调性理论导论》）PitchSegment 是一个用于处理有序的音集的 Python 类，使用前需要先建立PitchSeries和Rhythm对象再传入。属性segment：包括音高和时值两个列表。

pitch_set：音高列表。

duration_set：音符的时值列表（拍）。

length：音符数量。

total_duration：总时值（拍）。

w_average：加权平均音高。

pitch_tend：音高趋向性。（*自定义的算法）

rhythm_intensity_tend：密度趋向性。（*自定义的算法）方法get_pc_segment()：将音集转化为音级集。

get_rhythm_intensity_tend()：获取密度趋向性。

change_rhyme()：产生新节奏的截段。

getSubsegment()：获取子截段

getCounterpoint()：使用对位法生成一个对位声部。

play():利用pygame播放该对象。强烈建议在全局用pygame.midi.Output()方法设置输出端口并传入。运算Transposition()：变换音集的音高。

Retrograde_with_rhythm()：翻转音高＆节奏

Retrograde_without_rhythm()：翻转音高，不翻转节奏

Inversion()：倒影

RetrogradeInversion()：翻转倒影，包括节奏

Rotation_with_rhythm()：轮转，包括节奏

Rotation_without_rhythm()：轮转，不包括节奏魔术方法作为迭代器使用：返回一个包含音高和时值的元组。

加减运算符：返回音符被运算后的新对象，不会改变原来的类对象的值。

更改索引值：改变音集的某一个音高，返回一个新的类对象，不会改变原来的类对象。

len()：获取音集的音符数量。

reversed()：将音集倒序（包括节奏），返回一个新的类对象，不会改变原来的类对象。EnglishPCS refers to Pitch-class Set, which is a universal concept in post tonal theory.Table of ContentsBackgroundInstallUsageBackgroundNowadays, AI is developing rapidly. It's easy to preview its broad prospect in the field of music analyzing and composing.This project aims to create a powerful tool for complex music analysing and tiny pieces' generating (based on random generating then screening)InstallThe latest release (v0.0.1 but still unfinished) is available on PyPI, and you can install it by sayingpython3-mpipinstallpyPCSUsageAfter installation, you can simply use the module byimportpyPCSTable of Contents1d array:1.Chord2.PitchSeries3.Rhythmduration(beat) set4.PitchClassSeries2d array：5.PitchSegment2.PitchSeriesPitch series 意为音高序列，即一组有序的音高属性series：音高列表

length：音符数量。

average：平均音高。

pitch_tend：音高趋向性。（*自定义的算法）方法play():利用pygame播放该对象。强烈建议在全局用pygame.midi.Output()方法设置输出端口并传入。运算Transposition()：变换音集的音高

Retrograde()：翻转

Inversion()：倒影

RetrogradeInversion()：翻转倒影

Rotation()：轮转魔术方法作为迭代器使用：返回音高。

加减运算符：返回音符被运算后的新对象，不会改变原来的类对象的值。

更改索引值：改变音集的某一个音高，返回一个新的类对象，不会改变原来的类对象。

len()：获取音集的音符数量。

reversed()：将音集倒序，返回一个新的类对象，不会改变原来的类对象。3.Rhythm属性rhythm：时值列表

length：音符数量

average：平均音高

total_duration：总时值（拍）

rhythm_intensity_tend：密度趋向性。（*自定义的算法）方法play():利用pygame播放该对象。强烈建议在全局用pygame.midi.Output()方法设置输出端口并传入。运算Retrograde()：翻转

Rotation()：轮转魔术方法作为迭代器使用：返回时值。

更改索引值：改变音集的某一个音高，返回一个新的类对象，不会改变原来的类对象。

len()：获取音集的音符数量。

reversed()：翻转，返回一个新的类对象，不会改变原来的类对象。4.PitchClassSeries属性series：音级序列

length：音符数量。方法play():利用pygame播放该对象。强烈建议在全局用pygame.midi.Output()方法设置输出端口并传入。运算Transposition()：加减后mod12，变换音级。

Retrograde()：翻转音高＆节奏

Inversion()：倒影

RetrogradeInversion()：翻转倒影

Rotation()：轮转魔术方法作为迭代器使用：返回音级。

加减运算符：返回音符被运算后的新对象，不会改变原来的类对象的值。

更改索引值：改变音集的某一个音高，返回一个新的类对象，不会改变原来的类对象。

len()：获取音集的音符数量。

reversed()：将音级倒序，返回一个新的类对象，不会改变原来的类对象。5.PitchSegmentPitch segment 意为音高截段，相关名词可以参考文献《Introduction to Post-Tonal Theory》（《后调性理论导论》）PitchSegment 是一个用于处理有序的音集的 Python 类，使用前需要先建立PitchSeries和Rhythm对象再传入。属性segment：包括音高和时值两个列表。

pitch_set：音高列表。

duration_set：音符的时值列表（拍）。

length：音符数量。

total_duration：总时值（拍）。

w_average：加权平均音高。

pitch_tend：音高趋向性。（*自定义的算法）

rhythm_intensity_tend：密度趋向性。（*自定义的算法）方法get_pc_segment()：将音集转化为音级集。

get_rhythm_intensity_tend()：获取密度趋向性。

change_rhyme()：产生新节奏的截段。

getSubsegment()：获取子截段

getCounterpoint()：使用对位法生成一个对位声部。

play():利用pygame播放该对象。强烈建议在全局用pygame.midi.Output()方法设置输出端口并传入。运算Transposition()：变换音集的音高。

Retrograde_with_rhythm()：翻转音高＆节奏

Retrograde_without_rhythm()：翻转音高，不翻转节奏

Inversion()：倒影

RetrogradeInversion()：翻转倒影，包括节奏

Rotation_with_rhythm()：轮转，包括节奏

Rotation_without_rhythm()：轮转，不包括节奏魔术方法作为迭代器使用：返回一个包含音高和时值的元组。

加减运算符：返回音符被运算后的新对象，不会改变原来的类对象的值。

更改索引值：改变音集的某一个音高，返回一个新的类对象，不会改变原来的类对象。

len()：获取音集的音符数量。

reversed()：将音集倒序（包括节奏），返回一个新的类对象，不会改变原来的类对象。