Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ManyAddresses NoteButtonLatched #237

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

zeysh
Copy link

@zeysh zeysh commented Jul 10, 2020

Hi Pieter,

I tried to create the ManyAddressess::NoteButtonLatched class, but got some errors...

Here the code I use to test

#include <Control_Surface.h>
 
// :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: //
 
// Instantiate a MIDI over USB interface.
USBMIDI_Interface midi;
 
using namespace MIDI_Notes;
 
// Function buttons
// Create a Bank object to select one of three modes (REC, MUTE, SOLO)
Bank<3> bank;

// Create a Selector object that reads a push button connected to pin 10
// to select which mode is active.
IncrementSelector<3> pushbutton = {bank, 10};

Bankable::ManyAddresses::NoteButtonLatched<3> button = {
  bank, // bank selects active address
  7,    // push button pin
  {{    // addresses
    MCU::REC_RDY_1,
    MCU::MUTE_1,
    MCU::SOLO_1,
  }},
};

void setup() {
  Control_Surface.begin(); // Initialize Control Surface (calls button.begin())
}
 
void loop() {
  Control_Surface.loop(); // Update the Control Surface (calls button.update())

  // Function button
  static setting_t prevSetting = -1;
  setting_t setting = bank.getSelection();
  if (setting != prevSetting) {
    const char *mode;
    switch (setting) {
      case 0: mode = "REC"; break;
      case 1: mode = "MUTE"; break;
      case 2: mode = "SOLO"; break;
      default: mode = "<invalid>";
    }
    Serial.println(mode);
    prevSetting = setting;
  }
}

Compilation errors:

In file included from /home/red/Arduino/libraries/Control-Surface/src/Control_Surface.h:69:0,
                 from /home/red/Arduino/projets/MIDI/MIDI_MCU_ManyAddresses/MIDI_MCU_ManyAddresses.ino:2:
/home/red/Arduino/libraries/Control-Surface/src/MIDI_Outputs/ManyAddresses/NoteButtonLatched.hpp:27:99: error: type/value mismatch at argument 1 in template parameter list for 'template<unsigned char NumBanks, class BankAddress, class Sender> class CS::Bankable::MIDIButtonLatched'
     : public Bankable::MIDIButtonLatched<ManyAddresses<NumBanks>, SingleAddress, DigitalNoteSender> {
                                                                                                   ^
/home/red/Arduino/libraries/Control-Surface/src/MIDI_Outputs/ManyAddresses/NoteButtonLatched.hpp:27:99: note:   expected a constant of type 'unsigned char', got 'CS::Bankable::ManyAddresses::ManyAddresses<NumBanks>'
/home/red/Arduino/libraries/Control-Surface/src/MIDI_Outputs/ManyAddresses/NoteButtonLatched.hpp: In constructor 'CS::Bankable::ManyAddresses::NoteButtonLatched<NumBanks>::NoteButtonLatched(const CS::Bank<N>&, AH::pin_t, const AH::Array<CS::MIDIAddress, NumBanks>&, uint8_t)':
/home/red/Arduino/libraries/Control-Surface/src/MIDI_Outputs/ManyAddresses/NoteButtonLatched.hpp:50:86: error: type/value mismatch at argument 1 in template parameter list for 'template<unsigned char NumBanks, class BankAddress, class Sender> class CS::Bankable::MIDIButtonLatched'
         : MIDIButtonLatched<ManyAddresses<NumBanks>, SingleAddress, DigitalNoteSender>{
                                                                                      ^
/home/red/Arduino/libraries/Control-Surface/src/MIDI_Outputs/ManyAddresses/NoteButtonLatched.hpp:50:86: note:   expected a constant of type 'unsigned char', got 'CS::Bankable::ManyAddresses::ManyAddresses<NumBanks>'
/home/red/Arduino/libraries/Control-Surface/src/MIDI_Outputs/ManyAddresses/NoteButtonLatched.hpp:51:31: error: expected ';' before '}' token
               {bank, addresses}, pin, {velocity}} {}
                               ^
/home/red/Arduino/libraries/Control-Surface/src/MIDI_Outputs/ManyAddresses/NoteButtonLatched.hpp:51:32: error: expected primary-expression before ',' token
               {bank, addresses}, pin, {velocity}} {}
                                ^
/home/red/Arduino/libraries/Control-Surface/src/MIDI_Outputs/ManyAddresses/NoteButtonLatched.hpp:51:39: error: expected primary-expression before '{' token
               {bank, addresses}, pin, {velocity}} {}
                                       ^
/home/red/Arduino/libraries/Control-Surface/src/MIDI_Outputs/ManyAddresses/NoteButtonLatched.hpp: In instantiation of 'CS::Bankable::ManyAddresses::NoteButtonLatched<NumBanks>::NoteButtonLatched(const CS::Bank<N>&, AH::pin_t, const AH::Array<CS::MIDIAddress, NumBanks>&, uint8_t) [with unsigned char NumBanks = 3u; AH::pin_t = short unsigned int; uint8_t = unsigned char]':
/home/red/Arduino/projets/MIDI/MIDI_MCU_ManyAddresses/MIDI_MCU_ManyAddresses.ino:27:1:   required from here
/home/red/Arduino/libraries/Control-Surface/src/MIDI_Outputs/ManyAddresses/NoteButtonLatched.hpp:51:20: warning: left operand of comma operator has no effect [-Wunused-value]
               {bank, addresses}, pin, {velocity}} {}
                    ^
/home/red/Arduino/libraries/Control-Surface/src/MIDI_Outputs/ManyAddresses/NoteButtonLatched.hpp:51:16: warning: right operand of comma operator has no effect [-Wunused-value]
               {bank, addresses}, pin, {velocity}} {}
                ^
Error compiling for board Teensy 4.0.

If you have any idea.

Many thanks!

@tttapa
Copy link
Owner

tttapa commented Jul 10, 2020

I'll have a detailed look at it tomorrow, but I think the template parameter's you're using are incorrect, having both ManyAddresses<NumBanks> and SingleAddress seems wrong. I think it should be NumBanks, ManyAddresses<NumBanks>, but I'm not sure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants