mainpreset_File_VersionpresetNameT6 Pitch MapspresetTypeoptionalKeywordsbusManagerbuscount0bustype00channelcolor ff0f746cname 1L(M) maincabinetscabinet_0isIoModuleCabinetauto-alignmodule_0 module-typevoltage/system/IOPanelmodule-id"18d51667907d40449df0ea8f414ce103module-locationXmodule-widthxModuleStateDatak#IO Panel State Info #Tue Apr 14 18:32:04 BST 2026 NumberOfPolyVoices=8 Octave=0 SingleTrigger=false Main Out Volume Knob ?Audio Out To Host 1L-busAssignmentLimiter EngagebVariationsAffectThisModulebypassedcabinet_2auto-alignmodule_0 module-type4com/andrewmacaulay/simplenotes16hp/SimpleNotes16HPmodule-id"0786df6303ec415ca8392c8ed8bf6dfdmodule-locationXmodule-widthModuleStateDataNotes{We often want to assign a pitch to each position in a 4x4 grid, most obviously to assign pitches to each pad of a 4x4 MIDI pad controller. One way to do this is to use a 4x4 Knob module but it's often useful to work with chords or scales instead. Dynamically changing pitch assignments as a chord progression advances is something that will be discussed in another tutorial. Heading#1Text Size @Colour bVariationsAffectThisModulebypassedmissingInfoNumJackspackageName4com/andrewmacaulay/simplenotes16hp/SimpleNotes16HPwidthheighthcabinet_3auto-alignmodule_0 module-type4com/andrewmacaulay/simplenotes16hp/SimpleNotes16HPmodule-id"e47dec3afebd4f079ee771de927185f9module-locationXmodule-widthModuleStateDataNotesThe 4x4 Pitch Map module converts an S-Poly chord/scale signal to an S-Poly pitch signal. It does this by repeating the chord or scale multiple times if required, raising the octave on each repeat. So on the right a 7 note major scale from the Chord Memory module is repeated one octave above (bringing the total to 14 notes) then the first two notes of the scale are added another octave higher (bringing the final total to 16).Heading#2Text Size @Colour bVariationsAffectThisModulebypassedmissingInfoNumJackspackageName4com/andrewmacaulay/simplenotes16hp/SimpleNotes16HPwidthheighthmodule_1 module-type-com/adroitsynthesis/chordmemory/ChordMemorymodule-id"f25bdaab2879428da3ca3471839d2825module-locationXmodule-widthModuleStateData#7 0 2 4 5 7 9 11 0 0 0 0 0 0 0 0 0editableText1LabelRecordbVariationsAffectThisModulebypassedmissingInfoNumJackspackageName-com/adroitsynthesis/chordmemory/ChordMemorywidthheighthJack0xy7whname Chord IntypeJack1xy,whname Chord OuttypeJack2xywhname Bass OuttypeJack3xywhname Auto OuttypeJack4xywhname Auto Intypemodule_2 module-type#com/adroit/pitchmap4x4/PichMap4x4module-id"1c1fa4d3644447ee8328ad317e0bd212module-locationXimodule-widthOCTAVE editableText1LABELTL-BRbVariationsAffectThisModulebypassedmissingInfoNumJackspackageName#com/adroit/pitchmap4x4/PichMap4x4widthheighthJack0xy0whname SCALE INtypeJack1xy0whname PITCH OUTStypemodule_3module-type com/adroit/meters4x4/Meters4x4module-id"723d5b0f1a9b44efb83bd86b464fc941module-locationXBmodule-widthModuleStateData1editableText1LABELbVariationsAffectThisModulebypassedmissingInfoNumJackspackageName com/adroit/meters4x4/Meters4x4widthheighthJack0xy3whnamepolyInputJack1typecabinet_4auto-alignmodule_0 module-type4com/andrewmacaulay/simplenotes16hp/SimpleNotes16HPmodule-id"51e0efb96d82420a8fb2e6aafde7b9a1module-locationXmodule-widthModuleStateDataNoteswBy convention the lowest pitched pad on a 4x4 controller is the bottom-left one and the highest pitched is the top-right one - as shown above. This BL-TR order feels right when dealing with pitch as the higher rows are higher in pitch. If the TL-BR button is engaged then the mapping is rearranged so that the top-left is the lowest pitch and bottom-right is the highest.Heading#3Text Size @Colour bVariationsAffectThisModulebypassedmissingInfoNumJackspackageName4com/andrewmacaulay/simplenotes16hp/SimpleNotes16HPwidthheighthmodule_1 module-type4com/andrewmacaulay/simplenotes16hp/SimpleNotes16HPmodule-id"d214753e7a4e4ab29faa69c64d5b5785module-locationXmodule-widthModuleStateDataNotes1Internally S-Poly signals in the 4x4 system operate in TL-BR order because this matches the natural left-right, top-bottom reading order... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16. But the standard pitch order inverts the rows... 13, 14, 15, 16. 9, 10, 11, 12, 5, 6, 7, 8, 1, 2, 3, 4. Heading#4Text Size @Colour bVariationsAffectThisModulebypassedmissingInfoNumJackspackageName4com/andrewmacaulay/simplenotes16hp/SimpleNotes16HPwidthheighthcabinet_5auto-alignmodule_0 module-type4com/andrewmacaulay/simplenotes16hp/SimpleNotes16HPmodule-id"5d26593ee31f4583bcae17e72e58e560module-locationXmodule-widthModuleStateDataNotesThe standard BL-TR pitch order makes complete sense when playing notes on a pad controller but when arpeggiated with a switch that uses the TL-BR order the result seems odd. Turn up the GAIN db knob to hear this. You might think why not always use the BL-TR order as this is how pads are numbered in hardware? But this creates the same confusion in other situations where the TL-BR order seems more natural. Heading#5Text Size @Colour bVariationsAffectThisModulebypassedmissingInfoNumJackspackageName4com/andrewmacaulay/simplenotes16hp/SimpleNotes16HPwidthheighthmodule_1 module-type-com/adroitsynthesis/chordmemory/ChordMemorymodule-id"c91e173a3ab04fc483cd45fba2e5ae3dmodule-locationXmodule-widthModuleStateData#7 0 2 4 5 7 9 11 0 0 0 0 0 0 0 0 0editableText1LabelRecordbVariationsAffectThisModulebypassedmissingInfoNumJackspackageName-com/adroitsynthesis/chordmemory/ChordMemorywidthheighthJack0xy7whname Chord IntypeJack1xy,whname Chord OuttypeJack2xywhname Bass OuttypeJack3xywhname Auto OuttypeJack4xywhname Auto Intypemodule_2 module-type#com/adroit/pitchmap4x4/PichMap4x4module-id"522e941a3f8441fdae2ba6b9659fab05module-locationXimodule-widthOCTAVE editableText1LABELTL-BRbVariationsAffectThisModulebypassedmissingInfoNumJackspackageName#com/adroit/pitchmap4x4/PichMap4x4widthheighthJack0xy0whname SCALE INtypeJack1xy0whname PITCH OUTStypemodule_3 module-typecom/cherryaudio/lfo/LFOmodule-id"94053604d39e424c94316b239846eeb3module-locationXBmodule-widthsLow RangeHigh RangeFrequency N/?Polarity @Pulse Wave Width ?Freq Mod Amount bVariationsAffectThisModulebypassedmissingInfoNumJackspackageNamecom/cherryaudio/lfo/LFOwidthsheighthJack0xSywhnameExternal Reset IntypeJack1x ywhnamePulse Wave OuttypeJack2x y*whnameRamp Wave OuttypeJack3x-ywhnameRandom Wave OuttypeJack4xOywhnameSine Wave OuttypeJack5x-y*whnameSaw Wave OuttypeJack6xOy*whnameTriangle Wave OuttypeJack7xywhname Freq Mod Intypemodule_4module-type6com/adroit/spolytomonoswitch4x4/SpolyToMonoSwitch4x4module-id"f07fab56ba924f4a9240d9f0dc8ad9b3module-locationXmodule-widthHbVariationsAffectThisModulebypassedmissingInfoNumJackspackageName6com/adroit/spolytomonoswitch4x4/SpolyToMonoSwitch4x4widthHheighthJack0xyRwhnameintypeJack1xywhnamecVIntypeJack2xywhnameouttypemodule_5module-type'com/cherryaudio/oscillator/Oscillatormodule-id"f127e8f0eab44e3aaafe276a1715bd80module-locationXmodule-widthRange Button 16'Range Button LORange Button 32'Range Button 8'Range Button 4'Range Button 2Frequency Mod CV Amount Initial Frequency Pulse Width ?Pulse Width Mod CV Amount modTypebVariationsAffectThisModulebypassedmissingInfoNumJacks packageName'com/cherryaudio/oscillator/Oscillatorwidthheighth Jack0xy$whnameKeyboard CV InputtypeJack1xYy1whnameFrequency Mod CV InputtypeJack2x~y$whnameHard Sync InputtypeJack3x3ywhnamePulse Width Mod CV InputtypeJack4xy,whnameRamp Wave OutputtypeJack5x%y,whnameSaw Wave OutputtypeJack6xCy,whnamePulse Wave OutputtypeJack7xay,whnameSine Wave OutputtypeJack8x~y,whnameTriangle Wave Outputtypemodule_6 module-typecom/cherryaudio/gain/Gainmodule-id"c9474418abf946b4aa75498b80c2f986module-locationXmodule-width9Gain Amount Output Jack-busAssignmentCV Amount bVariationsAffectThisModulebypassedmissingInfoNumJackspackageNamecom/cherryaudio/gain/Gainwidth9heighthJack0x yw%h%name Input JacktypeJack1x y%w%h%name Output JacktypeJack2x yNw%h%name CV In Jacktypecabinet_6auto-alignmodule_0 module-type4com/andrewmacaulay/simplenotes16hp/SimpleNotes16HPmodule-id"735006e17bc745f58f3e6a0b032c706amodule-locationXmodule-widthModuleStateDataNotes]This sub-patch is the same as #5 except that the TL-BR buttton is engage. Now the audible note order is as expected. This is a subtle issue that rarely matters in practice but it's mentioned here just in case you get confusing results in future exploration. In summary, sometimes BL-TR order makes sense and other times TL-BR order makes sense.Heading#6Text Size @Colour bVariationsAffectThisModulebypassedmissingInfoNumJackspackageName4com/andrewmacaulay/simplenotes16hp/SimpleNotes16HPwidthheighthmodule_1 module-type-com/adroitsynthesis/chordmemory/ChordMemorymodule-id"415d1161cafb402ca3a03b0c1a2a9e40module-locationXmodule-widthModuleStateData#7 0 2 4 5 7 9 11 0 0 0 0 0 0 0 0 0editableText1LabelRecordbVariationsAffectThisModulebypassedmissingInfoNumJackspackageName-com/adroitsynthesis/chordmemory/ChordMemorywidthheighthJack0xy7whname Chord IntypeJack1xy,whname Chord OuttypeJack2xywhname Bass OuttypeJack3xywhname Auto OuttypeJack4xywhname Auto Intypemodule_2 module-type#com/adroit/pitchmap4x4/PichMap4x4module-id"6b6b396d19804389b8422524e03ccae4module-locationXimodule-widthOCTAVE editableText1LABELTL-BRbVariationsAffectThisModulebypassedmissingInfoNumJackspackageName#com/adroit/pitchmap4x4/PichMap4x4widthheighthJack0xy0whname SCALE INtypeJack1xy0whname PITCH OUTStypemodule_3 module-typecom/cherryaudio/lfo/LFOmodule-id"fa33e307f0f444b282fcbcf60591def9module-locationXBmodule-widthsLow RangeHigh RangeFrequency N/?Polarity @Pulse Wave Width ?Freq Mod Amount bVariationsAffectThisModulebypassedmissingInfoNumJackspackageNamecom/cherryaudio/lfo/LFOwidthsheighthJack0xSywhnameExternal Reset IntypeJack1x ywhnamePulse Wave OuttypeJack2x y*whnameRamp Wave OuttypeJack3x-ywhnameRandom Wave OuttypeJack4xOywhnameSine Wave OuttypeJack5x-y*whnameSaw Wave OuttypeJack6xOy*whnameTriangle Wave OuttypeJack7xywhname Freq Mod Intypemodule_4module-type6com/adroit/spolytomonoswitch4x4/SpolyToMonoSwitch4x4module-id"3629723870d44cb48bf6e74945569bd4module-locationXmodule-widthHbVariationsAffectThisModulebypassedmissingInfoNumJackspackageName6com/adroit/spolytomonoswitch4x4/SpolyToMonoSwitch4x4widthHheighthJack0xyRwhnameintypeJack1xywhnamecVIntypeJack2xywhnameouttypemodule_5module-type'com/cherryaudio/oscillator/Oscillatormodule-id"a094456357b242ffb8af7ebb5895924cmodule-locationXmodule-widthRange Button 16'Range Button LORange Button 32'Range Button 8'Range Button 4'Range Button 2Frequency Mod CV Amount Initial Frequency Pulse Width ?Pulse Width Mod CV Amount modTypebVariationsAffectThisModulebypassedmissingInfoNumJacks packageName'com/cherryaudio/oscillator/Oscillatorwidthheighth Jack0xy$whnameKeyboard CV InputtypeJack1xYy1whnameFrequency Mod CV InputtypeJack2x~y$whnameHard Sync InputtypeJack3x3ywhnamePulse Width Mod CV InputtypeJack4xy,whnameRamp Wave OutputtypeJack5x%y,whnameSaw Wave OutputtypeJack6xCy,whnamePulse Wave OutputtypeJack7xay,whnameSine Wave OutputtypeJack8x~y,whnameTriangle Wave Outputtypemodule_6 module-typecom/cherryaudio/gain/Gainmodule-id"1e0d2a483ccd4556b148a8dc5750e999module-locationXmodule-width9Gain Amount Output Jack-busAssignmentCV Amount bVariationsAffectThisModulebypassedmissingInfoNumJackspackageNamecom/cherryaudio/gain/Gainwidth9heighthJack0x yw%h%name Input JacktypeJack1x y%w%h%name Output JacktypeJack2x yNw%h%name CV In Jacktypecables cable_0j1mod"1c1fa4d3644447ee8328ad317e0bd212mj1name PITCH OUTSj1mjindexj2mod"723d5b0f1a9b44efb83bd86b464fc941mj2namepolyInputJack1j2mjindexcolor ffec222bcable_1j1mod"6b6b396d19804389b8422524e03ccae4mj1name SCALE INj1mjindexj2mod"415d1161cafb402ca3a03b0c1a2a9e40mj2name Chord Outj2mjindexcolor ffec222bcable_2j1mod"3629723870d44cb48bf6e74945569bd4mj1nameinj1mjindexj2mod"6b6b396d19804389b8422524e03ccae4mj2name PITCH OUTSj2mjindexcolor ffec222bcable_3j1mod"3629723870d44cb48bf6e74945569bd4mj1namecVInj1mjindexj2mod"fa33e307f0f444b282fcbcf60591def9mj2nameRamp Wave Outj2mjindexcolor ffec222bcable_4j1mod"a094456357b242ffb8af7ebb5895924cmj1nameKeyboard CV Inputj1mjindexj2mod"3629723870d44cb48bf6e74945569bd4mj2nameoutj2mjindexcolor ffec222bcable_5j1mod"1e0d2a483ccd4556b148a8dc5750e999mj1name Input Jackj1mjindexj2mod"a094456357b242ffb8af7ebb5895924cmj2nameTriangle Wave Outputj2mjindexcolor ffec222bcable_6j1mod"f25bdaab2879428da3ca3471839d2825mj1name Chord Outj1mjindexj2mod"1c1fa4d3644447ee8328ad317e0bd212mj2name SCALE INj2mjindexcolor ffec222bcable_7j1mod"522e941a3f8441fdae2ba6b9659fab05mj1name SCALE INj1mjindexj2mod"c91e173a3ab04fc483cd45fba2e5ae3dmj2name Chord Outj2mjindexcolor ffec222bcable_8j1mod"f07fab56ba924f4a9240d9f0dc8ad9b3mj1nameinj1mjindexj2mod"522e941a3f8441fdae2ba6b9659fab05mj2name PITCH OUTSj2mjindexcolor ffec222bcable_9j1mod"f07fab56ba924f4a9240d9f0dc8ad9b3mj1namecVInj1mjindexj2mod"94053604d39e424c94316b239846eeb3mj2nameRamp Wave Outj2mjindexcolor ffec222bcable_10j1mod"f127e8f0eab44e3aaafe276a1715bd80mj1nameKeyboard CV Inputj1mjindexj2mod"f07fab56ba924f4a9240d9f0dc8ad9b3mj2nameoutj2mjindexcolor ffec222bcable_11j1mod"c9474418abf946b4aa75498b80c2f986mj1name Input Jackj1mjindexj2mod"f127e8f0eab44e3aaafe276a1715bd80mj2nameTriangle Wave Outputj2mjindexcolor ffec222bcontrollerMappingsperformanceNamesknobText1Knob 1knobText1-value knobText2Knob 2knobText2-value knobText3Knob 3knobText3-value knobText4Knob 4knobText4-value knobText5Knob 5knobText5-value knobText6Knob 6knobText6-value knobText7Knob 7knobText7-value knobText8Knob 8knobText8-value knobText9Knob 9knobText9-value buttonText1 Button 1buttonText1-value buttonText2 Button 2buttonText2-value buttonText3 Button 3buttonText3-value buttonText4 Button 4buttonText4-value