diff --git a/src/midi-node.h b/src/midi-node.h index 5128f67..e28e6af7 100644 --- a/src/midi-node.h +++ b/src/midi-node.h @@ -404,10 +404,30 @@ namespace VISEQ::GRAPH::NODES { std::vector conns; std::ranges::transform(N.connections.begin(), N.connections.end(), std::back_inserter(conns), [](VISEQ::GRAPH::EDGES::SPTR_Edge e){ return e->id;}); std::map noteHandles; - //std::ranges::transform(N.midiNoteHandles.begin(), N.midiNoteHandles.end(), std::back_inserter(noteHandles), [](std::shared_ptr> n){ return n->position;}); + std::map CCHandles; + std::map PCHandles; + std::map pitchBendHandles; + std::map aftertouchHandles; + std::map polyPressureHandles; + for(auto i : N.midiNoteHandles){ noteHandles.insert(std::make_pair(i->name, i->position)); } + for(auto i : N.midiCCHandles){ + CCHandles.insert(std::make_pair(i->name, i->position)); + } + for(auto i : N.midiPCHandles){ + PCHandles.insert(std::make_pair(i->name, i->position)); + } + for(auto i : N.midiPitchBendHandles){ + pitchBendHandles.insert(std::make_pair(i->name, i->position)); + } + for(auto i : N.midiAftertouchHandles){ + pitchBendHandles.insert(std::make_pair(i->name, i->position)); + } + for(auto i : N.midiPolyPressureHandles){ + polyPressureHandles.insert(std::make_pair(i->name, i->position)); + } j = json{ {"id", N.id}, @@ -421,11 +441,11 @@ namespace VISEQ::GRAPH::NODES { {"midiAftertouch", N.midiAftertouch}, {"midiPolyPressure", N.midiPolyPressure}, {"midiNoteHandle", noteHandles}, - /*{"midiCCHandle", N.midiCCHandles},*/ - /*{"midiPCHandle", N.midiPCHandles},*/ - /*{"midiPitchBendHandle", N.midiPitchBendHandles},*/ - /*{"midiAftertouchHandle", N.midiAftertouchHandles},*/ - /*{"midiPolyPressureHandle", N.midiPolyPressureHandles},*/ + {"midiCCHandle", CCHandles}, + {"midiPCHandle", PCHandles}, + {"midiPitchBendHandle", pitchBendHandles}, + {"midiAftertouchHandle", aftertouchHandles}, + {"midiPolyPressureHandle", polyPressureHandles}, {"connections",conns}}; } @@ -443,13 +463,43 @@ namespace VISEQ::GRAPH::NODES { j.at("midiPitchBend").get_to(N.midiPitchBend); j.at("midiAftertouch").get_to(N.midiAftertouch); j.at("midiPolyPressure").get_to(N.midiPolyPressure); - /*j.at("midiNoteHandle").get_to(N.midiNoteHandles);*/ - /*j.at("midiCCHandle").get_to(N.midiCCHandles);*/ - /*j.at("midiPCHandle").get_to(N.midiPCHandles);*/ - /*j.at("midiPitchBendHandle").get_to(N.midiPitchBendHandles);*/ - /*j.at("midiAftertouchHandle").get_to(N.midiAftertouchHandles);*/ - /*j.at("midiPolyPressureHandle").get_to(N.midiPolyPressureHandles);*/ + std::map noteHandles; + std::map CCHandles; + std::map PCHandles; + std::map pitchBendHandles; + std::map aftertouchHandles; + std::map polyPressureHandles; + + j.at("midiNoteHandle").get_to(noteHandles); + j.at("midiCCHandle").get_to(CCHandles); + j.at("midiPCHandle").get_to(PCHandles); + j.at("midiPitchBendHandle").get_to(pitchBendHandles); + j.at("midiAftertouchHandle").get_to(aftertouchHandles); + j.at("midiPolyPressureHandle").get_to(polyPressureHandles); + + N.midiNoteHandles[0]->position = noteHandles["NOTE"]; + N.midiNoteHandles[1]->position = noteHandles["CHANNEL"]; + N.midiNoteHandles[2]->position = noteHandles["GATE"]; + N.midiNoteHandles[3]->position = noteHandles["VELOCITY"]; + + N.midiCCHandles[0]->position = CCHandles["CONTROL"]; + N.midiCCHandles[1]->position = CCHandles["CHANNEL"]; + N.midiCCHandles[2]->position = CCHandles["VALUE"]; + + N.midiPCHandles[0]->position = PCHandles["PROGRAM"]; + N.midiPCHandles[1]->position = PCHandles["CHANNEL"]; + N.midiPCHandles[2]->position = PCHandles["VALUE"]; + + N.midiPitchBendHandles[0]->position = pitchBendHandles["CHANNEL"]; + N.midiPitchBendHandles[1]->position = pitchBendHandles["VALUE"]; + + N.midiAftertouchHandles[0]->position = aftertouchHandles["CHANNEL"]; + N.midiAftertouchHandles[1]->position = aftertouchHandles["VALUE"]; + + N.midiPolyPressureHandles[0]->position = polyPressureHandles["CHANNEL"]; + N.midiPolyPressureHandles[1]->position = polyPressureHandles["VALUE"]; + N.midiPolyPressureHandles[2]->position = polyPressureHandles["NOTE"]; //j.at("connections").get_to(N.connections); } };