{ "metadata": { "name": "", "signature": "sha256:4333d63d09055aa78d14e3ecde9af0bd1e9d7675ce5f4deb7c71a6b878b92f27" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Preamble" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This was taken and slightly adapted from the example section of the abjad documentation. I am not the author of the content (only the porting to noteook format). I have removed all diacritics for now." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from abjad import *\n", "%load_ext abjad.ext.ipython" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Bartok - Mikrokosmos" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We\u2019ll construct the fragment top-down from containers to notes. We could have done it the other way around but it will be easier to keep the big picture in mind this way. Later, you can rebuild the example bottom-up as an exercise.\n", "\n", "First let\u2019s create an empty score with a pair of staves connected by a brace:" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "The score" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We\u2019ll construct the fragment top-down from containers to notes. We could have done it the other way around but it will be easier to keep the big picture in mind this way. Later, you can rebuild the example bottom-up as an exercise.\n", "\n", "First let\u2019s create an empty score with a pair of staves connected by a brace:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "score = Score([])\n", "piano = instrumenttools.Piano([])\n", "staff_group = StaffGroup(context_name='PianoStaff', name='Piano')\n", "attach(piano, staff_group)\n", "upper_staff = Staff([])\n", "lower_staff = Staff([])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "staff_group.append(upper_staff)\n", "staff_group.append(lower_staff)\n", "score.append(staff_group)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "The measures" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let\u2019s add some empty measures:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "upper_measures = []\n", "upper_measures.append(Measure((2, 4), []))\n", "upper_measures.append(Measure((3, 4), []))\n", "upper_measures.append(Measure((2, 4), []))\n", "upper_measures.append(Measure((2, 4), []))\n", "upper_measures.append(Measure((2, 4), []))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "import copy\n", "lower_measures = copy.deepcopy(upper_measures)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "upper_staff.extend(upper_measures)\n", "lower_staff.extend(lower_measures)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "The notes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let\u2019s add some notes.\n", "\n", "We begin with the upper staff:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "upper_measures[0].extend(\"a'8 g'8 f'8 e'8\")\n", "upper_measures[1].extend(\"d'4 g'8 f'8 e'8 d'8\")\n", "upper_measures[2].extend(\"c'8 d'16 e'16 f'8 e'8\")\n", "upper_measures[3].append(\"d'2\")\n", "upper_measures[4].append(\"d'2\")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first three measures of the lower staff contain only one voice:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "lower_measures[0].extend(\"b4 d'8 c'8\")\n", "lower_measures[1].extend(\"b8 a8 af4 c'8 bf8\")\n", "lower_measures[2].extend(\"a8 g8 fs8 g16 a16\")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The last two measures of the lower staff contain two voices each.\n", "\n", "We use LilyPond \\voiceOne and \\voiceTwo commands to set the direction of stems in different voices. And we set is_simltaneous to true for each of the last two measures:\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "upper_voice = Voice(\"b2\", name='upper voice')\n", "command = indicatortools.LilyPondCommand('voiceOne')\n", "attach(command, upper_voice)\n", "lower_voice = Voice(\"b4 a4\", name='lower voice')\n", "command = indicatortools.LilyPondCommand('voiceTwo')\n", "attach(command, lower_voice)\n", "lower_measures[3].extend([upper_voice, lower_voice])\n", "lower_measures[3].is_simultaneous = True" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "upper_voice = Voice(\"b2\", name='upper voice')\n", "command = indicatortools.LilyPondCommand('voiceOne')\n", "attach(command, upper_voice)\n", "lower_voice = Voice(\"g2\", name='lower voice')\n", "command = indicatortools.LilyPondCommand('voiceTwo')\n", "attach(command, lower_voice)\n", "lower_measures[4].extend([upper_voice, lower_voice])\n", "lower_measures[4].is_simultaneous = True" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here\u2019s our work so far:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "show(score)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nXFgAAAAASUVORK5CYII=\n" } ], "prompt_number": 11 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "The details" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ok, let\u2019s add the details. First, notice that the bottom staff has a treble clef just like the top staff. Let\u2019s change that:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "clef = Clef('bass')\n", "attach(clef, lower_staff)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let\u2019s add dynamics. For the top staff, we\u2019ll add them to the first note of the first measure and the second note of the second measure. For the bottom staff, we\u2019ll add dynamicings to the second note of the first measure and the fourth note of the second measure:\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "dynamic = Dynamic('pp')\n", "attach(dynamic, upper_measures[0][0])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "dynamic = Dynamic('mp')\n", "attach(dynamic, upper_measures[1][1])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "dynamic = Dynamic('pp')\n", "attach(dynamic, lower_measures[0][1])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "dynamic = Dynamic('mp')\n", "attach(dynamic, lower_measures[1][3])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let\u2019s add a double bar to the end of the piece:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "score.add_final_bar_line()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 17, "text": [ "BarLine('|.')" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "And see how things are coming out:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "show(score)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n" } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that the beams of the eighth and sixteenth notes appear as you would usually expect: grouped by beat. We get this for free thanks to LilyPond\u2019s default beaming algorithm. But this is not the way Bart\u00f3k notated the beams. Let\u2019s set the beams as Bart\u00f3k did with some crossing the bar lines:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "upper_leaves = upper_staff.select_leaves(allow_discontiguous_leaves=True)\n", "lower_leaves = lower_staff.select_leaves(allow_discontiguous_leaves=True)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "beam = Beam()\n", "attach(beam, upper_leaves[:4])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "beam = Beam()\n", "attach(beam, lower_leaves[1:5])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "beam = Beam()\n", "attach(beam, lower_leaves[6:10])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [ "show(score)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n" } ], "prompt_number": 23 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now some slurs:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "slur = Slur()\n", "attach(slur, upper_leaves[:5])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [ "slur = Slur()\n", "attach(slur, upper_leaves[5:])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "slur = Slur()\n", "attach(slur, lower_leaves[1:6])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 26 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hairpins:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "crescendo = Crescendo()\n", "attach(crescendo, upper_leaves[-7:-2])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [ "decrescendo = Decrescendo()\n", "attach(decrescendo, upper_leaves[-2:])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 28 }, { "cell_type": "markdown", "metadata": {}, "source": [ "A ritardando marking above the last seven notes of the upper staff:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "markup = Markup('ritard.')\n", "text_spanner = spannertools.TextSpanner()\n", "override(text_spanner).text_spanner.bound_details__left__text = markup\n", "attach(text_spanner, upper_leaves[-7:])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 29 }, { "cell_type": "markdown", "metadata": {}, "source": [ "And ties connecting the last two notes in each staff:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "tie = Tie()\n", "attach(tie, upper_leaves[-2:])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 30 }, { "cell_type": "code", "collapsed": false, "input": [ "note_1 = lower_staff[-2]['upper voice'][0]\n", "note_2 = lower_staff[-1]['upper voice'][0]\n", "notes = [note_1, note_2]\n", "tie = Tie()\n", "attach(tie, notes)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 31 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The final result:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "show(score)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n" } ], "prompt_number": 32 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }