Closed theModernSurrealist closed 2 years ago
@theModernSurrealist Thanks for reporting this issue. Which process are you using to build?
For what you describe I'd recommend to clone https://github.com/izzyreal/vmpc-workspace and run python build-workspace.py vs2022
. Then you get a VS project in the build
dir which allows editing of all the source code.
@izzyreal I am using MSVC and following the instructions in the README (conan install .. --build missing and conan build..) if that is what you mean by process. I will try vmpc-workspace now and see if that will work.
Thanks for the fast response!
I also have another question - is there a .jucer file I could use to modify the GUI a bit easier? If so, where can I download it?
The project is fully CMake-based I'm afraid, i.e. no Projucer involved. But I'd be happy to answer any questions you may have about the GUI code.
@izzyreal I am working on an audio sampler box based on your software - poor mans MPC. It needs to run on linux, plus the extra keyboard controls meant that I can essentially recreate the MPC workflow without the limitations it had by emulating keypresses via push buttons.
I wanted to run your software on this device, but I only wanted the screen portion as everything else could be controlled via MIDI or keyboard. Would you have any guidance on achieving this?
Yes. In fact, the project architecture is designed for such cases. The core of VMPC2000XL is mpc
: https://github.com/izzyreal/mpc
It is a static library that does nothing on its own. It needs a GUI or UI implementation. vmpc-juce
is one such GUI implementation, but I have already experimented with 2 others: https://github.com/izzyreal/vmpc-unreal-plugin and https://github.com/izzyreal/vmpc
For your purpose, you would probably want to use mpc
rather than vmpc-juce
. Unfortunately there is no clear API or documentation for how to create your own (G)UI implementation for mpc
. So it will take a bit of poking around in vmpc-juce
, which can be considered a reference implementation, and maybe you can draw some inspiration from the other GUI implementations (vmpc
and vmpc-unreal-plugin
).
I'm not sure how much guidance you need, but I'd be happy to have a video call with screen sharing where I walk you through some relevant stuff and answer any questions you have. I think for initial communication that would be the most efficient, and we can switch to email or Discord after.
I should also mention that depending on your requirements there may be way simpler solutions! But if it's the real MPC2000XL flow and functionality that you need, mpc
definitely fits the bill.
Wow, I really did not expect such an offer! Of course, any help at all would be extremely appreciated.
I understand what you mean. I am fairly competent in C++, but I am clueless when it comes to JUCE, hence my struggle with vmpc-juce. Ideally I am looking for the MPC workflow because I want to emulate the good times I had with my dad on the old MPC2000XL as well as bring back some of the more hands-on approach of making music, without relying on a computer that takes upwards of 10 minutes to start.
I am planning on running (V)MPC off of a Raspberry Pi 4 with a small 360p display connected to a powerbank as well as an MPD218. I am a bit confused however on the structure of VMPC2000XL. As far as I am aware: MPC is the core. It relies on ctoot, moduru and akaifat to run properly. VMPC-JUCE is the GUI portion, and is not necessary for MPC to run. Would I then have to use something such as Ncurses for CLI interfaces or cairo to create a frontend for the sampler?
Your offer to help would be greatly appreciated considering that there is no specific documentation for MPC (although the comments in the code greatly help) and it would be great to sort out a video call with screen sharing at some point in the near future.
Just out of interest, what simpler solutions do you have in mind?
Thanks so much!
Also, to build vmpc
, there is a missing conan remote.
In the readme, you've left
vmpc
is heavily unmaintained I'm afraid. I wouldn't spend too much time on getting it to build. You could browse the code using for example Sublime, or check some of the commit diffs on GitHub directly.
Simpler solutions: Depends on your requirements. From what I hear, I don't think simpler solutions would yield a close match. But if all you need is to trigger some samples, for example based on a text file that lists up to 16 absolute WAV file paths, you could write something from scratch with RtAudio and RtMidi for example.
Let's indeed do a video call then. Reach out to the below and we'll take it from there.
VMPC-JUCE is the GUI portion, and is not necessary for MPC to run.
True, but mpc
does need some (G)UI implementation -- something that instantiates the main entity mpc::Mpc
and directs host system user input to it.
The only entry points (executable targets) in the mpc
project are its unit tests. There are not many, but it does give some indication of how one would start out writing a (G)UI implementation. See for example https://github.com/izzyreal/mpc/blob/master/src/test/MainTest.cpp
Again, thanks for the speedy reply.
I understand now - thanks for the clarification. I will begin to study the unit tests, and work on implementing a GUI. I will probably do it in Ncurses because it will allow for faster speeds (no window manager), it being written in C++ and ease-of-use seeing as I am only looking to use the screen portion of the VMPC.
Also, how could I go about linking the Mpc.hpp file to the GUI code - would I call the features from that file or from the individual .hpp files in /src/main? Could I take inspiration from how JUCE links to the static library? Can we discuss this in the future video call?
I will go to sleep soon, but I am happy to arrange a video call soon. I'll drop you an email as soon as I can.
Thanks for the help.
You're more than welcome! Would love to see this come alive. I think it will be a somewhat bumpy ride, as you are the first besides myself to try this. Since I have intimate knowledge of the code base, I have a pretty clear idea of what code of mpc
is meant to interact with its consumer (i.e. a GUI implementation), and what code is for internal use only. But I consider what you want to do a very cool and valid use case of the mpc
project, so I'll try to assist where I can. With some patience I think we can make it work, and hopefully I will get a clearer picture of how to extract an API from mpc
and I can encapsulate things better for non-vmpc-juce
consumers. For example, it's about time mpc
gets one of those nice include
directories that expose the headers that are meant for external consumption.
Also, how could I go about linking the Mpc.hpp file to the GUI code - would I call the features from that file or from the individual .hpp files in /src/main?
Indeed most easily discussed in a call, but with a bit of luck I can work alongside your efforts to at least refactor the project into having an include
dir meant for external consumption.
I have sent you an email from [scrambled]@gmail.com to [scrambled].nl. Looking forward to speak with you soon!
I've scrambled our email addresses, since this is a public thread that scrapers can pick up on. I'll keep an eye out for your message.
Right! My apologies. Looking forward to speak soon.
It's all good :) Speak soon.
Hey guys,
I have gotten stuck compiling VMPC-JUCE with VS2022 on Windows 11 x64. The standalone binary work fine on my system, but I wanted to poke around the source code, and make some adjustments for fun. On the final stage of building, the command "conan build ..", I get a hefty error block - https://pastebin.com/4R3YdS1V
Yeah. Apparently the problem is with juce_audio_plugin_client_Standalone.obj and unresolved externals. What should I do? I have tried build_type in the conan profile, changing debug and release from within VS and manually setting the _ITERATOR_DEBUG_LEVEL in the files. In the file juce_audio_plugin_client_Standalone.obj, there is an error message reading
To compile AudioUnitv3 and/or Standalone plug-ins, you need to add the juce_audio_utils module!
Could this be the issue, and if so, how would I go about resolving it?Thanks in advance and for this amazing piece of software.