{ "cells": [ { "cell_type": "markdown", "id": "11f63929-a2e8-43a1-95f0-28c8c0f56a60", "metadata": {}, "source": [ "# Symbols and notation\n", "\n", "Many of the aspects of maelzel.core's notation output can be customized. There are two main entry points for this: \n", "\n", "1. The method `setSymbol` which adds or modifies a Symbol to a Note/Chord\n", "2. `addSpanner` adds a line/slur/bracket to two or more notes. \n", "\n", "## Symbols / Properties\n", "\n", "Symbols are any elements/attributes used to customize the symbolic representation of music. A text expression, the notehead shape, an articulation: all these are symbols. Also properties (the color of a note, its size, etc) are seen as symbols. " ] }, { "cell_type": "code", "execution_count": 1, "id": "1a8da57c-7fbc-41bf-89ca-a2feb5d43f51", "metadata": {}, "outputs": [], "source": [ "from maelzel.core import *" ] }, { "cell_type": "markdown", "id": "bc4359a9-8bbd-4b96-9f25-cf04a2ec73e3", "metadata": {}, "source": [ "Some chain symbols are applied to all elements within a chain, others are applied to the first" ] }, { "cell_type": "code", "execution_count": 2, "id": "f4616448-8f75-43eb-842f-565c5aac0544", "metadata": {}, "outputs": [ { "data": { "text/html": [ "Chain([4C+:3/2♩:offset=2:symbols=[Color(blue)], 4A♯:5/2♩:symbols=[Color(red)]], dur=6)

" ], "text/plain": [ "Chain([4C+:3/2♩:offset=2:symbols=[Color(blue)], 4A♯:5/2♩:symbols=[Color(red)]])" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "notes = [\n", " Note(60.5, dur=1.5, offset=2).setPlay(position=0), \n", " Note(70, dur=2.5).setPlay(position=1)\n", "]\n", "notes[0].addSymbol('color', 'blue')\n", "notes[1].addSymbol('color', 'red')\n", "\n", "chain = Chain(notes)\n", "chain.addSymbol(symbols.Text('error'))\n", "chain.addSymbol(symbols.Articulation('accent'))" ] }, { "cell_type": "code", "execution_count": 3, "id": "a05cdfa5-9fdb-4aab-823a-960ba2bbbc8b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "Chain([4C+:3/2♩:offset=2:symbols=[Color(blue), Text(text='start', placement='above')], 4A♯:5/2♩:symbols=[Color(red)]], dur=6)

" ], "text/plain": [ "Chain([4C+:3/2♩:offset=2:symbols=[Color(blue), Text(text='start', placement='above')], 4A♯:5/2♩:symbols=[Color(red)]])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chain.addSymbolAt(symbols.Text(\"start\"), 2)\n", "chain" ] }, { "cell_type": "code", "execution_count": 10, "id": "2cab22a1-1ac9-49fb-aa7e-6ba390fb0828", "metadata": {}, "outputs": [ { "data": { "text/html": [ "Chain([4C+:3/2♩:offset=2:symbols=[Color(blue), Text(text='start', placement='above')], 4A♯:5/2♩:symbols=[Color(red), Text(text='last', placement='above')]], dur=6)

" ], "text/plain": [ "Chain([4C+:3/2♩:offset=2:symbols=[Color(blue), Text(text='start', placement='above')], 4A♯:5/2♩:symbols=[Color(red), Text(text='last', placement='above')]])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chain.lastEvent().addSymbol(symbols.Text(\"last\"))\n", "chain" ] }, { "cell_type": "markdown", "id": "a25ed63f-487e-4e0d-b44f-335da6164d50", "metadata": {}, "source": [ "Calls to `addSymbol` can be chained. " ] }, { "cell_type": "code", "execution_count": 4, "id": "e3210f8c-6fc0-4c90-99f2-723eacc134f8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[Notehead(color=red, size=1.4), Accidental(parenthesis=True), Articulation(accent)]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "" ] }, "metadata": { "image/png": { "width": 212.25 } }, "output_type": "display_data" } ], "source": [ "from maelzel.core import symbols \n", "\n", "n = Note(60.5, dur=0.5)\n", "\n", "n.addSymbol('notehead', color='red', size=1.4).addSymbol('accidental', parenthesis=True)\n", "n.addSymbol(symbols.Articulation('accent'))\n", "print(n.symbols)\n", "n.show()" ] }, { "cell_type": "markdown", "id": "26842cd5-34a9-4b3a-9a82-0d12a89473b8", "metadata": {}, "source": [ "Notice the difference between resizing the notehead alone and resizing the note itself" ] }, { "cell_type": "code", "execution_count": 5, "id": "9ac73c6b-040a-4071-ab1a-ad494435aa65", "metadata": {}, "outputs": [ { "data": { "text/html": [ "4C+:1/2♩:symbols=[SizeFactor(1.4), Accidental(parenthesis=True), Articulation(accent)]

" ], "text/plain": [ "4C+:1/2♩:symbols=[SizeFactor(1.4), Accidental(parenthesis=True), Articulation(accent)]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n = Note(60.5, dur=0.5)\n", "n.addSymbol(symbols.SizeFactor(1.4))\n", "n.addSymbol(symbols.Accidental(parenthesis=True))\n", "n.addSymbol('accent')\n", "n" ] }, { "cell_type": "markdown", "id": "fe30ae7c-4d10-4eab-9cdc-1f64bbf39cee", "metadata": {}, "source": [ "Some symbols can be accumulated, others are exclusive (a new value will take over any previous value set)\n", "\n", "| Symbol | Exclusive? |\n", "|--------------|------------|\n", "| Color | Yes |\n", "| SizeFactor | Yes |\n", "| Articulation | Yes |\n", "| Notehead | Yes |\n", "| Text | No |\n", "\n", "**NB**: dynamics are not symbols. They are treated as a constituent part of a note/chord\n", "\n", "Color, for example, is exclusive. Only the last call to `setSymbol('color', ...)` has effect, the previous ones are overwritten " ] }, { "cell_type": "code", "execution_count": 13, "id": "e78cc698-2b68-467e-ac73-5d609a5f31a7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "4G+:2♩:symbols=[Color(red)]

" ], "text/plain": [ "4G+:2♩:symbols=[Color(red)]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Note(\"4G+\", dur=2, dynamic='ff').addSymbol('color', 'blue').addSymbol('color', 'red')" ] }, { "cell_type": "markdown", "id": "81e55a11-17c3-4987-92c0-9811bc05f8c7", "metadata": {}, "source": [ "Text symbols, on the other hand, can be accumulated (notice the order of appearance)" ] }, { "cell_type": "code", "execution_count": 14, "id": "fd3df5fb-3719-4e4d-805a-807816745951", "metadata": {}, "outputs": [ { "data": { "text/html": [ "4G+:2♩:symbols=[Text(text='text1', placement='above'), Text(text='text2', placement='above')]

" ], "text/plain": [ "4G+:2♩:symbols=[Text(text='text1', placement='above'), Text(text='text2', placement='above')]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Note(\"4G+\", dur=2).addSymbol(symbols.Text('text1')).addSymbol(symbols.Text('text2'))" ] }, { "cell_type": "code", "execution_count": 26, "id": "5dde6c9f-cc59-44a8-a547-76956d984e83", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "" ] }, "metadata": { "image/png": { "width": 1012.5 } }, "output_type": "display_data" }, { "data": { "text/html": [ "OfflineRenderer(outfile=\"/home/em/.local/share/maelzel/recordings/rec-2025-09-29T15:20:32.886.wav\", 1 channels, 20.87 secs, 44100 Hz)
Soundfile: '/home/em/.local/share/maelzel/recordings/rec-2025-09-29T15:20:32.886.wav', duration: 20.9, sr: 44100, numchannels: 1)
\n", "\n", " \n", "
\n", "\n", " \n", " " ], "text/plain": [ "OfflineRenderer(sr=44100)" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import display \n", "\n", "w = Workspace(scorestruct=ScoreStruct('5/8', tempo=80), active=True)\n", "ch = Chain([Note(60+m*0.25, dur=F(3,4)) for m in range(24)])\n", "ch.addSymbol('#00A0A0')\n", "ch.setPlay(fade=(0, 0.15), instr='.piano')\n", "for n in ch:\n", " n.setPlay(gain=0.3)\n", "for n in ch[::3]:\n", " n.addSymbol('accent')\n", " n.setPlay(gain=1, sustain=8)\n", "ch.show()\n", "ch.rec(extratime=0.5, nchnls=1)\n" ] }, { "cell_type": "code", "execution_count": 3, "id": "4608ac20-0f65-4e97-a7dd-bea9a14a9ead", "metadata": {}, "outputs": [ { "data": { "text/html": [ "Chain([4C:1/2♩, 4C♯:1/2♩, 4D:1/2♩, 4D♯:1/2♩, 4E:1/2♩, 4F:1/2♩, 4F♯:1/2♩, 4G:1/2♩, 4G♯:1/2♩, 4A:1/2♩, …], dur=6)

" ], "text/plain": [ "Chain([4C:1/2♩, 4C♯:1/2♩, 4D:1/2♩, 4D♯:1/2♩, 4E:1/2♩, 4F:1/2♩, 4F♯:1/2♩, 4G:1/2♩, 4G♯:1/2♩, 4A:1/2♩, …])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ch = Chain([Note(m, dur=0.5) for m in range(60, 72)])\n", "ch.addSymbol(symbols.Notehead('square', color='#c02020'))\n", "ch" ] }, { "cell_type": "code", "execution_count": 4, "id": "9efc45ee-1e16-47a3-8f4b-40854e0a368a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "Chain([4C:1/4♩:symbols=[Notehead(color=#000000, size=1.5)], 4C♯:1/4♩:symbols=[Notehead(color=#0a0a0a, size=1.4167)], 4D:1/4♩:symbols=[Notehead(color=#151515, size=1.3333)], 4D♯:1/4♩:symbols=[Notehead(color=#1f1f1f, size=1.25)], 4E:1/4♩:symbols=[Notehead(color=#2a2a2a, size=1.1667)], 4F:1/4♩:symbols=[Notehead(color=#353535, size=1.0833)], 4F♯:1/4♩:symbols=[Notehead(color=#3f3f3f, size=1)], 4G:1/4♩:symbols=[Notehead(color=#4a4a4a, size=0.91667)], 4G♯:1/4♩:symbols=[Notehead(color=#555555, size=0.83333)], 4A:1/4♩:symbols=[Notehead(color=#5f5f5f, size=0.75)], …], dur=3)

" ], "text/plain": [ "Chain([4C:1/4♩:symbols=[Notehead(color=#000000, size=1.5)], 4C♯:1/4♩:symbols=[Notehead(color=#0a0a0a, size=1.4167)], 4D:1/4♩:symbols=[Notehead(color=#151515, size=1.3333)], 4D♯:1/4♩:symbols=[Notehead(color=#1f1f1f, size=1.25)], 4E:1/4♩:symbols=[Notehead(color=#2a2a2a, size=1.1667)], 4F:1/4♩:symbols=[Notehead(color=#353535, size=1.0833)], 4F♯:1/4♩:symbols=[Notehead(color=#3f3f3f, size=1)], 4G:1/4♩:symbols=[Notehead(color=#4a4a4a, size=0.91667)], 4G♯:1/4♩:symbols=[Notehead(color=#555555, size=0.83333)], 4A:1/4♩:symbols=[Notehead(color=#5f5f5f, size=0.75)], …])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def rgbtohex(r, g, b):\n", " return '#%02x%02x%02x'% (r, g, b)\n", " \n", "ch = Chain([Note(m, 0.25) for m in range(60, 72)])\n", "for i, n in enumerate(ch):\n", " di = i/len(ch)\n", " r = di*0.5\n", " col = rgbtohex(int(255*r), int(255*r), int(255*r))\n", " n.addSymbol('notehead', color=col, size=0.5+(1-di)*1.0)\n", "ch" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.3" } }, "nbformat": 4, "nbformat_minor": 5 }