I am trying to build a Tenori-On like program for OS X [and maybe others]. I am working through Haydxn’s tutorial PDF to learn Juce but i don’ t know how up to date that is.
Unfortunately, and PDF doesn’t cover the Audio/MIDI side of Juce [which attracted me to Juce]. So is there a tutorial / example on how to use Juce’s MIDI APIs? I tried looking at the Plugin Host example app, but I couldn’t find anything in the code relating to MIDI specifically, especially sequencing, even thought the app can make use of MIDI for the plug ins.
Also is there is general repository for Juce tutorials and examples, I may have missed? I am familiar with C++, but I am not the best at learning new frameworks by deconstructing existing code and code puzzles, which seem to be the case with Haydxn’s PDF and the included Juce examples.
Actually, that is an answer I can understand and respect.
Saying you have not had the time to make tutorials/example them yet is a better response because it is one people can empathize with.
I am put off by a lot of OSS because the typical response to a newbie’s question is the typical “Figure it out yourself from what is there” response, which annoys the crap out of me. People need to get work done, they don’t have time to understand every little detail. I cannot understand why the OSS world cannot figure out to get people to adopt OSS more you have to make everything about OSS, including the code easily to understand and accessible to the common idiot like myself. It is part of reason Microsoft [and Apple to some extent] continues to win out. [Although, I will admit the Juce header and implementation files are significantly better documented then most OSS code I have come across.]</END RANT>
Back to topic. After I read some of the code, I am sort of starting to get a handle. If you can answer a couple yes or no questions that may help.
Does one need to create a Juce_MIDIInput or Juce_MIDIOutput to use the MIDI classes?
Do MIDIMessages have to be put into MIDISequences for the MIDIBuffers to play back?
From reading all the MIDIMessage constructors, and noted the the timeStamp doesn’t have a particular value associated with it. Does that make we have to build some sort of clock mechanism for playback of MIDI messages in time? [I am guessing this since the MIDISequence class does not seem to have a ‘Tempo’ function.]
I will probably have others, but those would be a helpful start.
I totally agree with your rant, and I wish I had the time/resources to create lots of tutorials and demos!
The midi input and output are for actual hardware ins and outs - if you’re writing a plugin, then you won’t need them, but if you want your app to talk to external devices, then you do.
All the classes like MidiMessage, sequences and buffers are just building blocks, and there’s no fixed way in which you’re supposed to use them. Hence the fact that the time stamps can be whatever you want - it’s context dependent. Some people may put seconds in there, other people might store a different type of timestamp. It really depends entirely on what you’re trying to do.
I have to agree with Jules. He needs to spend his time where his considerable skills will have the best benefit, and thats improving Juce. I rather have additional platforms supported (like Android) instead of a tutorial for a narrow part of the library. Using Juce is like hiring an additional programmer, an army of beta testers, and a support forum for an extremely small one time fee (or no fee if you’re GPL)!!! WOW!
The best MIDI Example / Tutorial would of course come in the form of well documented source code to a Juce application that exercises all of the functions of MIDI, perhaps ForeverTangent or someone can write such an application? It would be a great learning example! While you are developing this demo program you can always ask questions in the forum.
When you’re done you can post it on Google code, like I did with my DspFilters Juce Demo / IIR Library:
There are a couple of nice sample programs using the MIDI classes in Juce, I’m currently working through this too, and have fully functional MIDI input working from these.
PS yosvaniscc I look forward to seeing your MIDI tutorial
I’ve just cracked using custom graphics on slider controls, and once I’ve tidied up the code I’ll whip up a tutorial for that, there seems to be a lot of requests for it.
[attachment=0]Sliders.png[/attachment]
Jules - might be a good idea to have a centralised respository/wiki for tutorials to collect in, I’ve gone through a lot of broken links to get to anything useful. Even if it just a bunch of links to other sites.
There are a couple of nice sample programs using the MIDI classes in Juce, I’m currently working through this too, and have fully functional MIDI input working from these.
PS yosvaniscc I look forward to seeing your MIDI tutorial
I’ve just cracked using custom graphics on slider controls, and once I’ve tidied up the code I’ll whip up a tutorial for that, there seems to be a lot of requests for it.
[attachment=0]Sliders.png[/attachment]
Jules - might be a good idea to have a centralised respository/wiki for tutorials to collect in, I’ve gone through a lot of broken links to get to anything useful. Even if it just a bunch of links to other sites.[/quote]
How did you test it ?
I’m trying to build a project file with IntroJucer and this one, but when I test the compilation, it gives a problem of path etc :-/
Did you use amalgamated version?
There are a couple of nice sample programs using the MIDI classes in Juce, I’m currently working through this too, and have fully functional MIDI input working from these.
PS yosvaniscc I look forward to seeing your MIDI tutorial
I’ve just cracked using custom graphics on slider controls, and once I’ve tidied up the code I’ll whip up a tutorial for that, there seems to be a lot of requests for it.
[attachment=0]Sliders.png[/attachment]
Jules - might be a good idea to have a centralised respository/wiki for tutorials to collect in, I’ve gone through a lot of broken links to get to anything useful. Even if it just a bunch of links to other sites.[/quote]
I can share bits of my code, in terms of MIDI my project http://ctrlr.org/ is for that. It’s a editor/librarian for any MIDI enabled device, there are some Hardware panels on the forums, and from what i see people are making more. What i could i used directly from JUCE libraries, but some stuff is wrapped in my own classes (MIDIMessages, Buffers, SysEx processing etc.). At the moment i’m doing LUA integration so that the panels can be more “custom” and can speak device languages (program exchange, weird midi implementations that some manufacturers are doing). It’s all opensource.
I’m trying to add a midi output to the AM/FM/MIDI example posted a couple of posts above . I basically stripped out all the audio parts of that code and added a midi output to the MidiMessageManager . The idea is to have the Play button send a midi noteon message (through the MidiMessageManager) part … but I can’t get it to work .
Under the midiinput declaration of MidiMessageManager I’ve put :
In typical GPL fashion, no one seems to be offering cash for such a babystep-style walkthrough.
A complete, hand-holding guide to GUI (which has already been done but may be a little dated http://lubyk.org/en/software/mimas/document171.pdf), MIDI, and Audio would easily be worth $150 to me. No question about it.
I’m so new to this my reverse engineering skills aren’t up to par. A walkthrough is of immense value. I don’t expect the big guy to do it as I’m sure there are 1,000s of people who understand JUCE well enough to do a walkthrough of creating a gain knob and a low pass filter from scratch.
Surely, there are 20 other people out there like me who’d pay $150 for this, this year. $3,000 for 3 days of work seems reasonable in my head.