Ableton Live, Max For Live and Nora, chord splitting ideas

Audio Plugin Hosts and other audio software applications discussion
Post Reply New Topic
RELATED
PRODUCTS

Post

quest : how can we split/reroute the different chord voices to different tracks in AL from Nora, AFAIK there is no in-track MIDI channel support in AL so I can used velocity based one(so the original velocity info is dropped out)

my MAX patch is here

<pre><code>
----------begin_max5_patcher----------
868.3oc0XssaaBCF95To8NfPZ2kEg4L6tsWippHGvswofMx1IMcU6ce9.gPN
.gPZnZ2XGrM3uuO+ex4iu8vD6EzsHts0OsdzZxjOjiLQOlZjI6FXhcAbaZNj
qWnMA8FcwJ6oUyIPaE5wKYnRDIyBSD0SRVWfI4Hg9MA6FsDJRWhIuLmgRElM
GDDMyYpkWnupKLP055Lyw5ocuDNSuKxs9GAM+9z0hS1.t38bjd40qzrLw6kH
yFZaa8jdp+9sGT8xto8WBVWr.wF.KSzDyC3p5Bb5jkt0eeoxxQDATfoji1BF
r.IPr4HBbggxNm6sZfAesBmD0FBNTRcuJIcpk8BH4kaRZaw5p.mgelxJfsXb
E0gr6ooomShpK1sSU229SPHzt.2nIVG5fb+tdauJQHNV04G0oH30hH3bFQ3S
mg6hiPnBzPoIHDn5h7OklOSIBN9OZzCTK9T5Ga2bwDoKldpewvvbqeSyy9xi
+zlzASe87RlaGRVUDAOs8g2fTL.3+LIaCjUCxU7SUxUbqzkTVFuLGKDsEq28
hFhtdg5fNCTVcGIYsd4vMnr4xsVRi4PgfgWrVXJPXxdkUhFbNpFMmUnZI4jY
xpCvAcP9JOGm03.ojQETEapwCu.lm+J58ETHau.UPyPGHM89jDXJJAjnyejn
irnJWYur81Rr.I2wTZNkYdImYINIwN9Sa4WsjyO5xI8oO+LGINHbLSlz0PtZ
drHWFK3XH4LsQCnIFFRkDt5jHlZYh0RTfWOpjX4wnJLwAjDpPUrGvKxSCsiv
2Uj0U0cGhs9cqFdi821wTzwMEb0MbLhBbmjMUVbL45yiaTLPno0cXgOGpv4M
Pyt1r9Ln1NGSN4xVZpql3HwkSWyR2sEUEkX0f9YHt.SpiN739DFMW0RbVFhb
fybFlqbvy1GN9rG28FWA8FWfQEW98AWditbobluLtT4AFaf0GbEL5vR4C2zx
oC8pa6K4EmJoRuyJGPf4tA.f4lP9AyBpdpwdcO3xkO6CunHeLWbbUnupLEP7
tG9pYh5VAChIAg5Vuc+9NSDPuHxPLuLDILZDHRu7e8Ge+WPevU7Mgqpzqvxx
MHFu5KafjrHkUlJMM+AQxyIh4YSUa1LzFL+fRrsgrTU87oh0LSt+sgU+qP5K
QvHqw5UKGQiAYy+.CkqriA
-----------end_max5_patcher-----------
</code></pre>

the chord splitter js function is here

Code: Select all

var splitter = {
   voiceNumber : 3
  ,chord     : []
  ,addStatus : false
}

splitter.newNote = function(note){
    // if note velocity different of 0 add note otherwise remove
  note[1] ? this.addNote(note) : this.delNote(note);
}

splitter.addNote = function(note){ 
  this.chord.push(note);  
  this.chord = this.chord.sort(function(a,b){
	return a[0] - b[0];
  });
  for (i = 1; i <= this.chord.length; i++){
	this.chord[i-1][1] = i;
  }
  if(this.voiceNumber == this.chord.length){
	this.output42();
  }
}

splitter.delNote = function(note){
  var chordArray = this.chord.concat();
	
  for (i = 0; i < chordArray.length; i++) 
  {  
    if(chordArray[i][0] === note[0])
    {	
      outlet(0, [chordArray[i][0], 0]);
      this.chord.splice(i, 1); 
    }
  } 
}
splitter.reset = function() 
{
  
  for (i = 0; i< this.chord.length; i++)
  {
    outlet(0, [this.chord[i][0], 0]);
  }
  this.chord = [];
}  

splitter.output42 = function(){ 
  for (i = 0; i < this.chord.length; i++){  
	outlet(0, [this.chord[i][0], this.chord[i][1]]);
  }  
}

/* MAIN */

inlets  = 2; // number of inlets
outlets = 1; // number of outlets

function note(note, vel)
{
  splitter.newNote([note, vel, false]);
}

function list(info, note, vel) 
{
  splitter.newNote([note, vel, false]);
}


function reset()
{
  splitter.reset();
}

function msg_int(i){
  splitter.voiceNumber = i;
}
so it sorts the notes using pitch and replaces the velocity values with the order, Nora keeps the channel info but it can't be used in AL,

created a from scratch video about, maybe can be interesting for non AL, Max users (what can be done in AL in 5mins)


(hope u not miss the sound too much :D forgot to change the source to a non ASIO one...)

I'm quite qurious about what would be the best/simplest solution for this, the original idea comes from https://github.com/HerrmuttLobby/chord-splitter but it can't be use with Nora, don't need sophisticated algorithm (with overlapping etc. notes ) just a quick and dirty one which can work with any chord note number like the one above :) would be nice if it can keep the velocity data
"Where we're workarounding, we don't NEED features." - powermat

Post

auto assigning different channels to the different voices (so yes Max in Live supports MIDI note channels it can be use with sender/receivers independently from AL), working sender/receiver based



so it keeps the velocity info, yeah :D love this DAW
sender

<pre><code>
----------begin_max5_patcher----------
6750.3oc6c89bhhr09yyV09+PJe+3LKWPMIj66mPAT2QmAhfJdqakBPvffZV
EIJacu+s+d5tAD+YLYxXRl2NaMaLMG59zO8oOmyS2M3e+6+1mJXMcoy7BW7O
u3ecwm9zeCk7IbYnR9TZAepvXyk1AlywBVXhyiSsFU3KIWKzYYHt73fKlMM7
BtrqLcQXfSX3pGbHMPgBeA92E+6zqOObU.9RExtkIKF6MAtIbKULszGLCsu2
axv6l4XGRpqh2vxv9kKJeyULktA9oL74RnRJBkutI7FfqePe+ihr4aEhtQZF
bo+me+2P+F90W9gQhGl47fyjAW3MI7HfwoCDbGAHtr3UXfnHO5WWc4Qw.tKO
.Fv8piAKl7fos+ErWvdXH.iOje85.FEulCCFrXX3phGGL3NeFDIPww.imADT
5HPPIddFNXBAeQ.GtlkoHKKKG74K4ONXvd1rLF6Mv6AyYycdBGEI+KmQxlk7
JYyT9JreiRDSmaJxb4QfoqO.Jw+piRyuXxzYl2AsQgWkYFbX2DWdE+ILyn3U
Gnax9p2MOqAMJk3prL9WOQ3heI8N.cWv7tzkX+iOkKgqeCBVbhgKdUiZvgsG
JRfChafCCJGZpQoeZYQLYZnyO8zHtA0q4Jh+00kONDT9rYWjBAnPFNQNmgzo
toDZBxkWicNbyMGGHJ85CDKFa4LKqZg9+bnWaF5McxFI+hzKdrk5kr6pi60G
pk4jguDPB5Xycb8BBA85olHUhXFU5xCoY4Quh6satQarkm20M8LywNfBcmyD
SKR230Ozzn4WXe+zYCty9dyISbB7hyMx7iX+U7I8EwwS.RtiCg2bH6uLMwLx
YvcfnP8emYX3LOqEgD9deZMb7oBvvKfjiIJ8A6zGC3SQ9W0QfOCvQoiGO3UB
0IynRBAPRS3fn9UmO2emuDC3tFmWXoSHufyGGRTjOuIm+DBRnTSnRdTrnzO6
rAhLmkMwLZd3+c8E7bdLxatmkWfW3pM5QSccm6jzUvp+FZucfmse38yltX38
34uoWvZ33oCb1rHvS.wsO6NCNHs4huAbTXFDD7TQrthjdAd1EKVm3Je4QCYM
2a3Dy.z355Og9Wf27s4C9ZtrRr7n3+I9eKxRz6x7GhjvyMDFedOyI8z+mug5
.jAWn+M0bvhId+0BGncfgNnn0f7EE9ey0QMWDNMsdV6xeh4CyueZ3d8wmhuE
pdc41oBl4cOxY17D0uXVg.vMcVtqvlckL6xzljLzjd4oy7F5MYGCWvBJUI1T
94Krxth9jAPJGSbFr9xNPhQCx2S+zlsaR2Mq+BF5KlMCFRtKOh7GY2MTiSf3
gqW7yMu6SAvNDlcTXaCjCMxtQ0kCz1dp0lXWm1Zabg7nWiIyCmsXbtzk2DA2
PW11dYKT.rrCV.pzFp71pUpPC7l+Pf4pC18RkCmVxoIU1Tgsz6MPdtMtf2bH
UW+cuAT4yctp7t2w7.OvMWlut+0EYywxe8M81tiPVASsv8mxWdyMkYp1Jv7q
BLvOtpJsD6i9j.Sj12jDgOE8Yxeeh+z7uLaI0oeHbCB0UZOzOvzoUr4bghlg
5AlwBJLx8zMV1pa+EkkYDzTXPsBiBqYrjroyPIbYL4KyeOkYq2ejZs9LhJBB
kjQpm9B0t8lwKcquOmwD0Z364l+DcOwldy45p7XmdkerS+UnqI5B+iQcQKt9
N5iL47CrVTtioeYYaFwHgN5AVq74LCA8URjz1M4458W7R36AZWlJn9gZ29dH
8Ym5PgoZIM64M5Xrj2WYIOm8JTclq99ldWy6gxbzEMlpVzbIud6opcH8ILn3
1lkMnmeihca4KOvuAoOgGKxpaIsYRcFLymyJNWcKnHP5aB58B0kMAPtx95SZ
90r7g+tglalNxLJ1xgejoiJqYDbMglLsG1plsiAfi5Es7UgwMwHlJ7crCU4r
1XLqdrIaYYiU75cv8CbgtJKzGaNpUwtcwss6inRWe+h36+qRPgvGqxCyLUGa
grc7UgwMvdZYh8Dosb0ALwZJH2ZrJp8RU.Ox02tUuCXOvpMcZWCPtJho1nNx
J2pGX32nqQXqNFNsz6eoNW2V7A1XrPIUvqMXZnaD.XheYtd9I0kCT1J+fA6H
q.ne9mh9wbT8ahZ8ST+lYc55GHqfhhmJZdGW2lfMC1dRTQYELWbLT1bdYCex
3C4VDEMFA5vpV0PXe+Q4zcNvlmUWd83NSxboslqKt0bcr8vnQlizkG3zXj0B
avdBruEkjsGlq9kJ2o28O1wXDLedQit8uDvR77dIM6XPOWJwYfmioMxbXCYr
cBx9N1mq2vG45JnWydgZf0PahsJZtdUdVEnuaE2nauokw0sFXiYANHXpDG2s
Gp82m9d8HqQn4EqmWp4izE73BH2nL2iQiEFo4a.iyP+2CFyZiFGf40KLNMav
a04r1m8JCneFmh9wbb8a4opees1oqefrY9Xkf4rOBso69lCvnWV.cuQUkzR7
4IbuJLVZ4C1XM.+CeGrC03ksvisQZ8VoVrqL32ksUWiQXeQq8kzKm8RluD+8
4KhUGqCQNa3KpN99itEANB8h9wsMNN1+mRUNMrehV8SF6Qx9JYaDe0IZanr3
zsMPxxHF2KFE2gWBxGnK1GnfXLJVjQHut4BvuHV+pStGAUX9MTWnXkUFIajS
2sG9XGa+b932uOJkC3iRQYD3SvuUQ.ObYlpRtVEzk5A4Nn2MWaAUMNdO3yfU
FEW2HDk2vjsrqaRxaZ5ix1H+Xcf3vSQ9iv1pQJrMFagxGvwPq+LUnuu1euff
hL1u4PHuEmVZ87FBXoOw23Z8P4Vv9UcFe.1ullTf0XcR9EUXjzTg5KFJKdCe
8XOn3qsy3gBDDUmCZOciYvui0k2Sa5lLmrHwFHec61Bhi3asPXOWiosACL8S
rUb2e7X3GOFICesSLFYryoGiDj8UJF9g7e9iGCmQaI3eDhcaWlW+1PPeJAxT
cey8yhMJiy2cCay5HYz6EirIAetaLmqoX+gkQ9w4Hwk4kR7am4GWanZMvder
4drWA6RcHGavllUC7kJSruWKGSCvmr+vZ4ycPaJje4PvWCxdgzlq6aBi1tMP
3dPeXNmInaY3wTP+Q4Otu7baC5vRHVBX6aLGkaB+F99PisDbGlWLlEMWunY9
wS2IxJ844fba1Xd10eF4OcZm9y.tEN34EcwbBPwyDT1qMDY9JLN6aS3JrX64
tMI1JGRWcEF0YAeGh9MwHf7e278mWLX2JRLRlC8qYhv9yPN+no+6jy+3pHGs
JB+r8Wnr3TyotxyveQkWO+ECOUNIJ8Oc8Cj8mTN+BGIdpv1wSEeFwSIKFfZn
T.b+ProgwlKg9E3Wyde40ulmfuN1GPKD9pqvByeg9Quwj3vZS.tsH+QqTSx+
HsLX9NxdDmuoKzV4mWdnXq6QtcxKq+WUP9gx6Owokj8PPG2XbG9AKGql8r0s
CZV8keVQqWrDW2pRb8l.1B632T77Dq0Mp1664Ni9YM2IRYB3KEs9INpnwBYj
uJFMvtB6msQQyHLmyNFqP3sXVbrbyK.6pgc5EB16y3kHwBU0GDkOuTPFEz52
.i030NSkLtmMdKpjEKLEKX1NFMp8YDzg71PqQ0lwDYvw5IwjkxM+Vb69GjeY
x5AksNRhO+Xyul3CtNAeKOa744mCxaK1I9d.6T9Xhc0eOfcteLwtluGvtnOl
Xmx6B+cBeHwNs2E969Xhc8dW3u6iI1Y8tve2KD61S9no66xItOeJZqW6F2r0
fGuFisC4kzWHfwbllRPeg2Gp6N1qzwqAKSkLd9R6kmuw9VOdax5D78p4Wm.o
aw2+LM75EI2L1LDv7kHbCw4C5KSAdpHLsURasu9z2aTyXi8DsttAhi3tqK42
1ed+rwlbatF3klr20.2WyG3Ke4NxJB5m9IoeLGU+3Gbh5WyqOc8CjEBNzR1F
wqx4QsdkI6C.TFv0xFJikCYqsdMvO.edlCvmeuqSu31qSOyQVWA2CrtB6euD
269azTp+B6hvbNvdMo+UMor1v8Mh3Cgocq.qEOJaduDhS994gS7avpLrkbe+
b9OR6Cfe2ywdHd.avc2GFWuSeODQx9teODA+znwv.H9.Y+Sd50N4EcO6i6r3
qYbIlWL24siyfZeEEeqgXe7at9x4W2f7yEEdx0uOWe5sLtc8mO97rWGf2XrS
38.1I9wD6p7d.6p+wD6p9d.6Z9wD6DeOfcJeLwNo2CXm1GSrS98.106iI1U6
8.1Y8Bwt8jOZ5d4WkuiYDveCeFhRNiPL.elMJOcsHFoHToQQyhsP6wYx92OO
vDwE59D93fdVUhoZ8HlaaV1sZ8UMa2DR0u2JdeEeHedGcVqzyKxKRGtVQPRs
S+X9.K2di.ahtn0U4ozkVQ+LzkHEAEeHeZd452xKaN6v5QEhdTooKD4rNvkz
oglAvEuqd54Nr991+5hI6MqL9rdku7T6nlZJpi7ksWznV8ULqZxjblF+qxbl
E486QV6jZ3wtj1GzClaG1pX2J5cPmON8r0eYe7hS4qhNCPMyWd57Ilbm0xa+
VznpIqsCa+Pz9e2firlL3y.NSR6W40cbfQUPArqQ7zBEtMEONndzJQOVxrpk
ayUMe7UEO15bubnwi3jwCk1sJwbeyUhGxt.4aYc8sFKb265v8ZetlaODo25X
6ZxY6HsLVM+D7DxCCZq7m8IfyN97PUaqy.0djamy+GSHigtwIcNIPqy.narO
td8CbCLBl94pG9LOd8mgebfOFqfFW+QWWviutaG37Jr65tU+Yrta0u9UacAU
N00sjY5oqefrh6ccFDdMigy7RWmg8clKXDe8Wudk2E43bNNqjusXmx6BrS3C
I149t.6p7gD6hdWfcU+PhcoGuy2VrS7io+t2EXmzGS+cuKvN4Ol96dWfc0dg
X2t4i9x3a2VCJ+QfKIv2tkjr05y3v4m6upF4YJwMVqWzIv68mF+aQUAYDOSg
aaOTnV8z0m47uVDthRizLGZ24sGSZpJTUer0Jz5T8VqKwJBvbHSz4Iv0UyXl
vaiNnzn6Ztlsp81rNQO1wdL3yv0ZrEXqhVC2CpGpZJsXGUs9iiPqST6ugVml
ndGXNbyW1b3uoonf7UDKrzF78Yrv9GDWhQ9P4xdd2quu2EF4dt7Zk774.9fT
8M5B9GkwOu7oO2NP+RUvlM2eGk8rhhwXIrONAIkUeMlY80ZWtSOzy4kLz+Xw
Oqan0ehq6JdYSNctty8kMlxy1C8b2rjGcNP3LCM.azVx1qH5CweZC8dfeTy4
n0a.zKv+foOHiu5FOeCho5hyiZj2+F0UTlA9oKZn2aoeGxyGL446VyGslO9b
Prt1MwwIQGiIcYbYCwm0Hw7m0H8ryZjlayEJUQXrQbC76kCT6ba9yZTm0m0H
gUWWoEXn11WcrE54FBstRMRz6pj0uJ6LOQvOFl8pGJ6nGsV3B0PSeygBE61L
4cyQEQQyYfMSGo.qoRjykE4b0oarBqCx1OJVk7tIo290Kgs0KwUe8wCoW02V
uTZtn9gvmncvmGOB9HtG8nzgzCsM0CYjdH5cv5Vdi51EW2qP5skn4hF3mAH7
bUTbomBaqtC1Fgdj3NMrs9QFy2AaiNhs2tXa7yAa6Qv1Zv7k6wmIqSytpJ0t
5zrqZpqVUWW8asztEMYt1V9jwq+gxV4lWRq2bzeOSQfj2ub8Gius4FXP53L1
OPMD1C88aaxA4GqHQNWrXFOI9d0EpY.49ZfdFbiye16viaqeW.UC3WvJPNil
GZ7K8rWj8NFxdj0B8ZImUyCLNltlIYuagXUWBw9hHmYyCMdlrFGtsWfzcfWP
.54Ut29dl9R6CDtBKwsUrYLDu46FAFqHuWCRO+g5.mDSOHmrxj10gbNl6X5m
a+FRWaVR45pgowcjeY5zp2g5T7OccJguFH2etu7QZpa3oiOCm82feH19QoMq
ZWxdV0jE7CQ1Wpa045A4RSJOJ1L8bkWEsOr.urTdDHdBy.aLzy44ep4ZDzvy
Htmbq.A21CYwuWPpHkvo0E7ggeGdg1KnVRlKRdGeg1wnOWKhos93dNBDtp6t
+ajoHn28Ern8HAx4XG91wv7P8j8UCzyEY4ivYtL44euIOWxyGOhmoLxOb1yF
OpuAbnrv6wXu.ikn9gpmQluh5n0FBsWgPNovXCfU142qjpo7rERy+6POC+Qa
eu3wfj7b0mxhNqsYm80TN1jx0At2D7.65YW6oHsxP9+MALZ7vj2yHaL96qf1
S+ceuOvvjl6tSKw9Hd+n772bLfjCVKbtk52FJz0FwYLa+dReGojydkHKKz+p
YwhxWOacB7SdmqjeuQ.bnUx6isVrPdtDtFU.aFDWjup2YfyiHdIcReWBkXiw
TQpolMvEF3rFcque9mwZ2Mt+U7RPd3c5G5mDmkAsG+rZB.tHgpy09fgwSE81
Rw.2YzCp8Z+rn4M5szU.NJpH4x7kh7sdf5pxgpqlmi5x8f00KpOZI0ewiHaz
jwn2C1NHNF.GJVvWJJ2f8susx7AVdjmCe7yOCYOaGa5k7doB7K1aUFeyHsHc
hc1FuuPZpaeehOpc226uu9LaLZjYjdMaW2XSDeIl3XP1ZXeRx66762K1bYKx
doiOmEj7GFD1J481AvmExWNiGZancveN29BG84UZrMjSW6t7qsH1E65yzBDu
.v8EB2qg7AlrFfXLdi0VLUm2yyRQ99S8mc+wcq9Szyr+vr069PFsIPNbqPmU
rQwFgv3rO57Yfe+mnC1Kb8ll9NcAgcvXG57Xf1G9Qo4m0TIwlby03M0lZe9K
k.eu9I7oEqmviF8dr3w7bm0sGB1aj2MM6+4YPUuKbucwOaERkkMN10aBys9q
zysRt5dY55tBX42j5XRvkHsI5iMBPyQSeuaJHooRvPbFlYbRVWdOxy9.JOmN
nm0K8k5n43feGrOD8a2xGRFdf8W3uk+B.GFkDWB4W2Omd9z90i.+5h8gbXMG
hdOcdN7s+B7G+KUcsiucJF9rqqWUe8Q+P95qqEkD+LY+lNUebIO2DszKZQdm
7vRl+h1af5hl38nZtlQYdo1n8QHUWS88.sqBKnaKXkYPyM238KV96uUwth5A
FSK2oOYMDYPm6y217adWlO3w5iQ5S3kw7EIiQqe1jet7npbN3QMZ8ZtrD5Un
2+wnyIYavFLNmMLJGL1FbcI66o7tuqoTHwU7aAXGv4Y5dN+2sfbvRVWcsE3b
CIqqlGjiPBeq1KReekh3xBwShVmCX5dQBsshPfQPST+.32lYmWQi4HbZcobp
nbpdmvoxkxo5WZNUQTNUTNUTNUTNUTNUTNUTNU++XNUqnbpnbpnbpNCbphnb
pnbpnbpnbpnbpnbpnbpnbpnbp9EkSULkSEkSEkS043r+IP4TQ4TQ4TQ4TQ4T
Q4TQ4TQ4TQ4T8qImJVJmJJmJJmpy.mJEJmJJmJJmJJmJJmJJmJJmJJmJJmpe
Q4TwQ4TQ4TQ4TcNddpnbpnbpnbpnbpnbpnbpnbpnbpnbp9EkSUQJmJJmJJmp
ywySEkSEkSEkSEkSEkSEkSEkSEkSEkS0unbpJQ4TQ4TQ4TcNddppP4TQ4TQ4
TQ4TQ4TQ4TQ4TQ4TQ4T8L4TEq0ejeGz28tjbiH4co3olXKJR9tUSUS4VQdIL
uFG6NFgf83PH9E4945JzZ82se3u22DUEZnF2EyifWxZnZMbtTnb2mp1ouiT7
5uWMIemuIJMRTEE6agPwtiAdb9Pr5YBY4BtiN8crNwpECbcx9t0hIKFeynlq
5dKj+xHHtfC96mZYz22mB3uCr4YU8gbDWJA43Awhw3J96hZ2VXbUcKbM2bJM
AQlmRF2OW8fxzGHcg+uSPlFGQlz1Jl4o0GwSPmyhMSkgJCUFpLTYnx7NRlci
aSxobEJWvdsobLn0Estn0EstdUqKFskH9UrZ1wu.tRz3ZTYnxPkgJCUFpLma
tR5sYQ6gIZ+.4458W4iYSyygVWz5hVWz55Uqt9tPM7dfgWOJEhbhaIWtyHDx
K8SHilNTQOgLwceZYXf5Iaew5hN+fCU6ZrdOwhXN9dhw7MZ7VpLTYnxrpI4+
Zej8klJCUFpLerjgD+OMlewb7ESh8SyCjVWz5hVWz55MrthZGgOCjbVqOm8O
uyepxv.qgsPOiAh8WznlAz98VgNas.mugX8Jo7V58uTO2YQ9GfiXZbFuSHVz
wjoUhPwmvYhjl+NUFpLusx3dFxgkhyTYnxbN2SQJGQZcQqKZcQqqOBbDq9Z9
LJxT32+sOk7y+42+sur9uJ35E3LywsvE+yKRK6uWe4OUXh4XGzEK7soyLK7k
7WBcqab46JxxcEaY1KYFatb9DyG1U9GLCuGK++8ezxb4EWi++tSmcQSuHmKD
ch7rcl+OlfprYSWD5L6BkYSG4XG9OFXFtm1+goyQU2evswUPs876mFhjva.t
8rt19pq3tzxoL2.6xEMK6Vhis70ktxpDq6.a1MQnr+.97E+6j+Jq70PXg4lQ
NCtapEREuyLLblmEn0ySgyTnrf4jISCMC8lN4tLHKq2T.fQq.mn41ylFDftF
a1kdvbFHO.D2QDBcUtCnFYs+wzjHyfENSWOfmMZmqo7lD4M2Ks09xdjHX5jg
Ycjn4g+2B6SJXLXV3SKV3pGvRTZO.M9CI+FOXfpfBAdSHcs+0Eo8.n9BsuGc
gjt1emhMSWLy1gHbAXj5OtovWtfkTQnqOvYdn2D7XSNg3tZSot2av.mI4GaJ
7HpAeXp2jv6HFY2rmq3FXNbddXrv.u4nAR7cvtU26Kufty0fhd0S1ct7I6N+
LzqmFl4N650Umjdgz9hmU85xSRuJe1wqRmhdc4ahZwcJpE2YUsJxcRCikN63
UQ1SQwJ9Bb6w8l31qHnnkepty0O+dyUuI8FtSxaYQtWvnC6aSG5pMcft+NzU
m8oAbmt6+2.Ei6jTryqGMtSKvD6YOf41wB2uhcy4ej7jhXV74OU952lYxEOU
X9LaWxcx1krmeEi6jTryLhcZo.7igXILzLe3gHmYySpZhNUXr4noyVaIWXr2
DxeWj72ybP7NI2Bwdtf4L668BA10KlQXQt7pxERt6oCblMYgWJkXrN.+u+OP
GjtN0
-----------end_max5_patcher-----------
</code></pre>


receiver

<pre><code>
----------begin_max5_patcher----------
1149.3oc6Z80iipBG84tI62AiO26DAUP2218qwjlFmJsCaToAocl8t49c+p3
epsSmAZKV0j9vX6.Jb33uyA3G8ue+ayreg8NI215GVOaMa1eKJYlrrxRl0Tv
L6zn2WkDkKuQ6UrzTRlvddckBx6BYEAsEskSxKtkHAkksjSVIp5g.mmblaA8
JuBvxqAO4Xsn4wxE+IgHap1VJaWJMKgHjcMns8iDqdklsoSaCAnm7KZPH9yZ
80rLQN8ekc.nDI0kSikcI6ke+OP7YGBG02kMSVTZEN+ImFkX8KVRbWDy1IZf
rirz+66eq7yhOle6zLVEM6i5OZFDBM.Mil.zLREM6B6QZFEX.Z1eBPy9JMM5
QV1yy.rr2Dfk8zyZtx4v3zLz41o4vI.K6pmyb+vxgFX9ufI.IC0yWteHYrAl
8aJ3JCzxUte3XObEGitAN1c7vwIz8jmDrMaJHjl1deDusq6T+ydKzymFTsBO
W4UTWtoBxh+rkTc+11Gp6ZWKcPyKhCMUGpFnwh4NlK6z07BVPP3KIYQuTEvz
VYdzdR7xHgfSeYmfb3a40rcCcWRmI6Hr0Mk2VQ2dHgksQAmez8m+JiKN2Cb1
6tgvgmqxzh3A4PqMT8jw9tz5WVr0qsmW7QA6sn9NqC4N7kqIFbS9azh2x15D
knR55pQfiOPFYJCebAeVfC19JhOtOBQ+E5MUdOKDOY2VJDhASagn+CgnwDhM
AN5IDCGuBQzB8VtWeKDOd+3esPD5LsEhnGBQyIDqCbzRHBAiWgHdgVaInu0g
GmwFE5P3zVGhenCMmNrNvQOcn63UGB0bKhdA8qP73b5oXkoSbgH7gPzbBw5.
G8VY5HVH5p4VD6YgX3kjpFuosNz8gNzX5vvKISM9iWYHPyMH1yxP7kjnlI99
CAOjgFSFhuj7zbm2dXF4sht8iGNTJMltlwSiDeN8PKOUoKhkvJMqfgRkLxWx
UNW3QBcHayW1I+.6E9qnCrMxO6IjjSb8Cklb3qhZP1i3CESqzNzyt6dWP1+l
1qw5gytwNKrp84DFpSBGNbzMkFmWYrh4c54EcMwBXAsbs7r7sPVXqfuf4lq3
O8Y1vuZKj9kLKpRxC.WkkGL7J87BMOIakw3QK6NivsDS5nj4.xIPQNej35tX
iOasFmL9qd3BSgrO76HVBfxJNgUxY63qZFY0SMa0AEwjbAMq01741Io5dSuR
iiIYGMfio4kRgXEZAsgkmNvpT5dmwUYrql.C9k.6sxdbKqvxYY0ad.3LUsNI
ZywlO8x.xS4.xU4.pW.luRfAFFfgTArxC1cH.FVIvvCCvfJAl+v.LWk.afB9
AJA1.D7Gni+GVou7Gr+BFF2OWyLbLNtfZMMi68GXfQJg4nEgAt6.CDNNILfV
B4SQ+8.X3QJggzhvF.f4ORILsVC+on+d.rQpoOPKSev82zGLRM8AZY5CF.Se
slL517Vq27ez1s6I775ltBR1oQ+lwOjXe6TZV0+WkWPaNYOM+nLiZGwW8JUP
VI1wqxvw6n5roZmxhI7rczlTPHwPwk+WgQjLe
-----------end_max5_patcher-----------
</code></pre>


javascript

Code: Select all

var splitter = {
   voiceNumber : 3
  ,chord     : []
  ,addStatus : false
}

splitter.newNote = function(note){
    // if note velocity different of 0 add note otherwise remove
  note[1] ? this.addNote(note) : this.delNote(note);
}

splitter.addNote = function(note){ 
  this.chord.push(note);  
  this.chord = this.chord.sort(function(a,b){
   return a[0] - b[0];
  });
 
  for (i = 1; i <= this.chord.length; i++){
   this.chord[i-1][2] = i;
  }
  if(this.voiceNumber == this.chord.length){
   this.output42();
  }
}

splitter.delNote = function(note){
  var chordArray = this.chord.concat();
   
  for (i = 0; i < chordArray.length; i++) 
  {  
    if(chordArray[i][0] === note[0])
    { 
	  post(this.chord[i][0], 0, this.chord[i][2]); 
      outlet(0, [chordArray[i][0], 0, this.chord[i][2]]);
      this.chord.splice(i, 1); 
    }
  } 
}
splitter.reset = function() 
{
  
  for (i = 0; i< this.chord.length; i++)
  {
    outlet(0, [this.chord[i][0], 0, this.chord[i][2]]);
  }
  this.chord = [];
}  

splitter.output42 = function(){ 
  for (i = 0; i < this.chord.length; i++){
   post(this.chord[i][0], this.chord[i][1], this.chord[i][2]);
   outlet(0, [this.chord[i][0], this.chord[i][1], this.chord[i][2]]);
  }  
}

/* MAIN */

inlets  = 2; // number of inlets
outlets = 1; // number of outlets

function note(note, vel)
{
  splitter.newNote([note, vel, false]);
}

function list(info, note, vel) 
{
  splitter.newNote([note, vel, false]);
}


function reset()
{
  splitter.reset();
}

function msg_int(i){
  splitter.voiceNumber = i;
}
"Where we're workarounding, we don't NEED features." - powermat

Post

found the last part, now it can detect the voice numbers in a give chord by
quickthresh
Fast chord detection

Description
quickthresh is a faster, low-latency, thresh-like object - optimized for chord detection."
https://docs.cycling74.com/max5/refpage ... hresh.html

so it's finally fully automate

Image

<pre><code>
----------begin_max5_patcher----------
7274.3oc6c01bhprs9yytp8+gTd+3LaNfwj3btehnf5dzYfHnhm5VSAHXTPM
aEIJ65b9seWqtADeKgjIShYNclZxKvhtW8Su50ar51+92+sOTvZ1JmEEN6ed
1+5rO7g+FtxGHWCuxGRtvGJLwbksu4BBgEl5b+LqwE9T78BbVEPt9cyctyY5
fyV3Djdy6LCruczzgeetic.saDtrLG+mNSnXI7GWdE98h7b7m8+k7PSWNY1x
.em.R+Ijb4QCHcCz2+gPwzdfRYv56bnMegBaZnEAq8IWtPgLs8nooMM4h+6e
+2veB+3S+vXvesbjsWvsycVbaNvfxEe9PPoWDDnzKNBrHX9n6lNKvIGi+yu.
+9Em+Xi+hGRD33i+QSAAP5OxORT7EGIh7Oa9rfyDdHfn3mEvAeoOeI24eF9p
D76OK3nH+CHO7omjLwKORjnYfLwbbv3hhjUBkJRDNt7hmklgKNQ0Lrb5cl1d
mweF+CJObEQkPIdxf+xhOqUFuzKMd4AiDn3gAiyK+YNAXQQ4h.hbEOWQdddA
32un7yRxf+EQx37WbvXxnAityb9hGTiYoKIlKO+Jh9hOWj6hGFAJe.D3pGQE
Q7+yHir8UdSEYVb1zYyM+Nv4O35GAhJjKn1Wd70O7GRU5kEd6Fl4wnw4wpII
RDOSyEBmxlKxk1ghB3Zfyuf5CwySkvUmnpD1Xr3gw.ApMR5nmpZ3gvfyODFb
YtrVbJXzH1KhG04RdZ7Eel.JkdVBFkNQ8hHACPaFNgNOr+TetDtB4hqHZH97
meV.w4mn.w3EmYe6r4C9t8slSm53OJxY9iuRQnLAEDnhHOUv3yuHXQp53Elg
NC9Nzv.S9cy.HtIqkAzfw+vF33CEbG46L0bBsMO5fFG0yApBbl+cfbKJOvSu
YLx+hNC7wyDJc9CB4mymQ6z4W9bf7GQ4zouUJApiHm+7MRcwIpMJTM7noObv
LDGTnAz7brMc9ItooPy4oKLCWD7e1biQN2GNZwHqQ9iBVu0L6LWWLAYjQAAT
1BSr8o4OZ1xg2tk+oVCmLafy1WBzD.q+ydozIGjaN6qfCybC78ev4H9OiFIh
ULVjmrJUnT4mVjEaRGGXfZAXVxLXzroaMtydiL8Os+H9oeNO0vcoKx146Myu
Xzvol93r9leC+u+nE6F2xS0S1rZli6s+muhMBcxE5iYlCVNczeszAF7vTGbo
Mf7YE9eyzYlKClkzNofvhol2s31YAGTGexXrPkqJ0NgvTs6gNyWDioESuHv7
ylm4N7o2IUtLoKovSxsmMezvQS2SvEjfRXhsoewRqz6nOcfi6noNC1bamIVN
CxNR+v18a7vMc7BB5KmOGDG9dVD4OReZnEmB1C2jY5se57.XGCydPXaKjCmY
2p4x.Z6tzZarqSasstQVzqwzEAyWNIiqaaifawK6JurCJ.qp7WBrzVr7trUB
QCFs3Ney0Gc3kPGwsj7QU5Rgc36sPdgstwnEVlS81+Avquv4xR6+DK7GAp4R
008uNKcMV16us118HxxelEY7bAu.DwXkV9leQjC9xUUoU093uIxEp8UopvuE
9Q5emyuZd0e0RpS+.3ADqqzdnmuoSqHyEhEMCz8MiDU3j6oarpU29KKIyIpo
vg8BmBuYjjroyPIx03xdMuCbMa89iUq0mqphn34xH6ouTsau4kktwySvXpZM
xy74+DelHyQKD5pbemdktuS+038p5B+mScYKg9N5iME77sVVpioWIYatpghc
z8sV6IXF.7qTUZe2rrPu+prD4Yf9k6Zbbn1s+Hje1qMT3pbtl8hFcLVU1SYU
YA60Xalo89pdWyagq4nW0XlZQyUk0aOSsCcLQ.E2177987ZTraKO4AdMniIx
bQZaKoMWpyf4dBVQYZaQEQ5XSTuWftrI.xWenwjlWMKO3uan4lxibiirbJO1
zQk2LDtmXSt1CaUy1w.vQ8hVdpv7V0PtqK2wNPUvZq4r5Ql7kjMVWVuCYbPt
nqxR8IliaUraWRe6dOd0MOeUxy+EI3hvuVoLrxTchEJ63oByaf7zpX4IZe4p
CXh0LftMXUX6Up.djYrcidGPdfWa1rtF.cWWMQF0QV4FceCuFcMBZ0wvokd+
KzE51pruMAKTRH7JCtF5F9.l3URnmWba4.Wasm+f8nUD3Ou7vebOH+MUsdN4
u4V4m+.ZEUTFohq6D51DjYHxSUUTVCqEm.WaQYYCO57C8QpV0XLvCqaUCw99
iyv6BfLOut7l4ct30R6rVu5Nq0IxCiGaNVWdfSiwVKsA4IP9tpjr8vLsuToN
8t89NFig0yKazs+E.VRV2KoYGA74JIACxZLswlCaHSjSP46HOgdCuWnqndM6
kp9VCsoxp3Z8Jk4UfwtUTit8lUhz1ZfLlEnff65nnt8v9+P76UisFiqK1rtT
yC4Ex7BP23T0igSDGq4Y.yyv3eDLm0FmGf00KMxmL3M5BVGRdkC3Oi7vebOL
+sJu72Wpke9CnMUGqDrl8dnOcOzZ.N8Rh3yFVQRKVmm3spvbokGHi0.zO7MP
NTqrrEYtMTq2Z0hckA8t7s5Zfxeh02nKoWF4kTcIdGRWDuNgGBc1RWTcxyGd
CBNh8B+wkMdXr+OktNeX+Ts54F6QZegjMhtLmxFJKyurARKW0ndQncmxRf+.
cI5.EqFg1hLBJqatDzKR3u5zmQTEVeCsEZq75wxFY3c6g22w1KiN9CqiR4H5
nTTFC5D7ZUDvCWtYpz6cMdqdfuC5cyzWPSSr2C5L3kQ65FAneCS2QttI0uoY
2Kai5w5.1gmg5iH1MCU3aLwB8GvwPq+bUXruQeunnhLQu4PvuEmVZ8FMDvRO
ptwM7gxMf7q57x9D8ZZR9VSzo9WbMmjlJzdQv0h1RWOQCJ4d6Men.FQ0Ef9S
2XN7yHc4CzmtwqIKRkAx11ts.6HdVKEOv83ZavAK+p1Jp6OtM7G1FIW4Z4zF
YjS9sQBz9BYC+X5O+wsgyosBzOB1tsKUV+l.feNGnoxgV6mZaTl3u6Vxl0QZ
z6EgxjfN2sVy0rZ+gkP83BT6xkkh0ampGWanZMPdeh4AjWA4RcvGaPllWCzk
JSku2PGWCPmr2vZY8cPaF3e4PPWCJuP6yMiMww61GHt62GVyYB7VJdLC3ez+
wC4maafGVA1R.YeiEnuIk2R2m6WDin3NrtXBOtVunY14S2oxJ8KK.91r05rq
9HpOcVm9ygXKbHqK5RhI.smIpbPYH55UXd1ylFqvxcW61jJqbDdkyUbbmkk6
P4uoF9z+84u8zrA6dsDmj4PuZlH1+J3yOt7eOe9mTAUzpH9yVegxx75S80OA
8EW+xouXXdiIQoe94Of1eR97K9.1SE20dZ0mf8TZx.TCj7gmGrMMLxbELt.8
Z1Gxu9MwI3oSzAzBwWcEdX8KLN5MgZGVaJDaKpOZsZr+GIWCVuixiD+Mcg9J
65xiYa8.zsmeY8+hBpGJq9DmVR1CAdbq4c3KBc7Z1y2zO3p5K9nhVuHIgtUj
D5MEjE1SuY0WGastg0NsW6L9m0ZmPkoftTL+INp3bgLpqhSCjqH5YaTzLjDy
YGi0HdWM0NVl0Efb0vN8B.484kkn1BU0GDl0uTfFEL+MvbMI2Ypz48z46pJo
1BSvBtcsQi8OmnN32FlipssIxQr0SsIKkY8c0cGef+kw4CJMORUe51leIwGR
aB5Vdx3yS2Gj2Vrq5o.1o79D6peJfctuOwtlmBXW36SrS4jPem36RrS6jPe2
6Srq2Ig9t2mXm0Ig9tmI1c.+QSduK4787onsI2Mto4fmjiw1AkkzWJRvbtlR
vXorGz1crWqKSeWKow4Kcv37MNT93so4I3aUxlm.oaHO+bMR9hjaFYF.X9JD
2vX9fwxLHNUDSaE2WGZL8sF0L15chVW2.iQb+7R90C62Oejov14.+7oGLG3d
ZdP7xWrGsUA9SOW7G2CxekGjS9q4U4m+.ZAiCsjsw3pbtWqWI56A.tFDqkMb
MdATVaSNvOR77bGId9Clm9p6lmdtGHuBtGIuBG9cIdv2uQSo9KsKBq4.403w
Wk3q0FdtwTcHbsa4as7dYyakvXxObb3T8F7JCaI22Ki9ijw.n2803cHdDYv8
eOLtix+6PDo8j+cHB5ow4Pev9.88m734N4Y8LGJ14puj1k3d1wNuqcFr+UT7
rFRzwuc9kyl2frqEEez72mYL8VZ2t9SGedx4A3MF6DOEvtpuOwtqOEvt5uOw
tJmBXWy2mXW0SArS48I1IcJfcZuOwN4SArq26Srq1o.1Y8LwtC3OZx6xuR4N
lgP7ajZHJtFg3f3Y155I4hXrh30MJZVrE9NNie+8K7MwXgtMNdbfOqHAQxGx
cSyRtUputY6lfq98VW1SwC7m2Qm2JodQdV7vUJhRpc5GU12xs2XPlnKlWkGi
WZE9yfWBUDU7.+oKKW+lxxlyONebMkOttoKX4rNDKoSCMCHV7t5o0c3gd+0E
ie2rxjZ8J60SjiZponN1S1dYiZ0WystIWbMM9WkDLKV1qGM2I0Hycw8OvGb2
LrUwtWq2AqON8j7ub8ghKNIdUrFfZl85Iqm3xTqk270vwUhysCe+.78e2Pfl
SFRMfyE2+W+xNOvoJp.x0XbZAh2jfGGkOZEyGq3V2xs45l2+hhG6T2KGa9HJ
d9Pocqy4ts45pGSt.0sro81fEtGLObuz00b6gHeqSjqo01Qx0307hwSvOLnu
xV6SPL6j5gp1V0UD9J12it8p+Ot.NCcibUmDXdF.di+9M4Ov02ve1Gqb7Zd7
pOBe4.+ZjBNu9ilWvGNuaGodE1Oua0eB4cq9UuX4ETIu4sjaV94Of1pGLOCh
uj1v4dt4Y3P0bAW0W970qbR3iyqQsR91hcJmDXm36Rry8j.6t9cI1EdRfcUd
WhcIk24aK1U88o9tSBrS58o9tSBrS98o9tSBrq1yD612ezmW71s0fqeODKID
ucKIYqM03vqer+pZgD+0ciz5Eli3d+oE+cUUQYLNSwaZOTrV8j7y75mKB2pR
i0LGZ24sGSZpJVQeh0ZLOUu07RjhHrFxDqm.WWMi4huM7fRitah0rUs2l7Dc
eG6IfNCWqIVfrJlC2ixGpZtsVoUo9p5sa51r8Ww7zD16Hqga97VC+UMEETWQ
j3JaP2mwR6ePbIB0gJjte2qenyBiL6KuVw6OGPGjpmQWP+nLY+xmrucfwkpn
Mel+NLcuhRvXIhNNQIk0eIhay8ZWpSObedICiOdxdcCy+jP20kkMEzE5tvS1
XVY9d39tYUYrNPDLCL.YzVx1qo7CUeZC8dfdTyEX9F.9BzOX5Az3ot09anZB
u3buF872nthxbPOcQC8dq75P2evD92UyCy4im.XqqcShcRrLlzkIWaHoVipl
sVizSq0HM2lKUpfXrQTCx4xA1O2jsVi5roViDWe00s.A01dpSrv8MDlWoFw7
cEZ9qRq4IJ9wwcP9PYO9n0RWnEZ5YNTrX2lwmMGWWsp4bPloiju0LIZcYQzk
VW2XMgGjsuuZE5YSRuCyWh6xWUW+k6OFeUeW9Ro4x5GCeB2Cet+AvmpGfON+
X7g117gLxGUGcz1Vdq11kz1qQ91pp4xFj8.DYsJZW5wv1J6gsg3VhKeXa8GX
NeOrM7Aj81GaidJXaOJ1VCVubKolrxmbUElbU9jqZpqVQWW8qsztAWLWaGcx
j7enriu4mq0aA92yUDo98KW+9naZtEFjLOSzCTCwdXreSSAv+XEIZcwRh3IV
2qtXMCv2WCbO3Fks16HmUQCSOKfpAwWvKRqQyiM+kT+.omwP1isVpWKtVMOx
7XRb+omsP7pq.aegzZ17Xymw1rbauD4cHt.eb+J26P6oujyyHZrBqH8UjYDX
u4aF9FqomqAI0enNDSh4HvmrRz90gVGycL8x79FRxMK855pAw3AMRx2Ldp2g
3IpQk2LdJ7f3T02TdRS7P3j7yimVeBJOs9DTdZ8In7z5SP4onSP4onSP4onS
P4onehxSSkdS4o9ujx37OIdJqbyV7T8iySw4BDn6OOTrtM0MFoS1e.82J2iD
eSTZyq1kVODM4Aebo07vM5B8V1nF85gQlI6YoJXM9HIaktekZFAOSGa7LD3O
0bM7aLxHpmbKeQ21C4Im4TWKEmuTWv+Xx4CIVmAsjLWFe9QhUivGqEx0VeRO
GQZdP2u1Nn9MgmqR736eGhmcub4FA93oGWyF.etLMVWAyUwmsJMKKDe1qf4v
TF8wO8bWAGaK0mXQpekd9Fqvwg5HiT+Pqiu2ArNT5ZLFla.rxN66guRRNbES
xsvwNeXB28YIyAw4PQeFOtONR2WEI4ukdc8wlwmWHD0a6KOEpUpjPul.FMYX
7YX0Vy+dJX8hs+YJDGWRdgbZUsOlSYLGRaOGPiuuEIuE52DH10FyGYZsDjb9
akQmLkVdX7UyhGyETZNn8hOOux9d2AbnU7Y8YK9dfOyj7XcMHyf445K5cF3b
OlyqNwXUhLF20RM0rWqVzbgX3MddYO+Nb254WWVR0ynS+.u3X33v5GiWSDvE
IrM23eOLepn2VJp6053g.xFe3w0M5szUbZnohzk5mN529QZqqOVa070nsbOZ
a8rFiVR8WdOJiFOGcJH6f4uprrAOnKEi67P0DjbYeqQzy3ExdyjVOPSLGQkk
T.8h8VmlKyPsPcpb1VmEUM0suMVG090T021TOfiGaFpWy10MxDyEGWTDPaMh
NI4Cs2v5EYtpEsNsH0vGM1zAAshOSn7pg4hIMGmsg9g76Yp4nvOtViugbx6E
J66shnhcS8RB1K.beo3sZnNv32uDAi258VkvyGXe5kc7T+IOdb2Y7D9DGOb6
bt5xoMsAL2g0g73Hi.Xd1Cq8OxYqkNHuHzaVx4EF1WvbGVqeXMdMNI1+lJwx
ja+9CSjoNj9RIP2qWbtZqVONGs3Yjz8YyKqt8PPdidtmc38JmpdW3Y6R12dR
kjMdn62DVa8WI0DYl1dUx6zCFeeUpiIEWB0lpOwvGWilblNKJooRwPxNGIMe
WatdO59pC8yoCtOh0WoiqwA8NDcH52riNjT7fnuvaG8E.NLN1tDpW2KCe935
0CEkhz5iymby0LJkQOBdFkNmTG57f99hVNpZF9.1LSkJGhqAOI0q9Zoi9YzV
cGJXNGqqQ778R+0BC+0Z93DxFz0RWA9Ci5zhqG.zdz16MCEbMtMner690hFy
Wr2s9hQpAE48O2+Tn5g8ZAsKDivrs1KNw9mAxHwuiSskD4X563XDH2FGeR6k
ImczXrev7Y3F40j5BA5aEQeC+lX7SP7fYrIEu+gDus4AikJt1zqfx3kkddw0
V80HtVWr9uHet.f6ef1v3NJiuV3dZZtdQC78Pi9sNC46l6LeDG+M94Q.tNlr
9r0lZER1S1LZqyKfXZKGut9Q7eFiGdc7dZHQmNpiIicytjOuERFyIw45pHVQ
unUDd9mlZ2kiY28mjNm8r6x8BK6T+oK6fu+VpsgiliK0kMJ1idFdf45fdtQh
4dfpyPa.VKBaVOIY4ouquse7aXNeRpYtr1fHKhZuYOlQiOoV85kw2G6Krc15
+fw5woC3tfoacPOC56e0mdrDaFOG9rE5mpeCbYOyhwZ0Spe5mW.1Pbhf+B3Y
DKVGac.4kkf9VZcWRwtH78g2Jacz.y2OA+Mhy8ipuQGiQpEImuz2.xliA8Oj
32xHWlMVnCu+pTz3gmMhddoPyS5QuuTaXMF8yYF3+aZaeqj8EyF+Z.booTed
HlObMpVY5YkqhntFECwD6uo1e1bcY5dz4bLVSAnc8v0ADegNV7Rw7IQeQicz
W.3PC59YkZuOCe9350mC50G5asjmTKP8dMzsW4EzWq2is0KQLU+2NFxhohES
EKlp7DS0JVLUrXpXwT8ZDSUSVLUrXpXwTwhohESEKlJVLUrXpXwT8qYLU39n
gESEKlJVLU+zioRgESEKlJVLUrXpXwTwhohESEKlJVLU+ZFS0MrXpXwTwho5
0HlJMVLUrXpXwTwhohESEKlJVLUrXpXwT8K59ohESEKlJVLUuFwT0iESEKlJ
VLUrXpXwTwhohESEKlJVLU+htepXwTwhohES0qQLUVrXpXwTwhohESEKlJVL
UrXpXwTwho5Wz8S0WYwTwhohES0qPLUtrXpXwTwhohESEKlJVLUrXpXwTwho
5oFSE4yfFd7ytbpuQDeojh17YoL8y4ypRiqp5Hhw0Tr6DcvWrFc6MWL8y6Fk
Qw5RQeDFS9b0V4lpPbNXbDNfbZxmWTfu68G6IzUr0lOiYIe9iVUUrgZDX6qn
YXYdCuRcLVA7dp+c6wSgUH7TKI6khE6lDaHWpM9JMWekm1P7yaa9jOqrgwnF
m1JHNOGaMi.XMG4yJUCJttFueOMBtVcGbMyZJc.ndLZN+ibGiFWH7Qx+DxAM
qNNMo8UqbvOp4flTayLZXzvngQCiFFMLZXz7qAMGvuORLIBVXrDx5rXTYsEq
sXsEqsXs0u5sUrsPdMa7cb3U1i1dspg4cSkzdp6zda8tFh6SFMLZXzvngQCi
FFMLZXzbRSiRC7cqoi0OXuHcAZsTj0mOlexr1h0Vr1h0Vr15W415ppVjZIgX
6iS7Ev9phtX0GkFmGmFNMfFkg9VCa00XS9YjTGB1rw2SQENOKrdWpEWCNncb
Z6PeOF0IuGCI0cvoL0lLWLVxngQCiFFM+WJMMWG+uxeiQCiFFMLZ9uBZh8eL
wmwr0.ScVMvvZKVawZKVawZKVa8H4Mx8Yr+u3zl1nau0539eWvbkpP2qw8Rd
R9cP9J95sw8wal8BHvWO79Vx8X6aovDq+OvdRJOznj5DwGY0ZLiFFMLZdeSS
dzGF8iQCCmYzvngQyIz9eJwmwxRsW1RneVeGY96yZKVawZKVawZKVakssBaG
RNeanumjJujmIObE98e6Cwe8u+8e6Sa9qBti7cl63V3r+4YIW6u2b6OTXp4D
G7lE95r4lE9T1agO5V296E4EtjuD+EbSLWsXp4c6S+clA2Rn++7OZYt5rqHe
2c17yZNJz4rpNgircV7OlhM17YKCblelx7YicrC9GCLCNP+e2rEXy8GBacGr
uWb6r.jhQCH8m0U1WdovEVNkDFXWpnYI2yE3Kc04WZcNu6.a9sQnz+.98y9+
h+qzquABKrvLzYv2mYgr32MCBlOxB35EIvYBTVvb5zYAlAilM86oPV5no..i
V9NgKrmOy2GuGe5stybNPO.DemRDdWgivFo8+CwIgl9KclsYBOc1NSWMZZ3n
EiR5sOc.J7mMcX5.IbQv+ovgnBlClG73jEr9NBEme.fl7Kw+jLYfMPA+QSoC
s+0YIi.n8BruEuQ7P6uSvlYKma6PIt.LS8GetvmNim1P38G3rHXzTxbSFhDt
baptczfANSyN2T3drCua1noAemJj84CbGWeygKxBiEFLZANQRdB9cFde5YLb
tBXzKezgyEO5v4mAe83vrvqNecYt3Kj6K9pxWWjK9pzqNdUJW7UwWc9577vW
W7lvVB4gsDN8PKgSSzR3UGsJJjK357Wc7pHedXrhOCiWBuIFuP0FkdrgyUO8
QykuIiFgbYyqnvyX1g+sY.c41lAO7.5xW8kAB42H9a.iIjKF60UilP9buf+U
2sGgb4ewme8mIykEyhO8kxW81rRtXdg4WY4RgbKWx+5yXB4hwdkQr74Bva.h
kG95GK9k3v+Mu6tPm4KhaYJGUXh43Yy2r.qvjQSo+cQ5eO2ASpA8QnKyJXN2
91QAN1AKmSSQwpKKUH9omMvY9zkiRx2BgGfu8+alsQHH
-----------end_max5_patcher-----------
</code></pre>

javascript

Code: Select all

var splitter = {
   voiceNumber : 3
  ,chord     : []
  ,addStatus : false
}

splitter.newNote = function(note){
    // if note velocity different of 0 add note otherwise remove
  note[1] ? this.addNote(note) : this.delNote(note);
}

splitter.addNote = function(note){ 
  this.chord.push(note);  
  this.chord = this.chord.sort(function(a,b){
   return a[0] - b[0];
  });
 
  for (i = 1; i <= this.chord.length; i++){
   this.chord[i-1][2] = i;
  }
 // post(this.voiceNumber);
  if(this.voiceNumber == this.chord.length){
   this.output42();
  }
}

splitter.delNote = function(note){
  var chordArray = this.chord.concat();
   
  for (i = 0; i < chordArray.length; i++) 
  {  
    if(chordArray[i][0] === note[0])
    { 
	  outlet(0, [chordArray[i][0], 0, this.chord[i][2]]);
      this.chord.splice(i, 1); 
    }
  } 
}
splitter.reset = function() 
{
  
  for (i = 0; i< this.chord.length; i++)
  {
    outlet(0, [this.chord[i][0], 0, this.chord[i][2]]);
  } 
  this.chord = [];
 
}  

splitter.output42 = function(){ 
  for (i = 0; i < this.chord.length; i++){
   outlet(0, [this.chord[i][0], this.chord[i][1], this.chord[i][2]]);
  }  
}

/* MAIN */

inlets  = 2; // number of inlets
outlets = 1; // number of outlets

function note(note, vel){
  splitter.newNote([note, vel, false]);
}

function reset(){
  splitter.reset();
}

function set(){
  splitter.voiceNumber = arguments.length; 
 // post(arguments.length);
}
phew ... :wheee:

ps. https://docs.cycling74.com/max5/vignett ... aurus.html is a very nice page for looking things or https://docs.cycling74.com/max7/vignett ... aurus.html :D
"Where we're workarounding, we don't NEED features." - powermat

Post

nice info and max4live project
Image

Post

nice tool for nora and live,
can we find it "ready to use"?
for max noob like me, it would be great !
(i have try to make like you do in your first vid but the javascrip,copy&paste,give me some error in the js chord splitter, now, you know, i'm a noob)
cheers.

Post

not gonna publish the device only versions, in this case u would never learn the basics of Max :D



created a video about the latest patch above(sry for the long saving loading etc. times), there is a very good intro series about it

Image https://www.macprovideo.com/tutorial/li ... -musicians

worth to learn it a bit ;)
"Where we're workarounding, we don't NEED features." - powermat

Post

thanks for the new vid, i will try !
i respect your way !

Post

thanks Xbitz,
finally, it start to works,
my copy and paste wasn't good :), i have some crash but it works
thanks again !

Post

It's a great progress with Live! Take this as an incentive: if any of you achieve to route different Nora tracks to different Live tracks (without using virtual ports) using built-in live tools, like Max4Live, I will reward it ;)

Post

depend on what does it mean "without using virtual ports" :clown: channel based one is quite easy based on the patch above >

Image

it needs to be wrapped into a Max device to able to use MIDI channels ... and the receivers based on it
"Where we're workarounding, we don't NEED features." - powermat

Post

it work without using virtual ports,
max 4 live became the "virtual port" and more !
let's reward xbits !

Post

Indeed, pm'ed :)

Post

unfortunately xbitz' screenshot is gone :(
the codes above describe a different use case. I just want to have a sender (Nora embedded) and a receiver, where I can enable the MIDI channels I want to receive. Obviously the receiver should work with several instances ;)

After 5 hours and countless crashes (both, Live 9.7.1 and Max 7) I gave up.

any help is highly appreciated

Post Reply

Return to “Hosts & Applications (Sequencers, DAWs, Audio Editors, etc.)”