Hi,
I just got my first Pico delivered and will start building a custom MIDI controller. I want to use this quite simple project to learn the principles of multi-threading and PIO. This is what I have in mind:
Core 0:
1. Read the value from 16 potentiometers connected via a 74HC4067 multiplexer.
2. Perform some maths on the pot values to calculate the actual values that will be sent over MIDI.
Core 1:
1. Receive MIDI instructions.
2. Send the calculated values from the potentiometers as MIDI CC in response to the received MIDI instructions.
Questions:
- Does this division of tasks make sense? I understand that multi-threading is not strictly necessary for this simple task, but I want to learn.
- Is there a way the PIO can be used to increase the efficiency? For example in reading values through the multiplexer, or handling the MIDI bytes?
- In the next step I will get a Pico W to be able to run a simple web server to configure the controller. How would you then split the tasks across the cores? The whole analogread-calculate-midihandler on one core, and the web server configurator on the other core?
I just got my first Pico delivered and will start building a custom MIDI controller. I want to use this quite simple project to learn the principles of multi-threading and PIO. This is what I have in mind:
Core 0:
1. Read the value from 16 potentiometers connected via a 74HC4067 multiplexer.
2. Perform some maths on the pot values to calculate the actual values that will be sent over MIDI.
Core 1:
1. Receive MIDI instructions.
2. Send the calculated values from the potentiometers as MIDI CC in response to the received MIDI instructions.
Questions:
- Does this division of tasks make sense? I understand that multi-threading is not strictly necessary for this simple task, but I want to learn.
- Is there a way the PIO can be used to increase the efficiency? For example in reading values through the multiplexer, or handling the MIDI bytes?
- In the next step I will get a Pico W to be able to run a simple web server to configure the controller. How would you then split the tasks across the cores? The whole analogread-calculate-midihandler on one core, and the web server configurator on the other core?
Statistics: Posted by halund — Thu Jul 11, 2024 10:47 am — Replies 0 — Views 36