const path = require('path');
const fs = require('fs');
const midi = require('midi');
const axios = require('axios');

const input = new midi.Input();

// Définir le nombre de ports MIDI disponibles et choisir un port.
const portCount = input.getPortCount();
console.log("Nombre de ports MIDI disponibles :", portCount);

// Parcourir les ports pour trouver ton appareil
for (let i = 0; i < portCount; i++) {
  console.log(input.getPortName(i));
}

// Ouvre le port MIDI (remplacer '0' par le numéro de port de ton appareil)
input.openPort(0);

// Chargement de la configuration
const config = JSON.parse(fs.readFileSync('config.json', 'utf8'));

input.on('message', async (deltaTime, message) => {
  console.log(`Message reçu, deltaTime: ${deltaTime}, message: ${message}`);
  
  // Cherche une correspondance dans la configuration
  const mapping = config.midiToApiMappings.find(mapping => 
    JSON.stringify(mapping.midiMessage) === JSON.stringify(message)
  );
  
  // Si une correspondance est trouvée, exécute la requête API
  if (mapping) {
    try {
      const response = await axios.get(mapping.apiUrl);
      console.log(`Requête API réussie : ${response.statusText}`);
    } catch (error) {
      console.error(`Erreur lors de la requête API : ${error.message}`);
    }
  }
});