创建自己的MIDI生成的实时的视觉效果了openFrameworks

Do you want to create a simple desktop app that generates realtime animations using MIDI data? Then you're in the right place and Liam Lacey is here to show how using openFrameworks.  

作为一个表演的音乐家,你的表演中结合投影的视觉效果是增强体验你的听众一个安全可靠的方式。有专为这样做,比如很多视频骑师和投影映射软件应用程序的Resolume竞技场ArKaos GrandVJ,这让艺术家触发和控制视频,图形和实时动画,以及它们同步音乐。大多数应用程序都可以使用MIDI控制,使得它们非常有用的已经使用谁MIDI他们的表演中的音乐家。然而,MIDI整合往往是相当有限的,可能不会让你到底要如何控制视觉效果。解决此问题的方法是创建自己的定制应用软件

在本教程中,我

Resolume Arena 4 projection mapping software 

resolume的竞技场4投影映射软件。

我们将在这里使用该平台被称为了openFrameworks(通常缩写为的)

Live Visuals at Roskilde Festival 2014, Denmark, by Johan Bichel Lindegaard, partly made using openFrameworks

现场视觉效果,在罗斯基勒音乐节2014年,丹麦,由Johan Bichel Lindegaard,部分由使用了openFrameworks。

在我们开始之前,这里是什么,我们会做一个简单的例子

你将需要:

Step 1—Installing your IDE

首先,你需要安装你的IDE。在OS X上安装Xcode是容易

Step 2—Installing openFrameworks and ofxMidi

要安装,只需将下载的文件夹到你的电脑上的任何位置。要安装ofxMidi,将下载的ofxMidi文件夹复制到插件目录下的文件夹中。

Step 3—Setting up the oF Project

接下来,您将需要建立一个项目,你的IDE,让您可以开发您的应用。要做到这一点,你将使用

  1. 确保
  2. 确保
  3. 点击
  4. 点击

openFrameworks Project Generator application

了openFrameworks工程生成的应用程序。

现在应该在了openFrameworks /应用程序/ myApps目录为新创建的项目一个新的文件夹。

Step 4—Adding the Code

接下来,您需要打开新创建的项目和一些代码添加到它:

  1. 打开你的IDE应用程序(使用Xcode或代码::块)。
  2. 选择项目文件(.xcodeproj文件的Xcode或.workspace为Code :: Blocks的),然后点击
  3. 在IDE中浏览到左侧列/窗格,应该有旁边的项目名称的图标。点击三角形或

The Xcode (left image) and Code::Blocks (right image) project navigator where you will find the source code files

Xcode的(左图)和代码::块(右图)项目导航器在那里你会找到源代码文件。

  1. 下载代码,这个项目从这里开始
  2. 你的IDE与新下载的文件的内容中替换ofApp.cpp和ofApp.h的内容。从树视图中打开在Xcode只是单一的点击这些文件对他们,但是,在代码::块,你需要在他们的双击。

教你为这个项目工作的代码怎么有点超出了本文的范围,所以我

Step 5—Building and Running the Code

你几乎可以开始尝试在MIDI Visualiser的应用程序,但是在这之前,你需要建立的代码放到一个软件。要做到这一点需要完成以下步骤:

在Xcode中在OS X:

  1. 在对左侧旁玩顶部的工具栏和停止的图标有一个下拉菜单
  2. 从菜单栏中选择
  3. 从菜单栏中选择
  4. 该Visualiser的应用程序现在应该已经出现,并且应用程序文件应该已经在创建

The Xcode IDE running the MIDI visualiser application

Xcode的IDE运行MIDI Visualiser的应用程序。

在代码::在Windows块:

  1. 从菜单栏中选择
  2. 从菜单栏中选择
  3. 该Visualiser的应用现在应该已经出现(与第二效用应用出现它的后面),以及应用程序文件应在已创建

The Code::Blocks IDE running the MIDI visualiser application

该代码::块IDE运行MIDI Visualiser的应用

祝贺您

Step 6—Using the application

使用MIDI Visualiser的应用是很容易。随着指令的状态,只需选择你希望你的电脑键盘上的数字来使用MIDI输入,按

The MIDI visualiser application

该MIDI Visualiser的应用

下载源代码,该项目的位置

Conclusion

以便

 

Liam is the Head Of Development specialising in software development at Modal Electronics, the company behind the 002, 008, CRAFT and SKULPT synthesisers, and was previously the lead software developer at nu desine, the developers of the AlphaSphere MIDI controllers. He was also an Associate Lecturer at UWE, Bristol, UK where he gradua... Read More

Discussion

cuticulamusic
can you specify for which OS X this should work, cause I guess in 10.9 it is not working. I get tons of debugging errors like "gluBuild2DMipmaps is deprecated" use xxx instead. ???
Liam Lacey
Hey cuticulamusic,
These messages are actually just openFrameworks build warnings that can be ignored in this case, so it should still be possible to build and run the application. Is this true for you, or are they coming up as red errors that prevent you from building? With the latest version of oF (0.8.4) this project should work on OS X 10.6 and above.
cuticulamusic
Hi, I found out that I didn't " On the top toolbar on the left-hand side next to the play and stop icons there is a dropdown menu—select the ‘[project name] Debug’ option." set it right. But after doing that I got like 18 real errors. all of them "Apple Match-O Linker (id) Error". Do you have any idea what that could be? and thanks for your help already and putting up this tutorial (even tough its not working for me, haha).
Liam Lacey
Can you give examples of the exact "Apple Match-O Linker (id) Error" errors?
Xac
Tried this on OS X 10.11.1 Xcode says build failed.
Liam Lacey
Hey XacWj,
I haven't been able to test this on OS X 10.11 yet. What errors are you getting?
Bonzo
I'm so confused. You linked to a version of Code Blocks, yet the installation guide for Windows you linked to recommends another completely different version. They're nowhere near the same size and the version numbers are completely different. It asks that i 'install' it, but all i find is an install.md file which i can't open.
Bonzo
Thanks for deleting my comment, i figured out where i went wrong anyway. It would have helped if you had explained that oF and code::blocks are two separate programs.
Bonzo
So now i've done all the steps but at the end i just get the grey screen and an empty command prompt box with no instructions. The build had no errors. Any advice?
Liam Lacey
Hey Bonzo,

Code::Blocks is the piece of software used for developing software applications, whereas oF is just a library of files used to make software development a lot easier. Sorry if that wasn't clear in the tutorial.

Since releasing this tutorial there has been a newer release of oF (0.9.0), and unfortunately they no longer suggest Code::Blocks to be the best IDE to use on Windows. Also I have not yet tested this tutorial using version 0.9.0 - just 0.8.4 (which can be downloaded from http://www.openframeworks.cc/download/older.html). Which version of oF did you try this tutorial with?
Stefan Hetzel
@Liam Lacey: Thanks for the great tutorial, it was (almost) no problem to install the app :-) (Win 7 64-bit, using oF 0.8.4)
Eric
This is exactly what I've been looking for. Thank you so much!!!
Alex
Please, what portions of midi_visualizer source code gets copied into CodeBlocks. Think I'm ok with ofx files (h and C++). Does MAMA file go as well. How??
Mapt
Hi, thanks for this article. With your help, I managed to create music videos for my musical project. Here is the first one if anyone is interested :
https://youtu.be/AAL9CR8_tJ8
VoyagesLuna
Hi, thank you so much for this awesome tutorial!! It actually worked for me! On macOS Catalina 10.15.5 may 2020. Only small detail at first the build failed, it said midi thing did not have a method getPortsList and asked me if I meant getInPortList instead... I changed it for getInPortList where the error was flagged and now it is working!!

Only thing that I still need to figure out though is how can I route the midi from my song in Ableton Live to the program? Right now I am able to chose between my drum pad, my midi synth or my audio interface as MIDI input and if I chose the drumpad or the midi synth it totally works and I can see the circles on the app!

Could you share how you got the midi from your Ableton coming out in the app? Thanks!
A
For those trying to run this code in VS on Windows
change line 158 from
vector midi_port_strings = midiIn.getPortList();
to
vector midi_port_strings = midiIn.getInPortList();
If it can't compile try to switch Solution Platform from Win32 to x64 (and optionally back)

Want to join the discussion?

Create an account or login to get started!