-
Notifications
You must be signed in to change notification settings - Fork 2
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
Need some guidance #2
Comments
Hi @juanmartin, thanks for your message and for trying to get Shepherd running!
{
"type": "input",
"name": "Push",
"shortName": "Push",
"midiInputDeviceName": "YOUR_PUSH_MIDI_PORT_NAME",
"controlChangeMessagesAreRelative": true,
"notesMapping": "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1",
"controlChangeMapping": "-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,64,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1"
} (if this works, I'll document that better). Let me know how it goes and thanks a lot! |
Hey @ffont thank you for your answer!
{
"metronomeMidiDevice": "Steinberg UR44 Port1",
"metronomeMidiChannel": 16,
"midiDevicesToSendClockTo": [],
"pushClockDeviceName": "Ableton Push 2 Live Port"
}
[
{
"type": "input",
"name": "Push In",
"shortName": "Push IN",
"midiInputDeviceName": "Ableton Push 2 Live Port",
"controlChangeMessagesAreRelative": true
},
{
"type": "output",
"name": "placa out",
"shortName": "placa out",
"midiChannel": 1,
"midiOutputDeviceName": "Steinberg UR44 Port1",
"controlChangeMessagesAreRelative": true
}
] Using macOS Monterey for now, I'll test my rpi setup later. Still getting to know the workflow, so a couple of new questions maybe you can help me with:
So in conclusion only thing I'm missing is how to filter out unwanted notes. Again, thank you for your great work and availability :D 🚀 |
Hi @juanmartin , sorry for the late reply. The issue you're having with the notes mapping makes sense. The way shepherd in which Push2 communication works is through MIDI. The Python app talks to Push via MIDI and this is how it receives information about the pads and encoders that are touches/rotated, etc. However, to use push to play notes it is better to also send the MIDI messages from Push directly to the shepherd backend so we don't add any extra latency. The problem is that Shepherd needs to know how to interpret this MIDI messages and to which notes they should correspond. This is what the Looking at your config file, I think that the problem is that the push device should be named
Let me know if that change fixes it :) |
OK man, got it working now!! thanks a lot 🚀 Just a few more questions:
Are there plans for:
As soon as I have capacity I'm willing to take a more in-depth look at the project and see if I can collaborate with you on this. That is, if you are interested in maintaining the project, of course. |
That is amazing :) The flickering of the buttons is because of a bug that I have not addressed. Basically there will be several parts of the UI script trying to update this button, and "if/else" missing somewhere. If you have looked a bit into the code you might have noticed that Shepherd is dividend in the backend part (the JUCE C++ code) and the frontend part (the Python script). The communicate with each other via WebSockets and this is how the Python script maintains "a copy" of the current state of the backend and it can show information to the user. All the detailed communication with Push happens in the Python script, and the backend does not know anything specific about push, but it also does receive its MIDI and the frontend tells the backend how to treat it (this To implement new scales, that should happen in the Python script part and should not be complicated. Basically the script needs to know which is the active scale to colour pads accordingly and has to send a new For the arpeggiator, it should be implemented as a "MIDI effect" in the backend. I have thought about it some times, but so far there's nothing implemented for MIDI effects. We would need to define a new type of class for I don't have any specific roadmap for the project, but I'd be happy to continue working on it if other people wants to contribute as well. In fact, lately I've been merging this project with another project I worked on which is a sampler called Source (see https://github.com/ffont/source). This adds capabilities for loading sounds into the different tracks so that Shepherd does not need external gear to make music. Nevertheless the integration is very raw so far. This integration compiles the backend part of the sequencer from this repository, but the frontend code is duplicated because I made changes and added some stuff only relevant to the sampler part. This I don't like it, I might actually move the whole python script folder to a new repository that can be shared between both projects. In this way all improvements that happen in Shepherd alone and in Shepherd+Source are shared. Anyway, sorry for the long explanations. If you want to get involved let me know and let's talk about it. |
I followed your explanations, thanks for that, it gives context :) I'll give the code a better look now and see what I can make out of it. |
Hi @juanmartin, sorry for the late reply, my notification for this message was buried. There is a way to compile Source which already includes Shepherd in it, and then you run a python script which is very similar to the one you are already running in Shepherd. You should follow the steps to compile Source (they are similar to Shepherd so it should not be difficult), but running That said, there are many details that should be understood for this to work in a more consistent way and the integration is not very advanced so it is not easy. If you want, we can have a videocall so I can tell you more. |
Hi @ffont
Thank you for your great work. Found this project when I had the idea of doing something similar but using a Teensy for a more bare metal feeling, closer to a hardware device.
I was able to compile it both in a Raspberry Pi 4 and my Macbook Pro running macOS 12.6.1
Connected my Push 2 and a Steinberg audio inteface that provides MIDI I/O, worked on both rpi and mac sending a sequence (of unknown origin lol) to a hardware synth.
The problem I'm having is that I can only get some notes to play that are saved somewhere I don't know every time I hit play.
I cannot play MIDI notes from Push to my audio interface midi out port.
These are my configs:
hardwareDevices.json
backendSettings.json
I can also use the simulator (only on macOS, I think I could not access to the rpi one because of network problems).
Also, after trying with a hardware synth, I looped the MIDI out cable from my audio interface back in and monitored the messages that the simulator would send to see if they were received in my audio interface again, but no.
As you can see, some messages do return, but those are only occurring while the sequencer is playing, and as I said before, I cannot seem to find where that sequence is recorded and how to modify it.
I cannot play individual notes and get it to send MIDI to my devices or back to my audio interface.
So anyway, I think I might be quite close to get it to work fully, but I think better usage instructions could be made. I can sure help submitting PRs for documentation once I understand everything and get it to properly work.
Let me know if something wasn't clear enough, and again, thank you!
The text was updated successfully, but these errors were encountered: