OSCReceiverWrapper.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. /*
  2. ==============================================================================
  3. OSCReceiverWrapper.cpp
  4. Created: 5 May 2025 2:34:15pm
  5. Author: Luigi
  6. ==============================================================================
  7. */
  8. #include "OSCReceiverWrapper.h"
  9. OSCReceiverWrapper::OSCReceiverWrapper(int port, juce::AudioProcessor* pluginProcessor) {
  10. this->pluginProcessor = (CMLSProjectAudioProcessor*)pluginProcessor;
  11. if (!this->connect(port)) {
  12. this->oscConnectionError();
  13. }
  14. }
  15. OSCReceiverWrapper::~OSCReceiverWrapper() {}
  16. void OSCReceiverWrapper::oscMessageReceived(const juce::OSCMessage& message)
  17. {
  18. if (!message.isEmpty() && message.size() == 1) {
  19. auto address = message.getAddressPattern().toString();
  20. auto argument = message[0].getFloat32();
  21. if (address == "/r") {
  22. // Unused
  23. }
  24. else if (address == "/g") {
  25. // Unused
  26. }
  27. else if (address == "/b") {
  28. // Unused
  29. }
  30. else if (address == "a") {
  31. // Unused
  32. }
  33. // Pen types are used to manage the presets
  34. else if (address == "/pen") {
  35. // Unused
  36. }
  37. else if (address == "/pencil") {
  38. this->currentPreset = Preset::PENCIL;
  39. }
  40. else if (address == "/marker") {
  41. // Unused
  42. }
  43. else if (address == "/monoline") {
  44. // Unused
  45. }
  46. else if (address == "/crayon") {
  47. this->currentPreset = Preset::CRAYON;
  48. }
  49. else if (address == "/fountainPen") {
  50. // Preset #3
  51. }
  52. else if (address == "/waterColor") {
  53. this->currentPreset = Preset::WATERCOLOR;
  54. }
  55. else if (address == "/bitmapEraser") {
  56. }
  57. else if (address == "/vectorEraser") {
  58. }
  59. else if (address == "/canvasWidth") {
  60. }
  61. else if (address == "/canvasHeight") {
  62. }
  63. else if (address == "/drawingWidth") {
  64. this->thickness = argument;
  65. }
  66. else if (address == "/eraserWidth") {
  67. }
  68. // Value assignment
  69. else if (address == "/x") {
  70. }
  71. else if (address == "/y") {
  72. }
  73. else if (address == "/pressure") {
  74. }
  75. else if (address == "/aspectX") {
  76. this->aspectX = argument;
  77. this->processMessage();
  78. }
  79. else if (address == "/aspectY") {
  80. this->aspectY = argument;
  81. this->processMessage();
  82. }
  83. }
  84. }
  85. void OSCReceiverWrapper::oscConnectionError()
  86. {}
  87. void OSCReceiverWrapper::processMessage() {
  88. if (this->currentPreset == Preset::PENCIL) {
  89. this->pluginProcessor->setReverbRoomSize(this->aspectY + 0.5);
  90. }
  91. else if (this->currentPreset == Preset::CRAYON) {
  92. this->pluginProcessor->setDelayAmount(this->aspectX + 0.5);
  93. this->pluginProcessor->setReverbDryWet(this->aspectY + 0.5);
  94. }
  95. else if (this->currentPreset == Preset::WATERCOLOR) {
  96. // Changing parameters of single effects
  97. if (this->thickness <= 6) { //EQ
  98. this->pluginProcessor->setEqLowGain(this->aspectX + 0.5);
  99. this->pluginProcessor->setEqHighGain(this->aspectY + 0.5);
  100. }
  101. else if (this->thickness <= 12) { // Dist
  102. this->pluginProcessor->setDistortionDrive(this->aspectY + 0.5);
  103. this->pluginProcessor->setDistortionMix(this->aspectX + 0.5);
  104. }
  105. else if (this->thickness <= 18) { // Chorus
  106. this->pluginProcessor->setChorusAmount(this->aspectY + 0.5);
  107. this->pluginProcessor->setChorusDryWet(this->aspectX + 0.5);
  108. }
  109. else if (this->thickness <= 24) { // Reverb
  110. this->pluginProcessor->setReverbRoomSize(this->aspectY + 0.5);
  111. this->pluginProcessor->setReverbDryWet(this->aspectX + 0.5);
  112. }
  113. else if (this->thickness <= 30) { //Delay
  114. this->pluginProcessor->setDelayAmount(this->aspectY + 0.5);
  115. this->pluginProcessor->setDelayDryWet(this->aspectX + 0.5);
  116. }
  117. }
  118. }