====== Assignment 1 ======
{{:assignments:assignment1.pdf|Assignment 1 Description}}
The links you will need to complete Assignment 1 are below:
[[https://juce.com/get-juce/download|Download JUCE]]
[[https://juce.com/learn/tutorials|JUCE Tutorials]]
[[https://docs.juce.com/master/tutorial_new_projucer_project.html|Getting started with the Projucer]]
[[https://docs.juce.com/master/tutorial_create_projucer_basic_plugin.html|Create a basic Audio/MIDI plugin, Part 1: Setting up]]
[[https://docs.juce.com/master/tutorial_plugin_examples.html#tutorial_plugin_examples_arpeggiator|The Arpeggiator Plugin]]
[[https://docs.juce.com/master/classes.html|JUCE API]]
{{:assignments:startercode.zip|Starter Code}}
==== Providing MIDI input to your plugin ====
You should use the Audio Plugin Host to test your MIDI plugin while developing your assignment solution. See instructions in Part 1 of the tutorial plugin on how to build the Audio Plugin Host.
For your convenience, you can download an executable of the Audio Plugin Host for [[https://www.dropbox.com/sh/idsil6hniy86zl4/AADWHX8uSgmCaiPvSeBxf1n2a?dl=0|Mac]] or [[https://www.dropbox.com/s/kvhp2ihjn1jccki/AudioPluginHost.exe?dl=0|PC]].
The Audio Plugin Host comes with a keyboard that can be used to provide input events (your computer keyboard can be used to provide simultaneous events for arpeggiation).
==== Debugging your plugin ====
Configure your debugger to run the Audio Plugin Host:
* In XCode, go to Product > Scheme > Edit Scheme. Point "Executable" to the Audio Plugin Host. Make sure Debug Executable is checked.
* In Visual Studio, go to Project Properties > Debugging > Command, and browse to the Audio Plugin Host executable. Make sure Attach is set to “No”.
When you start debugging, an instance of the plugin host will appear. Use it to load your plugin. Now debugging works for your plugin just as it does normally, i.e. you can set breakpoints etc.
You can use the JUCE DBG macro to output variable values to the debug console of your IDE. See more info [[https://docs.juce.com/master/group__juce__core-system.html#ga679635952a5d2eb25f3b31398f0fcc25|here]], but the simple way to output the value of variable time is to give:
''DBG(time);''