translator : Mr_52Hz
Date : 2019/4/25

阅读原文

MusicXML 3.0 Tutorial MusicXML 3.0 教程

MusicXML is a digital sheet music interchange and distribution format.
MusicXML 是数字活页乐谱的交换和分发格式。
goal is create a universal format for common Western music notation, similar to the role that the MP3 format serves for recorded music.
目的是为西方音乐符号创造一种通用格式,类似MP3格式在录制音乐中的角色。
The musical information is designed to be usable by notation programs, sequencers and other preformance programs, music education programs, and music databases.
设计这种音乐信息主要用于标记程序、音序器、其他表演项目、音乐教育项目和音乐数据库。
The goal of this tutorial is to introduce MusicXML to software developers who are interesting in reading or writing MusicXML files.
那么这个教程的意义是为对阅读和制作MusicXML文档感兴趣的开发者提供介绍。
MusicXML has many features that are required to support the demands of professional-level music software.
MusicXML具备支持专业级音乐软件许多特性。
But you do not need to use or understand all these elements to get started.
但是刚开始你并不需要使用或搞明白所有的MusicXML元素。

MusicXML FAQ MusicXml常见问答

Why did we need a new format?
我们为什么要搞一种新的格式?
What’s behind some of the ways that MusicXML looks and feels?
MusicXML的视听背后的方法是什么?
What software tools can I use?
我可以使用什么工具软件?
Is MusicXML free?
MusicXML 免费吗?

“Hello World” in MusicXML MusicXML中的“你好,世界”

Here you will find your simplest MusicXML file - one part, one measure, one note.
在这个模块你将看到一个最简单的MusicXML文件 - 一个章节,一个小节,一个音符。

The Structure of MusicXML Files MusicXML文件的结构

There are two ways of structuring MusicXML files - measures within parts, and parts within measures.
MusicXML文档结构有两种 - 章节包含小节,小节包含章节。
This section describes how to do it either way, and how to switch back and forth between them.
这部分描述每种方式的实现和两种方式之间怎样切换。
It also discusses the descriptive data that goes at the start of a MusicXML file.
这部分也讨论MusicXML文件怎样写开头部分描述性数据。

The MIDI-Compatible Part of MusicXML MusicXML的MIDI兼容

What parts of MusicXML do I need to represent a MIDI sound file?
我需要用MusicXML哪部分来表示一个音频文件MIDI呢?
The MIDI equivalents in MusicXML are described here.
MusicXML中的MIDI等价部分在这部分介绍。

Notation Basics 符号基础

Here we discuss the basic notation features that go beyond MIDI’s capabilities, including stems, beams, accidentals, articulations, and directions.
这部分我们讨论符号基础特征(MIDI范围之外)包括:符杆、符尾、偶然特性、articulations和说明。

Chord Symbols and Diagrams 和旋符号和谱面

MusicXML provides a rich representation for harmonies, both for harmonic analysis and for chord symbols.
MusicXML提供了很多和旋的表示方法,包括和旋分析和和悬符号。
Here wo discuss how to create the chord symbols and diagrams found in much contemporary sheet music, including lead sheets, piano/vocal/guitar arrangements, and big-band charts.
这部分我们讨论怎样创建和旋符号,怎样创建当代的电子活页谱面,包括铅板、钢琴/人声/吉他排列和大乐队谱面。

Tablature 弦乐器

Here wo describute the basics of tablature notation: specifying strings, frets, string tunings, and guitar-specific notations like hammer-ons and pull-offs.
这部分介绍弦乐器基础标识:指定弦、弦乐、弦乐调弦和特定于吉他的符号,如锤子和拉弦。

Percussion 打击乐器

Here we discuss the steps needed to represent unpitched percussion parts such as drum kits.
这部分我们探讨表示没有音高的打击乐器(如鼓)的步骤。
Some of these techniques apply to other types of music, such as the use of multiple instruments, alternate noteheads, and different measure styles.
有些技巧也适用于其他类型的音乐,例如使用多个乐器,备用浮头,和不同小节样式。

Compressed .XML Files 压缩的.XML文件

MusicXML 2.0 added a compressed zip-based format that greatly reduces MusicXML file sizes.
MusicXML 2.0添加了一种基于zip的压缩格式,这大大减小了MusicXML文件大小。
Here we discuss the structure of the compressed .xml format.
这部分我们探讨.xml格式的压缩结构。


MusicXML FAQ MusicXML 常见问答

Why did we need a new format? 为什么要搞一种新格式?

There are many fine computer music programs in the world.
世界上有很多好用的计算音乐的项目。
Unfortunately, sharing music between them used to be difficult.
不幸的是,在这些项目之间共享音乐是很困难的。
This was a real problem since no one program can do everything equally well.
这才是真正的问题因为没有一个项目能够很好的处理好每一个事情。
Having to reenter musical data for each program you want to use is a big inconvenience to everyone who uses more than one music software program.
对于使用多个音乐软件的每个人来说,必须为每个要使用的程序重新输入音乐数据是很不便的。
Before MusicXML, the only music notation interchange format commonly supported was MIDI.
在MusicXML诞生之前,通常MIDI是唯一通用的音乐符号交换格式。
MIDI is a wonderful format for performance applications like sequencers, but it is not so wonderful for other applications like music notation.
MIDI对(像音序器一样的)演奏类的应用来说是很完美的格式,但是对(音乐符号标记类)其他类的应用来说并不完美。
MIDI does not know the different between F-sharp and a G-flat;
MIDI并不能区分升半音的F和降半音的G。
it does not represent stem direction, beams, repeats, slurs, measures, and many other aspects of notation.
并且MIDI不能表示出符杆方向,符尾,重复小节,连音线,多小节和其他方面的标记。
People had recognized for years that a new interchange format was needed, but no prior attempt at creating a new standard format had succeeded.
人们许多年以前就意识到了,需要一中新的交换格式,但是先前创建新标准格式的尝试都没有成功。
NIFF had probably been the most successful attempt to date, but it’s use was very limited and the format was not being maintained.
NIFF可能是那时最成功的尝试了,但是它的使用很受限而且这个格式也没有进行维护。
SMDL was the most ambitions attempt, but we know of no software actually using it.
SMDL是最有雄心的尝试,但是并没有软件实际上使用它。
At Recordare, we are excited by the possibilities of Internet music publishing just as many other people and companies are.
但要记住,我们和其他人以及公司一样都对网络音乐的发行的可能性感到激动。
But if you go to existing sites like Musicnotes and Sheet Music Direct, you find that all you can do with their music is 1)print it or 2)play it in their proprietary player.
但是你去访问已经存在的一些站点(像Musicnotes、Sheet Music Direct),你会发现在他们的播放软件中你都能够做两件事1打印 2播放。
Sites that only use scanned PDF files offer even less to consumers.
这些站点提供给消费者的仅仅是扫描的PDF文件甚至没有。
If that is all you can do with online music, why get it online instead of on pepar?
如果在线音乐只有这些的话,那我们为什么非要在线获取而不是从纸上获取呢?
That seems to be the reaction of most people, based on all published industry reports of online sheet music sales up through 2011.
这个疑问可能是大多数人的反应,基于2011年所有已发布的在线乐谱销售行业报告。
We believe that an Internet-friendly standard format is necessary for the growth of the Internet music publishing market.
我们相信一个通用的网络标准格式对急速增长的网络音乐出版市场来说是很有必要的。
Today it is like using the Internet before HTML was invented, or using synthesizers before MIDI was invented.
今天这件事很像在HTML被创造出来之前使用Internet,或者在MIDI被创造出来之前使用合成器。

Why not use an existing format like NIFF or SMDL? 为什么不使用已经存在的格式(像NIFF,SMDL)?

NIFF and SMDL were noble efforts to solve the same type of interchange problem that MusicXML addresses.
NIFF和SMDL格式付出了很大的努力来解决MusicXML同样出现的交换问题。
So why don’t we use them rather than inventing something new?
所以为什么我们不使用它而是开发新的格式呢?
NIFF represents music using a graphical format.
NIFF使用图形格式表示音乐。
There is no concept of a “C” in NIFF: instead, you determine pitch by its placement on a staff.
在NIFF格式中没有中央“C”的概念:相反,你使用音符在五线谱上的位置定义音高。
This type of graphical music representation has a long and distinguished history.
这种图形化的音乐表现形式有着悠久的历史。
it works well for the scanning programs that were focus of NIFF’s work.
NIFF针对一些扫描项目起到很好的作用。
But it works poorly for many other types of applications, such as sequencing and musical databases.
但是对一些其他类型的应用作用不是很大,比如音符序列和音乐数据库。
For both of these applications, MIDI works much better than NIFF;
这两类应用MIDI发挥的作用要比NIFF好。
For notation, though, NIFF is more complete than MIDI.
尽管,对标记符号而言NIFF比MIDI更完善。
MusicXML is designed to meet the interchange needs for all these types of applications.
MusicXML是被设计出来满足所有这些应用的交换需求的。
A graphical format like NIFF really does not work well for general interchange, which is one of the main reasons NIFF has not been adopted by more programs.
像NIFF这种图形化的格式事实上不适合用来做通用的交换,这也是NIFF没有被更多项目采用的原因之一。
Another major impediment is that NIFF is a binary format, rather than a text format like XML.
另一个主要障碍是NIFF是二进制格式,而不是像XML这样的文本格式。
It is much easier to write and debug programs that read and write to a text format vs. a binary format.
读写成一个文本(而不是二进制)对项目写和调试更加简单。
SMDL suffered form the problem of trying to be a general-purpose solution to the problem of representing all possible musics of the past, present, and future.
SMDL一直有一个问题,试图成为一个通用的解决方案,解决所有过去、现在和未来可能的音乐问题。
In addition, the project was not grounded in practical implementation experience.
另外,该项目没有实际的实施经验。
The result was something so complicated that practically nobody can understand it.
这就导致项目非常复杂,没有人能够理解它。
The overwhelming complexity greatly inhibited SMDL’s adoption-it certainly inhibited us!-and we know of no commercial software that support it.
过于复杂很大程度的影响了SMLD的被使用,当然也影响了我们采用它,并且没有一款商业软件能够支持它。

Where did the design of MusicXML come from? MusicXML的设计从何而起呢?

MusicXML was based primarily on two academic music formats:
MusicXML基于两种理论格式:

  • The MuseData format, developed by Walter HewLett at Center of Computer Assisted Research in the Humanities (CCARH), located at Stanford University.
  • MuseData格式,由Walter HewLett在斯坦福大学人文科学计算机辅助研究中心(CCARH)开发
  • The Humdrum format, developed by David Huron, based at Ohio State University.
  • Humdrum格式,由俄亥俄州立大学的David Huron开发。

Eleanor Selffidge-Feild from CCARH edited a magnificent book called Beyond MIDI: A Handbook of Musical Codes.
来自CCARH的伟大的Selfridge-Feild出版了一本伟大的书:超越MIDI:音乐编码手册。
Studying this volume made it clear that, as we had been advised, MuseData and Humdrum were the most comprehensive starting points for the type of language we wanted to build.
详细研究了本书,我们清楚的认识到,正如被建议的那样,MuseData和Humdrum是我们想要创建的语言类型的最好的起点。
The first beta version of MusicXML was basically an XML updating of MuseData, with the addition of some key conepts from Humdrum.
MusicXML的第一个beta版本基本上是对Musedata的XML更新,添加了一些来自Hummerum的关键概念。
Since both formats have been used primarily for work in classical and folk music, MusicXML was extended beyond those boundaires to better support contemporary popular music.
由于这两种格式主要作用在古典和民间音乐中,所以MusicXML做了拓展,以便更好的适应流行音乐。
In recent releases, MusicXML’s capabilities have been greatly expanded so it can serve as a distribution format for digital sheet music as well as an interchange format.
在最近发布的版本中,MusicXML获得了很大的扩展,所以可以作为电子音乐的分发格式以及交换格式。
Many features have been added in order to make MusicXML near-lossless when it comes to capturing how music is formatted on the printed page.
MusicXML添加了很多特性,来保证谱面渲染时接近无误。

Why do you use XML? 为什么使用XML?

XML was designed to solve exactly the type of problem we face today in music software.
XML被设计成完全能够解决我们目前在音乐软件中面临的问题。
Say you have 100 music applications, each with its own format.
假设有100个应用程序,每个都有自己的格式。
For each application to communicate with the other, 10000 separate programs would need to be written without a common interface language!
对每个APP来说,要跟其他app交互,如果没有通用的语言接口,需要编写10000独立的项目。
With a common interface language, each application writes only one program, so only 100 separate pargrams would be required.
如果有了一个通用的语言接口,每个app只需要写一份项目,所以仅需要写100个工程(就能实现app直接通信)。
Consumers gain enormous value at relatively small cost to the software developer.
这对软件开发者来说以相对较小的代价换取了巨大的价值。
XML builds on decades of experience with its predecessor SGML, as well as the experience with the explosive growth of HTML and the Web.
XML是建立在经过数十年发展的前身SGML的基础上,同时又是HTML和Web爆炸式发展的基础上。
XML hits the magic “sweet spot” between simplicity and power, just as HTML and MIDI have done in the past.
XML在简洁性和强大性之间达到了神奇的“最佳点”,正如HTML和MIDI过去所做的那样。
It is designed to represent complex, structured data, and musical scores fit that description.
MusicXML设计出来去表示复杂的,结构化的数据和符合乐谱的描述。
Using XML frees us from worring about the basic syntax of the language, instead letting us worry about the semantics-what to represent, versus the syntax of how to represent it.
使用XML我们不需要担心语言复杂的语法,相反我们只需要关注表示的语义,而不是语法结构怎么表示。
Similarly, there is no need to write a low-level parser to read the language: XML parser exist everywhere.
同样,不需要编写一个低级解析器来读取语言:XML解析器无处不在。
Basing a music interchange language on XML lets music software, a relatively small community, leverage the investment in tools made by musch larger markets such as electronic commerce.
基于XML的音乐交换语言,使得那些相对较小的社区音乐软件能够充分利用对大型市场(如电子商务)工具的投资。

Is MusicXML free? MusicXML免费吗?

The MusicXML DTDs and XSDs are available under a royalty-free license from Recordare.
MusicXML DTD和XSD可从Recordre获得免版税许可证。
This license is modeled on those from the World Wide Web Consortium(W3C).
此许可证基于万维网联盟(W3C)的许可证。
If you follow the trems of the license, you do not need to pay anyone to use MusicXML in your products or research.
如果你遵循W3C许可,不需要想任何人付费就可以在你的产品或研究中使用。
Recordare has no patents issued or pending for the MusicXML DTDs and XSDs.
对于MusicXML DTD和XSD,Recordre没有已颁发或正在申请的专利。

Is your software open source? 你的软件开源吗?

No.
不。
We believe that making the MusicXml definition freely available is essential for its spread into the music industry.
我们相信把MusicXML定义成免费有助于将它在音乐产业传播开来。
We do not see a similar advantage to making our own software free or open source.
我们并不认同有勇气开源自己的软件和代码。
We do not charge people to beta test our software, but we do charge for production versions of our software.
我们对测试版本软件不收费,但是对正式版本的软件收费。
We encourage people to build more applications using MusicXML.
我们鼓励人们使用MusicXML来搭建更多的app。
There are many potential applications, and no one conpany or group can do everything.
有太多潜在的应用,并且没有一个公司和团队能够做好每件事。
If you want to make your software open source, that is fine with us.
如果你能开源你的软件和源码,我们表示非常感谢。

Who is using MusicXML? 谁在使用MusicXML?

Many conpanies, music software developers and scholars are using MusicXML in their products and research, including:
许多公司,音乐软件的开发者和学者在他们的产品和研究中使用,包括:
以下列表部分翻译跳过,因为主要是公司或软件团体机构等专有名词

  • MakeMusic, including Finale, Allego, PrintMusic, Songwriter, Finale NotePad, and Finale Reader.
  • Sibelius, including Sibelius Student and Sibelius First.
  • Steinberg, including Cubase, Cubase Studio, Nuendo.
  • Recordare, including the Dolet for Sibelius and Dolet for Finale plug-ins.
  • Myriad, including the free Music Plug-in for web browsers, the Mac QuickLook plug-in, PDFtoMusic Pro, Harmony Assistant, Melody Assistant and Melody Player.
  • All the leading music scanning programs, including SharpEye Music Reader, capellascan, SmartScore, PhotoScore, ScoreMaker FX4 and Audiveris.
  • Many tablature editors, including Progression, Guitar Pro, TabEdit, TuxGuitar.
  • IOS notation programs for iPhone and iPad, such as Symphony Pro, Maestro, pocketscore.
  • Sheet music sales systems such as the Legato Sheet Music Viewer.
  • Electronic music stands such as MuseBook Score and OrganMuse.
  • Musicology applications and toolkits such as MelodicMatch and music21.

See our MusicXML software page at www.recordare.com/musicxml/community/software for a more complete list, including links to each application.

What software tools are available? 有什么可用的工具软件么?

One of the great things about basing our work on XML is that there are tools available for practically every computer platform.
将我们的工作建立在XML之上的一个好处是,几乎每个计算机平台都有可用的工具。
At Recordare, we used Microsoft tools for our first generation of Dolet sofrware.
在我们这里,我们使用Microsoft工具来处理第一代Dolet软件。
The original Dolet for Finale plug-in was written in a mix of Visual Basic 6.0 and Visual C++ 6.0, using Miscrosoft’s MSXML parser.
Dolet的源代码就是混合使用Visual Basic6.0和Visual C++ 6.0写的,使用微软MSXML解析。
The Miscrosoft parser is designed to be easy to use within Visual Basic and succeeds admirably.
Miscrosoft解析器设计为易于在Visual Basic中使用,并取得了令人钦佩的成功。
We had great success with it.
我们使用它也获得了成功。
We then rewrote the Dolet for Finale plug-in in Java and C++ so that our software could run on Mac OS X as well as Windows.
我们之后又是哦用Java和C++为Finale重写了Dolet,这样我们的软件就可以运行在Mac OS和Windows平台上。
Many other project are using Java for multiple platform, including Linux.
许多其他项目也正在使用Java适配多平台,包括Linux。
We are using the Xerces parser from the Apache group, as are most of the other Java based MusicXML projects that we know.
我们使用的是Apache组的Xerces解析器,正如我们所知道的大多数基于Java的MusicXML项目一样。
It also works very well for us.
而且对我们也起到了很好的作用。
We have also heard good reports about the Xerces C++ parser.
我们也总是收到良好的关于Xerces C++解析器的反馈。
Other projects use the built-in XML support provided by Flash, Flex and Python.
其他项目使用由Flash,Flex,Python内建的支持库。
If all you want to do is write MusicXML files, not read them, you really don’t need a parser, though you may find it useful.
如果所有你想做的是写MusicXML文件,而不是加载MusicXML文件,那你可能不需要一个解析器,尽管解析器是有用的。
A scanner like SharpEye Music Reader, for instance, does not have any great need to read MusicXML files.
比如,像SharpEye音乐阅读器这样带的扫描器,对于阅读MusicXML文件就没有必要了。
Its MusicXML support is written in C, like the rest of the program, without using any spcial XML tools.
MusicXML支持使用C写的,像程序的其他部分一样,没有使用任何其他特殊的XML工具。
The pae2xml translator is written in Perl.
pae2xml转换器使用Perl写的。
The Dolet 6 for Sibelius plug-in is written in ManuScript.
Sibelius的插件Dolet6是用ManuScript写的。
You can also use XSLT to read and transform MusicXML files.
你也可以使用XSLT来阅读和转换MusicXML文件。
There are many XML sites that can guide you to XML tools beyond what we list here.
当然除了我们在这列举的这些之外还有很多XML站点可以指引到其他XML工具。
If you are using an XML parser, in most cases you will probably be using the XML DOM(Document Object Model) to handle MusicXML files.
如果你正在使用XML解析器,大多情况下你很可能正在使用的是XML DOM来处理MusicXML文件。
Good DOM support is likely to be more important than SAX support for MusicXML programs.
对MusicXML程序来说,良好的DOM支持可能比SAX支持更重要。

Why did you release an XSD for MusicXML 2.0? 对MusicXML2.0来说问什么要发布XSD?

when we started developing MusicXML, a DTD(Document Type Difinition) was the only official W3C recommendation for defining an XML document.
当我们开始开发MusicXML的时候,DTD是创建XML文档唯一符合W3C认证标准。
Since that time, XSD(XML Schema Difinition) has become an official W3C recommendation, and alternative standards like RELAX NG have also become available.
那段时间之后,XSD也成为了W3C官方认证标准,并且像RELAX NG也成为了可用的备选标准。
When XSDs were first released, neither the supporting XSD software nor the state of MusicXML application usage was sufficiently advanced to take advantage of this technology.
当第一次发布XSDs时,支持XSD的软件或者MusicXML应用当时的状态都不能充分发挥这项技术的优势。
XSDs are more complex than DTDs, so it was clear there would be a cost to creating a MusicXML XSD schema.
XSDs比起DTDs更加复杂,所以显而易见,开发新的XSD模式要花费一些时间。
At the time it was also not clear how support would evolve for XSD, RELAX NG and other schema alternatives.
当时,对发展XSD,RELAX NG以及其他备选的模式要怎样支持MusicXML也还清晰。
It thus made sense to stay with DTDs for the releases of MusicXML 1.0 and 1.1.
所以因此MusicXML 1.0和1.1版本的发布还是使用的DTDs。
XSD and MusicXML technology have both matured significantly in the past few years.
XSD和MusicXML在近几年都获得了显著的发展。
Developer tool support for XSDs is now as pervasive as for DTDs.
支持XSDs和开发工具也和DTDs的一样普遍了。
New XML tools such as XQuery and XML data bingding tools can work much better with XSDs than DTDs.
支持XSDS的新XML工具(像XQuery)和XML数据绑定工具比支持DTDs的要更好用了。
While RELAX NG has some advantage over XSDs, its software support is not yet as pervasive as for XSDs.
尽管RELAX NG要比XSDs有很多优势,但是支持他的软件并不想至此XSDs一样普遍。
In addition, MusicXML’s move from an interchange to a distribution format makes it increasingly important to provide the most powerful tools possible for automated quality assurance.
另外,MusicXML从一种交换格式转变成分发格式使得提供一种高质量的自动化工具就显得非常重要。
Validating against an XSD can catch many more errors in XML document creation than validating a DTD.
与验证DTD相比,根据XSD验证在XML文档创建过程中可能会捕获更多错误。
These combined customer needs and opportunities regarding XSDs led us to develop a MusicXML 2.0 XSD that was released in September 2008.
结合了客户对XSD的需求和机会,我们开发了MusicXML 2.0XSD,该产品于2008年9月发布。
The XSD puts much more of MusicXML’s semantics into the language definition itself, rather than just in the documentation.
XSD将MusicXML的更多语义放在语言定义本身中,而不仅仅放在文档中。
Thus there are many documents that validate against the DTD that do not validate against the XSD, but these reflect MusicXML file errors that you do want to catch as early and automatically as possible.
因此,有许多针对DTD进行验证的文档没有针对XSD进行验证,但这影响了尽早自动捕获MusicXML文件错误。
DTDs remain more readable than XSDs for many people.
对许多人来说,DTDs比XSDs依然有更好的可阅读性。
you may find it easiest to read the DTDs, or both in combination.
你会发现阅读DTDs更加简单,两者混用阅读也较为容易。
This will depend on your experience and comfort level with the different technologies.
当然,这也取决于你对这两项技术掌握和经验多少。
The XSDs will generally offer more precise definitions than the DTDs since the format is now much more strongle typed.
XSD通常会提供比DTD更精确的定义,因为现在格式的类型更加稳定。

Why do you use all these elements instead of attributes? 为什么要使用所有这些元素而不是属性?

This is mainly a stylistic decision.
这主要由风格决定的。
Several XML books advise representing semantics in elements rather than attributes where possible.
部分XML书籍建议在可能的情况下用元素而不是属性表示语义。
One advantage of doing this is that elements have structure, but atttibute do not.
这样做的优势是元素有结构,而属性没有。
If you find that what you are representing really has more than one part, you can create a hierarchical structure with an element.
如果当你发现你要表示的要超过一章节,你可以使用元素创建一个层次结构。
With attributes, you are limited to an unordered list.
使用属性,你就被它的无序性限制了。
For information retrieval applications, it can also be easier to search directly for elements rather than for attribute/element combinations.
对信息检索类应用,使用元素直接进行搜索要比属性/元素混用简单的多。
In MusicXML, attributes are generally limited to a few uses:
在MusicXML中,属性通常只在以下几种情况用:

  • To indicate if this is where an element starts or stops, such as for slurs and tuplets.
  • 指示元素的开始和结束,比如连音线和tuplets(连音)。
  • To identify elements, as in measure numbers or beam levels.
  • 区分元素,比如小节号或者几级符尾。
  • To suggest how an element would best be printed.
  • 调整元素要怎样更好的打印展示。
  • To suggest how an element would best be converted into MIDI or other sound formats.
  • 调整元素参数更好的转化为MIDI或者其他声音格式。

In both MusicXML 1.1 and 2.0, the third category grew enormously.
在MusicXML1.1和2.0版本中,以上第三条增长很多。
So you will find that MusicXML 3.0 files make much more use of attributes than do MusicXML 1.0 files.
而且你也会发现MusicXML 3.0文件中比1.0中使用了更多的属性。
The principles determing when to use elements and When to use attributes have remained the same.
决定什么时候使用元素什么时候使用属性的原则依然不变。
In summary, we follow common recommended practice by using elements for data and attributes for metadata.
总之,我们遵循建议,使用元素表示数据,使用属性表示元数据。
We find this works well.
我们发现这起到了很好的作用。
Certainly there are DTDs and XSDs in other domains that use attributes much more extensively, and they work well too.
当然,在其他方面DTDs和XSDs使用属性也很普遍,也起到了很好的作用。
Either way can do the job as long as it is applied consistently.
任何一种方式都可以完成工作,只要被一致的应用。
While there are a lot of MusicXML elements, we have tried to limit them to elements that directly represent musical concepts.
当出现了很多MusicXML元素的时候,我们也尝试限定元素可以直接的标识音乐符号。
We have tried to avoid using elements that would introduce concepts not found in musical scores.
我们也尽可能避免使用一些音乐库中没有介绍的元素。
For example, there is no “timeslice” elements as found in formats like NIFF.
例如,在NIFF格式中就没有“timeslice”元素。
We have generally found that we can represent what applications need without having to introduce artificial elements.
通常我们发现,我们可以在不引入人工创造的元素就能满足应用需要的所有。

Why is MusicXML so verbose? isn’t that inefficient? 为什么MusicXML如此冗长?这不是低效吗?

MusicXML is both an interchange and distribution format.
MusicXML文件既是交换格式又是分发格式。
In both cases, ease of comprehensive is much more important than terseness.
这两种格式情况下,易于整合要比简洁重要。
Musical representation is complex enough without trying to figure out an abbreviated code.
音乐表现是足够复杂的,不需要试图找出一个简洁的代码。
The XML specification advises that “terseness in XML markup is of minimal importance” and we believe this is really true.
XML规范建议“XML标记的简洁性是不重要的”,我们相信这是真的。
Somebody who understands the domain should be able to figure out the basics of an XML file simply by reading it.
理解这个领域的人应该能够通过读取XML文件来了解它的基础知识。
We believe that MusicXML meets this goal, where several other musical XML proposals do not.
我们相信MusicXML实现了这个目标,而其他几个XML提案并没有实现这个目标。
There is of course a place for terse text formats like abc or Plaine and Easie, which allow easy and fast text entry of musical data.
当然,也有输入扼要文本符号的空间像abc、Plaine(平缓的)、Easie(舒缓的),这可以简单并且快速的输入音乐数据。
There are converters for both abc and the Plaine and Easie codes to MusicXML.
这些简单的文本(abc,Plaine,Easie)也有转化为MusicXML的代码。
Uncompressed MusicXML files do take up a lot of space, which can be problematic for digital sheet music distribution.
未压缩的MusicXML确实占用很多空间,这对数字音乐的发行确实是一个问题。
MusicXML 2.0 added a compressed zip format with a .mxl suffix that can make files roughly 20 times smaller than their uncompressed version.
MusicXML 2.0添加了一个带有.mxl后缀的压缩zip格式,它可以使文件比未压缩版本小大约20倍。
As an example, the four-page Joplin rag on our web site takes up 518K as an uncompressed xml file, but only 19K as a compressed .xml file.
例如,四页未压缩的Jplin发布在网站上占用了518K,但是压缩过的xml文件仅有19K。
This is even smaller than the MIDI representation, which is 21K, and the MXL file contains much more data about the music.
这个比MIDI文件都小,MIDI要21K,但是MXL包含了更多的音乐数据。

Why do I see text instead of music when I look at a MusicXML file in my browsers? 为什么在浏览器中查看MusicXML文件时只能看到文本而不是音乐?

In order to see a MusicXML files as music within a browser, you need to have a plug-in installed that can understand and display MusicXML files.
为了能在浏览器中查看MusicXML文件,你需要安装能够解析和显示MusicXML的插件。
Myriad produces a web browser music plug-in that displays, prints and play MusicXML files within a web browser.
Myriad开发了一款浏览器插件能够显示打印和播放MusicXML文件在一个web浏览器中。
Currently, a web page needs to be designed to include this plug-in directly.
目前,网站设计时应该直接包含这种插件。
Noteflight and the Legato Sheet Music Viewer use the Flash plug-in for their applications that read and play MusicXML files within the browser.
Noteflight和Legato Sheet Music使用Flash插件来加载和播放MusicXML文件在浏览器中。
MusicXML 3.0 has two registered media type:
MusicXML 3.0有两种注册的媒体类型:

  • application/vnd.recordare.musicxml for compressed .mxl files.
  • 压缩的.mxl文件类型。
  • application/vnd.recordare.musicxml+xml for uncompressed .xml files.
  • 未压缩的.xml类型。

We hope that in the future, plug-ins will be able to automatically respond to these media types so that files outside of web pages will be displayed and played back automatically.
我们希望将来,插件能够自动的识别这些文件类型,这样就能在网页之外显示和后台自动播放。
It would be possible to build an XSLT stylesheet to convert MusicXML into a web-readable format and a proof of concept for this was done by one MusicXML user.
构建一个XSLT的样式表将MusicXML转化为浏览器能够加载的格式是可行的,这个观点被一个MusicXML的用户证实了。
However, building a professional quality XSLT for music notation would be an extraordinarlly difficult task.
然而,构建这种专业的高质量的XSLT来标识所有音乐符号是一件非常困难的任务。
HTL5 and related work holds the promise for at last providing native support for MusicXML in web browser.
HTL5及其相关工作最终有望在Web浏览器中为MusicXML提供本地支持。
Michael Good, CEO of Recordare, is a member of the W3C Audio Incubator Group that is exploring future audio and music standardization within the W3C.
recordere首席执行官Michael Good是W3C音频孵化器组织的成员,该组织正在探索W3C未来的音频和音乐标准化。
See our MusicXML 3.0 example page at www.recordare.com/musicxml/music/complete-musicxml-30-example to experience these different approaches to displaying and playing MusicXML within a web browser.
到网站查看MusicXML 3.0的例子,在浏览器中来尝试这些不同的显示和播放MusicXML的demo。

How do you pronounce Recordare? 你怎么读Recorare?

Recordare is Latin for “remember”, so the pronounciation is as in Latin or Italian (rch-cor-DAH-ray).
recordere是拉丁语的“remember”,所以发音和拉丁语或意大利语一样(rch-cor-dah-ray)。
Internet publishing will allow musical works to be remembered and performed more widely.
网络出版将允许在音乐方面的工作被铭记并且被广泛的采用。
We believe a standard Internet-friendly format like MusicXML is essential for the success of Internet music publishing.
我们相信,像MusicXML这样的标准的互联网友好格式对于互联网音乐出版的成功至关重要。

“Hello World” in MusicXML MusicXML中的hello world

Brian Kernighan and Dennis Ritchie popularized the practice of writing a program that prints the words “hello world” as the first program to write when learning a new programming language.
BrianKernighan和DennisRitchie使得当学习新的编程语言编写第一个程序时打印显示出“hello world”变得很流行。
It is the minimal program that tests how to build a program and display its results.
这个是最小的一个项目,可以测试出怎样创建一个项目并且显示它的结果。
In MusicXML, a song with the lyrics “hello world” is actually more complicated than we need for a simple MusicXML file.
在MusicXML中,一首含有歌词是”hello world”的曲子实际上要比一个简单的MusicXML文件复杂的多。
Let us keep things even simpler: a one-measure piece of music that contains a whole note on middle C, based in 4/4 time.
让我们把事情简单化:创建一个小节的音乐,包含一个中央C的全音符,节拍是4/4拍。

Here it is in MusicXML:
这是MusicXML文件代码:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE score-partwise PUBLIC"-//Recordare//DTD MusicXML 3.0 Partwise//EC""http://www.musicxml.org/dtds/partwise.dtd">
<score-partwise version="3.0"><part-list><score-part  id="P1"><part-name>Music</part-name></score-part></part-list><part  id="P1"><measure number="1"><attributes><divisions>1</divisions><key><fifths>0</fifths></key><time><beats>4</beats><beat-type>4</beat-type></time><clef><sign>G</sign><line>2</line></clef></attributes><note><pitch><step>C</step><octave>4</octave></pitch><duration>4</duration><type>whole</type></note></measure></part>
</score-partwise>

Let’s look at each part in turn:
让我们挨部分查看文档:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

This is the XML declaration required of all XML documents.
这是所有XML文档所需的XML声明。
We have specified that the characters are written in the Unicode encoding “UTF-8”.
我们声明这些语法是用UTF-8编码的。
This is the version of Unicode that has ASCII as a subset.
这是将ASCII作为子集的Unicode版本。
Setting the value of standalone to “no” means that we are defining the document with an external definition in another file.
将standalone的值设置为“no”意味着我们用另一个文件中的外部定义来定义文档。

<!DOCTYPE score-partwise PUBLIC"-//Recordare//DTD MusicXML 3.0 Partwise//EC""http://www.musicxml.org/dtds/partwise.dtd">

This is where we say that we are using MusicXML, specifically a partwise score where measures are contained within parts.
在这部分我们声明我们正在使用MusicXML,并且声明一个partwise乐谱--确认小节包含在章节中。
We use a PUBLIC declaration including an Internet locaion for the DTD.
我们使用PUBLIC来声明DTD在网络中的位置。
The URL in this declaration is just for reference.
这里的URL仅供参考。
Most applications that read MusicXML files will want to install a local copy of the MusicXML DTDs on the user’s machine.
大多数加载MusicXML文件的应用都想要在用户设备的本地安装一个MusicXML DTDs。
Use the entity resolver in your XML parser to validate against the local copy, rather than reading the DTDs slowly over the network.
使用本地DTDs实体解析器来校验,而不是缓慢加载网络中的DTDs。
If you application wants to validate against the MusicXMl XSD rather than a DTD, you can use a entity resolver in your XML parser to do this.
如果你的应用想使用XSD而不是DTD来校验MusicXML,你可以使用一个实体解析器来完成。
When writing MusicXML fiels, writing the DOCTYPE makes it easier for all applications-DTD or XSD based - to validate MusicXML files.
当编写MusicXML文件时写入“DOCTYPE”,使得基于DTD和XSD的应用在校验时更容易。

<score-partwise version="3.0">

This is the root document type.
这个是文档的根。
The “<score-partwise>” element is made up of parts, where each part is made up of measures.
score-partwise元素由章节构成,每个章节都由小节构成。
There is also a “<score-timewise>” which is made up of measures, where each measure is made up of parts.
也有score-timewise元素由小节组成,每个小节由章节组成。
The version attribute lets programs distinguish what version of MusicXML is being used more easily.
version属性让工程能够区分MusicXML的版本使得更加易用。
Leave it out if you are writing MusicXML 1.0 files.
如果你正在编写MusicXML 1.0 那要删除这个属性。

<part-list><score-part  id="P1"><part-name>Music</part-name></score-part>
</part-list>

Whether you have a partwise or timewise score, a MusicXML file starts off with a header that lists the different musical part in the score.
不管你使用的是partwise格式还是timewise格式的乐谱,MusicXML文件都是以能够区分不同音乐章节的header开头。
The above example is the minimal part-lits possible: it contains one score-part, the required id attribute for the score-part, and the required part-name element.
上边的例子是part-list最小可能:它只包含一个score-part,并且它需要一个id属性,和part-name元素。

    <part  id="P1">

We are now beginning the first(and only, in this case) part within the document.
现在我们就正在文档中开始制作第一(并且,在这个例子中只有第一章)章节。
The id attribute here must refer to an id attribute for a score-part in the header.
这里的id属性必须引用header中score-part中的id属性。

        <measure number="1">

We are starting the first measure in the first part.
我们正在开始写第一章节中的第一小节。

            <attributes>

The attributes element contains key information needed to interpret the notes and musical data that follow in this part.
attributes元素包含了本章节中音符和音乐数据所需要的关键信息。

                <divisions>1</divisions>

Each note in MusicXML has a duration element.
每个MusicXMl中的音符都有一个duration(时值)元素。
The divisions element provided the unit of measure for duration element in terms of divisions per quarter note.
divisions元素给duration元素提供了度量单位,而且divisions本身以四分音符为基本单位。
Since all we have in this file is one whole note, we nerver have to divide a quarter note, so we set the divisions value to 1.
因为在这个文件中我们只有一个全音符,我们不需要分割四分音符,所以我们设置divisions的数值为1。
Musical durations are typically expressed as fractions, such as “quarter” and “eight” notes.
音乐的时长通常使用分数来表示,例如“1/4”和“1/8”音符。
MusicXML durations are fractions, too.
MusicXML中的时值也是使用分数来表示。
Since the denominator rarely needs to change, it is represented separately in the divisions element, so that only the numerator needs to be associated with each individual note.
因为分母很少改变,它在divisions元素中单独表示,所以只有分子需要联合每个独立的音符。
This is similar to the scheme used in MIDI to represent note durations.
这跟MIDI中表示音符时值的方案很相似。

                <key><fifths>0<fifths></key>

The key element is used to represent a key signature.
key元素是用来代替调号的。
Here we are in the key of C major, with no flats or sharps, so the fifths element is 0.
在此我们表示的是C大调,没有降调和升调,所以fifths元素的值为0。
If we were in the key of D major with 2 sharps, fifths would be set to 2.
如果我们表示升2调的D大调,fifths元素的值应该设置为2。
If we were in the key of F major with 1 flat, fifths would be set to -1.
如果我们表示降1调的F大调,fifths的值设置为-1。
The name “fifths” comes from the representation of a key signature of a key signature along the circle of fifths.
"fifths"的名字来源于表示调号使用五个数字的循环使用。
It let us represent standard key signatures with one element, instead of seqarate elements for sharps and flats.
这使得我们使用一个元素就能表示标准的调号,而不用使用特定的元素,像升调和降调。

                <time><beats>4</beats><beat-type>4</beat-type></time>

The time element represents a time signature.
time元素表示拍号。
Its two component elements, beat and beat-type, are the numerator and denominator of the time signature, respectively.
它有两个子元素,拍和拍类型,分别为分子和分母。

                <clef><sign>G</sign><line>2</line></clef>

MusicXML allows for many different clefs, including many no longer used today.
MusicXML允许有很多不同的谱号,包括许多我们今天不再使用的。
Here, the standard treble clef is represented by a G clef on the second line of the staff(e.g., the second line from the bottom of the staff is a G).
在这里标准的高音谱号使用位于五线谱的第二根线上的G标识(同样,五线谱上的倒数第二根线是G)。

            </attributes><note>

We are done with the attributes,and are ready to begin the first note.
我们到此就表示完了attributes元素,并且我们开始标识第一个note元素。

                <pitch><step>C</step><octave>4</octave></pitch>

The pitch element must have a step and an ovtave element.
pitch元素必须含有一个step元素和一个octave元素。
Optionally it can have an alter element, if there is a flat or sharp involved.
也可以包含可选的alter元素,如果音符包含降调或者升调。
These elements represent sound, so the alter element must always be included if used, even if the alteration is in the key signature.
这些元素一起标识音,所以如果音符使用了升降必须包含alter元素,即使升降出现在调号中。
The pitch step is C.
pitch元素的step元素内容是C。
The octave of 4 indicates the starts with middle C.
octave元素内容4表示以中央C作为起点。

                <duration>4</duration>

Our divsions value is 1 division per quarter note, so the duartion of 4 is the length of 4 quarter notes.
我们divisions元素值为1(标识一个四分音符),所以4时值就是4个四份音符的长度。

                <type>whole</type>

The type element tells us that is notated as a whole note.
type元素告诉我们它标识一个全音符。
You could probably derive this from the duration in this case, but it is much easier to work with both notation and performance applications if the notation and performance data is represented seqarately.
你也完全可以从duration元素中得到,但是对于标记和演奏都有的app这更简单,尤其是标记和演奏数据独立标识时。
In any event, the performance and notation data do not always match in practice.
在特殊情况下,在练习中演奏和标记数据并不总是匹配。
For example, if you want to better approximate a swing feel than the equal eighth notes notated in a jazz chart, you might use different duration values while the type remains an eighth note.
例如,如果你想比爵士乐图表中记录的相同的第八个音符更好地近似一个摆动感觉,你可以使用不同的持续时间值,而类型仍然是第八个音符。
Bach’s music contains examples of shorthand notation where the actual note durations do not match the standard interpretation of the notes on the pages, due to his use of a notational shorthand for certaian rhythms.
巴赫的音乐包含了一些速记法的例子,因为他使用了一种记录节奏的速记法,所以实际的音符持续时间与页面上音符的标准解释不符。
The duration element should reflect the intended duration, not a longer or shorter duration specific to a certain performance.
duration元素应该直接影响预期的时值,并不是特定于某个演奏的更长或者更短。
The note element has attack and release attributes that suggest ways to alter a note’s start and stop times from the nominal duration incicated directly or indirectly by the score.
note元素通过编辑和发布一些属性,这些属性建议如何从duration直接或间接引发的名义持续时间更改note的开始和停止时间。

            </note>

We are done with note.
我们表示完了note元素。

        </measure>

We are done with the measure.
我们表示完了measure元素。

    </part>

We are done with the part.
我们表示完了part元素。

</score-partwise>

And we are done with the score.
并且我们表示完了谱子。
One limitation of XML’s document type definitions is that if you want to limit the number of elements within another element, you generally must also restrict how they are ordered as well.
一个XML文档类型定义的限制是,如果你想限制元素在其他元素中的数量,你通常也必须限制他们的顺序。
In the attributes, for instance, we want to no more than one divisions element;
例如,在attributes元素中,我们不希望有多个divisions元素。
for the note’s pitch, we want to one and only one step element and octave element.
比如note的pitch元素,我们想有且只有一个step和octave元素。
In order to do this, the order in which these elements appear must to be constrained as well.
为了实现以上限定,这些元素出现的顺序也必须被限定好。
Thus the order in which elements appear in these examples does matter.
所以,这些例子中元素出现的顺序很重要。
The DTD definitions should make it clear what ordering is required;
DTD定义应该把需要的顺序定义清楚。
we will not spell that out in detail during the tutorial.
我们不会在教程中详细说明。

The Structure of MusicXML Files MusicXML文件结构

Adapting Musical Scores to a Hierarchy 根据层级调整乐谱

Say we have a piece of music for two or more people to play.
假设我们有一段需要两个或者更多的人弹奏的音乐。
It has multiple parts, one per player, and multiple measures.
对每个弹奏者,这首曲子有多个章节,多个小节。
XML represents data in a hierarchy, but musical scores are more like a lattice.
XML使用层级表示数据,但是乐谱更接近与格子框架。
How do we reconcile this?
我们是怎样协调这个?
Should the horizontal organization of musical parts be primary, or should the vertical organization of musical measures?
横向组织乐谱的章节应该是首要的吗?或者应不应该垂直组织小节?

The answer is different for every music application.
答案是每个音乐软件都各不相同。
David Huron, a music cognition specialist and the inventor of Humdrum, advised us to make sure we could represent music both ways, and be able to switch them easily.
音乐认知专家、音乐鼓的发明者大卫·休伦建议我们要确保我们能够以两种方式表现音乐,并且能够轻松地转换它们。

This is why MusicXML has two different top-level DTDs, each with its own root element.
这就是为什么MusicXML有两种不同的顶层DTDs,每个都有它自己的根元素。
If you use the partwise DTD, the root element is <score-partwise>.
如果你使用partwise DTD,根元素就是<score-partwise>
The musical part is primary, and measures are contained within each part.
乐章就是主体,小节包含在乐章中。
If you use the timewise DTD, the root element is <score-timewise>.
如果你使用timewise DTD,那么根元素就是<score-timewise>
The measure is primary, and musical parts are contained within each measure.
小节就是主体,乐章就包含在小节中。
The MusicXML XSD includes both of the top-levle document elements in a single XSD file.
MusicXML XSD在一个XSD文档中就包含这两种顶层的文档元素。

Having two different structures does not work well if there is no automatic way to switch between them.
如果没有自动的方式来切换它们,那么有这两种格式就不怎么起作用了。
MusicXML provides two XSLT stylesheets to convert back and forth between the two document types.
MusicXML提供了两种XSLT样式表来切换这两种文档形式。
The partwise.xsl stylesheet converts from <score-partwise> to <score-timewise>, while the timepart.xsl stylesheet converts from <score-timewise> to <score-partwise>.
partwise.xsl样式表从<score-partwise>转化为<score-timewise>,timepart.xsl样式表从<score-timewise>转化为<score-partwise>。

An application reading MusicXML can choose which format is primary, and check for that document type.
应用在解析MusicXML时可以选择主要格式,并且检查文档类型。
If it is your root element, just proceed.
如果它是你的根元素,继续即可。
If not, check to see if it is the other MusicXML root element.
如果不是,检测查看是否是另外一种MusicXML根元素。
If so, apply the appropriate XSLT stylesheet to create a new MusicXML document in your preferred format, and then proceed.
如果是的话,使用适当的XSLT样式表创建首选格式的MusicXML文档,然后继续即可。
If it is neither of the two top-level document types, you do not have a MusicXML score, and can return an appropriate error message.
如果不是这两种顶级文档格式,那么文档就不是MusicXML乐谱,并且可以返回适当的错误信息。

When your application writes to MusicXML, simply write to whichever format best meets your needs.
当你的应用在编写MusicXML文档时,根据你自己的需要写入任何一种格式都可。
Let the program reading the MusicXML convert it if necessary.
如果需要,让读取MusicXML的程序转换它即可。
If you have a two-dimensional origanization in your program so that either format is truly equally easy to write, consider using the score-partwise format.
如果在你的工程中你使用两种维度的组织形式,哪一种实际上编辑起来更简单,那么考虑使用score-partwise格式。
Most of today’s MusicXMl software uses this format, so if all else is equal, conversion times should be lower overall.
今天大多数的MusicXML软件都是用这种格式,如果所有其他都相同,那么转换次数应该更少比其他重要。

Top-Level Document Elements 顶层的文档元素

The score.mod file defines the basic structure of a MusicXML file.
score.mod文件定义了MusicXML文档的基本结构。
The primary definition of the file is contained in these lines:
主要的文档定义都包含在这几行中:

<![ %partwise; [
<!ELEMENT score-partwise ( %score-header;, part+)>
<!ELEMENT part (measure+)>
<!ELEMENT measure (%music-data;)>
]]>
<![ %timewise; [
<!ELEMENT score-timewise (%score-header;, measure+)>
<!ELEMENT measure (part+)>
<!ELEMENT part (%music-data;)>
]]>

The %partwise and %timewise entities are set in the top-level DTDs partwise.dtd and timewise.dtd.
%partwise和%timewise实体是在partwise.dtd和timewise.dtd顶层DTDs设置的。
The <![ lines indicate a conditional clause like the #ifdef statement in C.
<![ 表示条件语句就像 #ifdef 在C语言中一样。
So if partwise.dtd is used, the <score-partwise> element is defined, while if timewise.dtd is used, the <score-timewise> element is defined.
所以partwise.dtd被使用的话,<score-partwise>元素就定义好了,当然如果timewise.dtd被使用的话,<score-timewies>元素就被定义好了。

You can see that the only difference between the two formats is the way that the part and measure elements are arranged.
你会发现这两种格式的唯一区别就是part和measure元素的排列方式不同
A score-partwise document contains one or more part elements, and each part element contains one or more measure elements.
score-partwise文档包含一个或者更多章节元素,并且每个章节元素包含一个或者多个measure元素。
The score-timewise document reverses this ordering.
score-timewise文档翻转这个顺序。

In either case, the lower-level elements are filled with a music-data entity.
在任何情况下,最低层级的元素放入音乐数据实体。
This contains the actual music in the score, and is defined as:
这包含乐谱中的实际音乐信息,定义如下:

<! ENTITY % music-data"(note | backup | forward | direction | attributes |harmony | figured-bass | print | sound | barline |grouping | link | bookmark )*">

In addition, each MusicXML file contains a %score-header entity, defined as:
另外,每个MusicXML文件都包含一个 %score-header实体,定义如下:

<! ENTITY % score-header"(work?, movement-number?, movement-title?,identification?, defaults?, credit?, part-list)">

We will now look at the score-header entity in more detail.
我们将详细看下score-header实体。
If the example in the preceding “Hello world” section gave you enough information, you may want to skip ahead to the next section that starts describing music-data.
如果前面“Hello World”部分中的示例提供了足够的信息,您可能希望跳到下一个开始描述音乐数据的部分。

The Score Header Entity 乐谱顶部实体

The score header contains some basic metadata about a musical score, such as the title and composer.
乐谱的头部包含一些乐谱的基础元数据,就像标题和作曲家。
It also contains the part-list, which lists all the parts or instruments in a musical score.
它也包含part-list,列举了乐谱中的所有章节和乐器。

As an example, take our MusicXML encoding of “Mut”, the 22nd song from Franz Schubert’s song cycle Winterreise.
以MusicXML编码的“mut”为例,它是弗朗茨·舒伯特的第22首歌曲,是温特瑞丝的歌曲。
Here is a sample score header for that work.
例子如下:

    <work><work-number>D. 911</work-number><work-title>Winterreise</work-title></work><movement-number>22</movement-number><movement-title>Mut</movement-title><identification><creator type="composer">Franz Schubert</creator><creator type="poet">Wilhelm Muller</creator><rights>Copyright 2001 Recordare LLC</rights><encoding><encoding-date>2002-02-16</encoding-date><encoder>Michael Good</encoder><software>Finale 2002 for Windows</software><encoding-description>MusicXML 1.0 example</encoding-description></encoding><source>Based on Breitkopf &amp; Hartel edition of 1895</source></identification><part-list><score-part id="P1"><part-name>Singstimme.</part-name></score-part><score-part id="P2"><part-name>Pianoforte.</part-name></score-part></part-list>

You see that this score-header has all five of the possible top-level elements in the score-header entity: the work, movement-number, identification and part-list.
你会发现这个乐谱的开头实体包含了所有五种顶层元素:work(作品),乐章号,说明,章节列表。
Only the part-list is required, all other elements are optional.
只有part-list是必须要有的,其他的元素都是可选的。

Let’s look at each part in turn:
‘让我们逐行看下每部分。’

    <work><work-number>D. 911</work-number><work-title>Winterreise</work-title></work>

In MusicXML, individual movements are usually represented as separate files.
在MusicXML中,独立的乐章通常使用单独的文件来表示。
The work element is used to identify the larger work of which this movement is a part.
work元素通常用来标识长作品中的哪一章节的。
Schubert’s works are more commonly referred to via D. numbers than opus number, so that is what we use in the work-number element.
舒伯特的作品通常是通过D. 数字而不是作品编号来引用的,所以这就是我们在作品编号元素中所使用的。
the work-title is the name of the larger work.
work-title是整个作品的名字。

If you have all the movements in a work represented, you can use the opus element to link to the MusicXML opus file that in turn contains link to all the movements in the work.
如果你有了作品中的所有乐章,你可以使用作品元素把MusicXML的作品文件关联起来,同样也可以关联作品中所有的乐章。

    <movement-number>22</movement-number>

Winterreise is a cycle of 24 songs.
Winterreise 是24首歌曲循环。
We use the movement-number to identify that “Mut” is the 22nd song in the cycle-it is not restricted to use for movements in a symphony.
我们使用乐章编号来识别“mut”是周期中的第22首歌,它不限于用于交响乐中的乐章。

    <movement-title>Mut</movement-title>

similarly, we are use the movement-title element for the title of the individual song.
同时,我们使用movement-title元素来表示单曲标题。
If you have a single song that is not part of a collection, you will usually put the title of the song in the movement-title element and not use either the work or movement-number elements.
如果一首单曲没有很多部分组成,你通常把标题放到movement-title元素中并且不必使用work或者movement-number元素。

    <identification><creator type="composer">Franz Schubert</creator><creator type="poet">Wilhem Muller</creator>

The identification element is defined in the identity.mod file.
身份认证元素定义在indentify.mod文件中。
It contains basic metadata elements based on the Dublin Core.
它包含了核心的元素数据。
In this song, as many others, there are two creators: in this case, the composer and the poet.
在这首曲目中有两个创造者:作曲家,诗人。
Therefore, we use two creator elements, and distinguish their roles with the type attribute.
所以我们使用了两个元素,并且使用type属性来区分它们。
For an instruments work with just one composer, there is no need to use the type attribute.
如果作品只有作曲家,那么就没有必要使用type属性了。

    <rights>Copyright 2001 Recordare LLC</rights>

The rights element contains the copyright notice.
rights元素包含了版权声明。
You may have multiple rights elements if multiple copyrights are involved, say for the words and the music.
如果包含多个版权的话,你可能有多个rights元素,例如词和曲。
As with the creator element, these can have type attributes to indicate what type of copyright is involved.
跟creator元素一样,这些元素也可以有type属性来说明版权的类型。
In this example, both the words and music to Mut are in the public domain, but we are copyrighting our electronic edition of the work.
在这个例子中,Mut的词曲都是共用的了,但是我们正在版权保护我们的电子音乐。

    <encoding><encoding-date>2002-02-16</encoding-date><encoder>Michael Good</encoder><software>Finale 2002 for Windows</software><encoding-description>MusicXML 1.0 example</encoding-description></encoding>

The encoding element contains information about how the MusicXML file was created.
encoding元素包含了MusicXML文件是怎样被创建出来的信息。
Here we are using all four of the available sub-elements to describe the encoding.
我们使用所有四个可用的子元素来描述encoding。
You can have multiple instance of these elements and they can appear in any order.
你可以多次使用这些元素,并且他们顺序无所谓。

    <source>Based on Breitkopf &amp; Hartel edition of 1985</source>
</identification>

The source element is useful for music that is encoded from a paper published score or manuscript.
source元素对于那些纸质发布的乐谱或者是人工编写的都很有用。
Different editions of music will contain different musical information.
不同版本的音乐包含了不同的音乐信息。
In our case, we used the Dover reprint of the Breitkopf & Hartel edition of Winterreise as our starting point, correcting some errors in that published score.
在我们的例子中,我们使用了多佛再版的Breitkopf&Hartel版本的Winterreise作为我们的出发点,修正了该出版的分数中的一些错误。

The identification element also may contain a miscellaneous element.
identification元素也可以包含其他的元素。
This in turn contains miscellaneous-field elements, each with a name attribute.
反过来每个其他的元素都要有一个属性名。
This can be helpful if your software contains some identification information not present in the MusicXML DTD that you want to preserve when saving and reading from MusicXML.
如果你的软件包含了很多MusicXML的DTD中没有给出的但又想保留的identification信息,这(添加属性)对你从MusicXML中保存和加载信息很有帮助。

    <part-list><score-part id="P1"><part-name>Singstimme.</part-name></score-part><score-part id="P2"><part-name>Pinaoforte.</part-name></score-part></part-list>

The part-list is the one part of the score header that is required in all MusicXML scores.
part-list是所有MusicXML曲谱头部的必须的要有的一部分。
It is made up of a series of score-part elements, each with a required id attribute and part-name element.
它由score-part元素组成,,每个都有一个id属性和part-name元素。
By convention, our software simply numbers the parts as “P1”, “P2”, etc. to create the id attributes.
按照惯例,我们的软件使用简单的数字“P1” ”P2“来创建id属性。
You may use whatever technique you like as long as it produces unique names for each score-part.
你也可以使用任何你想用的记法只要这种记法给每个score-part提供唯一标识就好。

In addition to the part-name, there are many optional elements that can be included in a score-part:
除了part-name之外,socre-part也可以包含很多可选的元素。

  • An identification element, helpful if individual parts come from different sources.
  • identification元素,如果有多个章节来自不同的资源。
  • A part-abbreviation element. Often, you will use the part-name for the name used at the start of the score, and the part-abbreviation for the abbreviated name used in succeeding systems.
  • part-abbreviation元素。通常,我们使用part-name作为乐谱开头的名字,在后续体系里我们也使用part-abbreviation标识名字缩写。
  • A group element, used when different parts can be used for different purposes. In MuseData, for instance, there will often be different pars used for printed score, a printed part, a MIDI soud file, or for data analysis.
  • group元素,当每部分有不同作用时使用。通常在音乐中,经常会有不同的部分来标识显示谱面,显示章节,MIDI音频文件或者数据分析。
  • One or more score-instrument elements, used to describe instrument sounds and virtual instrument settings, as well as to define multiple instruments within a score-part. This element serves as a reference for MIDI instrument changes.
  • score-instrument元素,用来描述乐器声音和虚拟设置,也支持在一个score-part中定义多个乐器。这个元素是给MIDI乐器在变化是提供服务的。
  • One or more midi-device elements for identifying the MIDI devices or ports that are being useding in a multi-port configuration. Multiple devices let you get beyond MIDI’s 16-channel barrier.
  • midi-device元素,用于识别多端口配置中使用的MIDI设备或端口。多个设备让您超越了MIDI的16通道屏障。
  • One or more midi-instrument elements, specifying the initial MIDI setup for each score-instrument within a part.
  • midi-instrument元素,为一个part中的每个计分仪指定初始MIDI设置。

The MIDI-Compatible Part of MusicXML MusicXML中MIDI兼容的部分

MusicXML music data contains two main types of elements.
MusicXML中的音乐数据主要包两种类型的元素。
One set of elements is used primarily to represent how a piece of music should sound.
一部分元素主要用来标识音乐听起来是什么样的。
These are the elements that are used when creating a MIDI file form MusicXML.
这些元素是在从MusicXML导出MIDI文件时使用的。
The other set is used primarily to represent how a piece of music should look.
另外的部分主要用来标识这部分音乐看起来是什么样的。
These elements are used when creating a Finale file from MusicXML.
这些元素是在从MusicXML创建Finale文件时使用的。

We encourage programs writing MusicXML to write as much accurate data as they can.
我们建议写MusicXML的工程项目应该尽可能的写入最准确的数据。
The only elements that are required, though, are the sounding elements that relate directly to writing a MIDI file from MusicXML.
尽管从MusicXML导出MIDI文件只需要音频部分的数据。
This is where we will start in introducing the musical elements of a MusicXML file.
我们从这开始介绍MuscicXML文件的音乐元素。
As an example, we will use the first four bars of “Apres un reve” by Gabriel Faure:
例子中,我们使用Gabriel Faure创作的Apres un reve的前四部分:

Attributes 属性

The attributes element contains information about time signatures, key signatures, transpositions, clefs and other musical data that is usually specified at the beginning of a piece or at the start of a measure.
attributes元素包含信息有节拍,调号,换位,谱号和其他数据,通常定义在作品开始或者小节开始。
We discuss the MIDI-compatible elements here;
这里,我们探讨MIDI-兼容元素。
the rest are discussed in the following sections.
其他部分后面再讨论。

In this example, our Finale translator produces the following MIDI-compatible attributes:
例子中,Finale提供了下面的MIDI兼容属性:

    <attributes><divisions>24</divisions><key><fifths>-3</fifths><mode>minor</mode></key><time><beats>3</beats><beat-type>4</beat-type></times></attributes>

Divisions

Musical durations are commonly referred to as fractions: whole notes, half notes, quarter notes, and the like.
音乐时值通常被标识为分数:全音符,二分音符,四分音符等等。
While each musical note could have a fraction associated with it, MusicXML instead of follows MIDI by specifying the number of divisions per quarter note at the start of a musical part, and then specifying note durations in terms of these divisions.
尽管每个音符都有一个分数来表示,但MusicXML通过在音乐章节开始定义一个四分音符的divisions的值,然后定义其他音符的durations为divisions的倍数来表示MIDI。

MusicXML allows divisions to change in the middle of a part, but most software will probably find it easiest to compute one divisions value per part and put that at the beginning of the first measure.
MusicXML允许在中间部分改变divisions的值,但是大部分软件最简便计算divsions的值是把它放在第一小节的开始。
The divisions value of 24 in this example allows for both triplet eighth notes(duration of 8) and regular sixteenth notes(duration of 6).
例子中divisions的值为24,支持三重八分音符(duration为8)和16分音符(duration为6)。

Key 调号

Standard key signatures are represented very much like MIDI key signatures.
标准调号的表示和MIDI的调号表示很相似。
The fifths element specifies the number of flats or sharps in the key signatures - negative for flats, positive of sharps.
fifths元素定义升降调号的数字-负数为降调,正数为升调。
The fifths name indicates that this value represent the key signature’s position on the circle of fifths.
fifths的名字表明调号是这五个数的循环。
MusicXML uses the mode element to indicate major or minor key signatures.
MusicXML使用mode元素来表示大调和小调。

Time 拍号

Standard time signatures are represented more simply in MusicXML than in MIDI.
标准拍号在MusicXML表示起来比MIDI简单。
The beats element represent the time signature numerator and the beat-type element represent the time signature denominator(vs. a log denominator in MIDI).
beats元素表示拍号的分子,beat-type元素表示拍号的分母。

Transpose

If you are writing a part for a transposing instrument, the transposition must be specified in MusicXML in order for the sound output to be correct.
如果你整编写变调部分,变调必须要在MusicXML中定义,以便输出的音频是正确的。
The transpose element represenets what must be added to the written pitch to get the correct sounding pitch.
transpose元素表示必须写入音中来获取正确的音频。

The chromatic element, representing the number of chromatic steps to add to the written pitch, is the one required element.
chromatic元素表示写入的音阶数字,是一个必要的元素。
The diatonic, octave-change and double elements are elements.
全音阶、八度变化和双元素都是元素。

Say we have a part written for a trumpet in B-falt.
例如我们有一个小号部分是降B调。
A written “C” on this part will sound as a B-flat on a pinao.
写入的C调在这部分听上去是降B调,在钢琴上。
This transposition is one diatonic step down(C to B) and two chromatic half steps down(C to B to B-flat).
调号调节1个音调(C到B)并且降两个半音阶(C到B到降B)。
In MusicXML it would be represented as:
在MusicXML中这样表示:

    <transpose><diatonic>-1</diatonic><chromatic>-2</chromatic></transpose>

The diatonic element is not needed for correct MIDI output, but it helps get transposition notation correct and programs encouraged to use it wherever possible.
diatonic元素对输出正确的MIDI不是必须的,但是它有助于获取正确的调号调节标识,并且我们建议尽可能的使用它。
The octave-change element is used when transpositions exceed an octave in either direction.
octave-change元素使用在当任何一个方向上超过一个八度时。
The double element is used when the part should be doubled an octave lower, as when a single part is used for both cello and string bass.
double元素使用在当这部分出现低两个八度时,当一个单元被用于大提琴和弦乐低音时。

Pitch 音高

Pitch, duration, ties, and lyrics are all represented within the MusicXML note element.
pitch,duration,ties,和lyrics元素都包含在MusicXML的note元素中。
For example, the E-flat that starts bar 3 in the voice part has the following MIDI-compatible elements:
例如,开始于第三栏的降E有如下MIDI兼容元素:

    <note><pitch><step>E</step><alter>-1</alter><octave>5</octave></pitch><duration>24</duration><tie type="start"/><lyric><syllabic>end</syllabic><text>meil</text><extend/></lyric></note>

In MIDI, a pitch is represented by a single number.
在MIDI中,pitch使用一个数字表示。
MusicMXL divides pitch up into three parts: the step element(A,B,C,D,E,F or G),an optional alter element(-1 for flat, 1 for sharp), and an octave element(4 for the octave starting with middle C).
MusicXML中将pitch分为三个部分:step元素(A,B,C,D,E,F和G),可选的alter元素(-1表示降调,1表示升调)和octave元素(4表示中央C)。

The pitch represents the sound, not what is notated, so an alter element must be included even if represent a flat or sharp that is part of the key signature.
pitch表示音高,不一定是它注明的,所以必须包含alter元素来表示升降,作为音高的一部分。
This is why the E-flat contains an alter element, though there is no accidental on the note.
这就是为什么降E包含alter元素,尽管音符中没有accidental。

Alter values of -2 and 2 can be used for double-flat and double-sharp.
alter的值-2和2表示重降和重升。
Decimal values can be used for microtones(e.g. 0.5 for a quarter-tone sharp),but not all programs may convert this into MIDI pitch-bend data.
小数值可以用来表示微音调(如:0.5表示四分之一的升调)但是并不是所有的工程都能够将他装换为MIDI音高数据。
For rests, a rest element is used instead of the pitch element.
对于休止符来书,rest元素来代替pitch元素。
The whole rest in 3/4 that begins the voice part is represented as:
四三拍的全休止表示为:

    <note><rest/><duration>72</duration></note>

Duration 时值

The duration element is an integer that represents a note’s duration in terms of divisions per quarter note.
duration元素是一个整数,divisions的倍数表示一个音符的时值。
Since our example has 24 divisions per quarter note, a quarter note has a duration of 24.
因为我们例子中一个四分音符的divisions值为24,所以一个四分音符的duration值是24。
The eighth-note triplet have a duration of 8, while the eighth notes have a duration of 12.
八分三连音中的一个音符duration是8,一个八分音符duration值为12。

Tied Notes 延音

The sounding part of a tied note is indicated by the tie element.
音频中延音部分使用tie元素来表示。
The tie element has a type of start for the starting of a tie, and a type of stop for the ending note in a tie.
tie元素有一个start类型表示延音的开始,和一个stop类型表示延音的结束音符。
A note element can have two tie elements.
一个note元素可以有两个tie元素。
If a note is tied to the notes both before and after it, place the tie to the previous note, <tie type=“stop”>, before the <tie type=“start”> to the next note.
如果一个音符既是前一个音符的延音又是后一个音符的延音,那么将<tie type="stop">放在<tie type="start">前边。

Chords 和旋

The duration elements in MusicMXL move a musical counter.
MusicXML中的duration元素移动音乐计数器。
To play chords, we need to indicate that a note should start at the same time as the previous note, rather than following the previous note.
演奏和旋,我们需要确保音符跟前一个音符出现在同一时间,而不是在前一个音符后边。
To do this in MusicMXL, add a chord element to the note.
为了在MusicXML中实现它,给note添加一个chord元素。

In our example, the piano part does not have rhythms more complex than eighth notes, so our converter set the divisions value to 2.
在我们例子中,钢琴部分没有比八分音符更复杂的音符了,所以我们的转换器设置divisions的值为2。
With 2 divisions per quarter note, the sound portion of the first chrod in the piano part is represented as:
使用四分音符的divisions值为2,和弦的声音部分如下:

    <note><pitch><step>C</step><octave>4</octave></pitch><duration>1<duration></note><note><chord/><pitch><step>E</step><alter>-1</alter><octave>4</octave></pitch><duration>1</duration></note><note><chord/><pitch><step>G</step><octave>4<octave></pitch></note>

Each note in the chord following the first one includes a chord element before the pitch element.
每个和旋note在pitch元素前的第一个元素都是chord元素。

If you find that you have notes in a chord with different durations, you are probably better representing this as multi-part music rather than a chord.
如果你发现和旋中有不同的时值,那么你可能最好把他替换为音乐的多部分而不是表示为一个和旋。
If you must have notes with different durations in the chord, the longest note must be the first note in the chord.
如果在和旋中不可避免的有不同时值的音符,那么和旋中时值最长的必须是和旋的第一个音符。

Lyrics

While lyrics are not yet used in sound generation, they are included in Standard MIDI files, so we will discuss them here with the other MIDI-compatible features of MusicXML.
虽然lyrics在音频中并不使用,但是他们被包含在了标准MIDI文件中,所以我们也探讨下MusicXML中对lyrics的MIDI兼容特性。

Lyrics in MusicXML use an optional syllabic element to indicate how a syllabic fits into a word, rather than having conventions based on hyphens and spaces as some other formats do.
MusicXML中的lyrics使用可选的syllabic元素来指示音节如何与单词匹配,而不是像某些其他格式那样具有基于连字符和空格的约定。
The values for syllabic can be “single”, “begin”, “end” or “middle”.
syllabic的值可以是:single,begin,end,middle。
We saw earlier that the E-flat starting the third measure had a syllabic value of “end”, since “meil” was the end of a two-syllable word.
我们之前的降E在开始的第三小节由一个syllabic值为end的例子,因为meil是两个音节的结束部分。
The “ma” syllable in “image” has a syllabic value of “middle”, in the second measure, the notes are:
“image”中的“ma”音节的音节值为“middle”,在第二小节,音符为:

    <note><pitch><step>G</step><octave>4</octave></pitch><duration>24</duration><lyric><syllabic>single</syllabic><text>Dans</text></lyric></note><note><pitch><step>C</step><octave>5</octave></pitch><duration>24</duration><lyric><syllabic>single</syllabic><text>un</text></lyric></note><note><pitch><step>D</step><octave>5</octave></pitch><duration>24</duration><lyric><syllabic>begin</syllabic><text>som</text></lyric></note>

The actual text of the lyric is specified in the text element.
真正的词文本是在text元素中的。
A note may have multiple syllables, in which case the multiple syllabic/text element pairs should be separated by an elision element.
一个音符可能有多个音节,在这种情况下多个syllabic/text元素应该使用elision元素区分。
Word extensions may be indicated by using the extend element, as in the “meil” syllable above.
词的扩展也许可以使用extend元素表示,就像上面的”meil”音节。

Multiple verses are indicating using multiple lyric elements.
多个词句使用多个lyric元素表示。
The number and name attributes can be used to distinguish them: <lyric number=“1”>for the first verse,<lyric number=“2”>for the second.
number和name属性能够区分他们:<lyric number="1">表示第一句,<lyric number="2">表示第二句。

MusicXML has end-line and end-paragraph elements to support Standard MIDI File Lyric meta-events specified in RP-017.
MusicXML有end-line和end-paragraph元素来支持标准MIDI文件词的meta-events定义在RP-017中。
These are used for karaoke and similar applications.
这些被用作K啦OK和相似的应用中。
Elements for humming and lauging may also be included, though they do not have MIDI equivalents.
哼唱和大笑元素也可以被包含,尽管MIDI中没有等效的元素。
These lyric elements have not yet been implemented in MusicXML software.
这些元素在MusicXML的软件中还没有实现。

MusicXML文档翻译(持续更新)相关推荐

  1. s-systemtap工具使用图谱(持续更新)

    整体的学习思维导图如下,后续持续更新完善 文章目录 安装 简介 执行流程 执行方式 stap脚本语法 探针语法 API函数 探针举例 变量使用 基本应用 1. 定位函数位置 2. 查看文件能够添加探针 ...

  2. swift 错误集合 ------持续更新中

    从今天开始凡是在用swift中遇到的错误都会在本博客持续更新 便于自己学习和快速开发 2017.7.20 如果你的程序写的有进入后台的方法,例如我的博客中点击home进入后台持续定位的那篇文章,发信进 ...

  3. 快应用开发常见问题以及解决方案【持续更新】

    接触快应用也有一段时间了,踩过了大大小小的坑,让我活到了今天.准备在此立贴持续更新,记录遇到的问题以及解决方案,造福大众. css 方面 1.文字竖排不支持 目前官方还不支持writing-mode, ...

  4. Java 最常见的 10000+ 面试题及答案整理:持续更新

    Java面试题以及答案整理[最新版]Java高级面试题大全(2021版),发现网上很多Java面试题都没有答案,所以花了很长时间搜集,本套Java面试题大全,汇总了大量经典的Java程序员面试题以及答 ...

  5. UDP 构建p2p打洞过程的实现原理(持续更新)

    UDP 构建p2p打洞过程的实现原理(持续更新) 发表于7个月前(2015-01-19 10:55)   阅读(433) | 评论(0) 8人收藏此文章, 我要收藏 赞0 8月22日珠海 OSC 源创 ...

  6. 大四狗找工作,持续更新

    持续更新中.... 转载于:https://www.cnblogs.com/Wiki-ki/p/3979176.html

  7. 中date转为string_股票数据获取篇(持续更新中...)

    这是第一篇量化交易学习文,心里还是有点忐忑,毕竟自己不是金融人士,金融业务能力匮乏,所以从最简单的数据获取入手,各种概念各种策略还在学习中.回测框架选择backtrader,因为网上对此框架的评价甚高 ...

  8. QT 实用代码片段 (持续更新)

    由于项目需要开始转型学习C++,GUI使用QT进行开发,开发过程中踩了不少坑,但是也积累了些宝贵经验,在这儿记录一下,希望能帮到需要的朋友. 1.设置无边框对话框 //设置对话框属性 setWindo ...

  9. linux环境变量管理器,运维 - linux(ubuntu) 环境变量管理 (持续更新)

    运维 - linux(ubuntu) 环境变量管理 (持续更新) 注: 本教程以 Ubuntu16.04 操作, 请细看. 如果看完还不明白, 联系我, 我给你发红包. 一, 查看环境变量: 方法 1 ...

  10. linux运维常用命令一句话(持续更新中)

    整理收集一些Linux运维管理.系统管理的常用命令,太多了记不住,只能记录下来方便日后查看.也可以和大家分享.如果你有好的一句话命令也贴出来吧.本文持续更新中. 1.linux启动过程 开启电源 -- ...

最新文章

  1. Hadoop学习之第七章节:Hive安装配置
  2. Oracle优化09-绑定变量
  3. c mysql实体类生成工具_【干货分享】C# 实体类生成工具
  4. 【Python面试】 说说Python可变与不可变数据类型?
  5. django-解决-修改过的模型类不能被正常迁移的解决办法
  6. CVPR 2019 | 条件运动传播:从运动中学习物体性质
  7. java getpathinfo_request.getServletPath()和request.getPathInfo()用法
  8. 程序员小哥月入5万,却被丈母娘拒绝,丈母娘一番话让小哥很尴尬
  9. 利用Referer请求头防止“盗链”
  10. 锁相环的输入、输出——以PSCAD的PLL元件为例
  11. EasyRecovery15中文版专业数据恢复软件
  12. 挖金矿 Java实现
  13. 台式计算机屏幕亮度在哪调,电脑亮度怎么调?教您电脑亮度在哪里调
  14. Linux添加中文字体
  15. 顺丰控股亏损:或时效件面临见顶危机,或下沉市场厮杀,或为220亿定增设局?
  16. 如何运营出一个有吸引力的微信公众号?
  17. PyTorch实战使用Resnet迁移学习
  18. 地级市房价月度数据(2009-2021)
  19. 什么是cve什么是cwe_什么是CVE 2020 0601又名Curveball,为何如此危险
  20. java的 内省机制_Java内省机制

热门文章

  1. 建模实训报告总结_3d建模实习报告
  2. 【高等数学笔记】闭包、孤立点、导集、内点、边界的关系
  3. android 插桩工具,自插桩测试示例  |  Android 开源项目  |  Android Open Source Project...
  4. 关于lua加密luac的有关问题
  5. C语言三位数的整数立方和,c语言求一个三位数正整数n各个数位上数据的立方和...
  6. linux: dirent.h 使用
  7. python金融数据分析与挖掘实战_[套装书]Python数据分析与挖掘实战(第2版)+Python金融大数据挖掘与分析全流程详解+Python金融数据分析(3册)...
  8. cmd 命令 copy 复制文件
  9. 单层感知器->BP算法详细推导
  10. h3c交换机端口加入vlan命令_h3c交换机vlan配置划分命令