Simple MIDI Example / Tutorial anywhere?


#1

Hello All,

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.

Thanks in advance.

Stan


#2

Just double checking again, if there are any tutorial / guides to Juce’s MIDI API and how to use them.

Thanks

Stan


#3

Well, reading through all the docs for the classes in juce/src/audio/midi is probably your best plan.


#4

Jules, it’s time to give some tutorials about the Audio and MIDI…etc., and I know many people are looking forward to these…


#5

I agree, but there are only 24 hours per day, and I need to spend some of that time sleeping.


#6

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.

  1. Does one need to create a Juce_MIDIInput or Juce_MIDIOutput to use the MIDI classes?

  2. Do MIDIMessages have to be put into MIDISequences for the MIDIBuffers to play back?

  3. 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.

Thanks

Stan


#7

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.


#8

Cool! Those answers helped provide context. [And I apologize if I came off brash in my rant, but you and Juce are back on my good list again. :smiley: ]

And if I can get the hang of Juce’s MIDI side, I would be glad to provide a tutorial. It might be a bit, I just am not a C++ wizard by any means.

Still, thanks again for the context, those answers do help a lot!

Stan


#9

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:

http://code.google.com/p/dspfilterscpp/


#10

please I need an example to play MIDI files, I´ve tried to do it but I couldnt.it is to make a karaoke player component for juce.


#11

Take a look at the following site:

http://www.lifeorange.com/SOFTWARE/audiocpptutorial.html

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 :wink:

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.


#12

[quote=“edekock”]Take a look at the following site:

http://www.lifeorange.com/SOFTWARE/audiocpptutorial.html

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 :wink:

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?


#13

[quote=“edekock”]Take a look at the following site:

http://www.lifeorange.com/SOFTWARE/audiocpptutorial.html

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 :wink:

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]

Hi there,
did you make a little tuto about that?

I’m interested in:

  • relook’n’feel the gui
  • the global structure of your code.

best,


#14

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.


#15

hello everyone,

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 :

at bottom :

[code]void MidiMessageManager::sendmessagenow (MidiOutput*, const MidiMessage& message)
{
if(Mute1)
{
midiOutput->sendMessageNow(MidiMessage::noteOn(1,124,1.0f));

}

}[/code]

the Mute1 becomes true is the playbutton is clicked

the header files has :

and

declared …

It’s probably some basic C++ stuff … but I’m learning C++ through Juce :mrgreen:


#16

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. :smiley:

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. :smiley:

Brandon