This is a test of code to exercise the Xcode system. One of my goals was to avoid the use of Interface Builder except for attaching items in the menu bar to various programs. The GitHub documentation for BRossTools is located at [https://bradleyross.github.io/ObjectiveC-Examples/BRossTools](This is a test of code to exercise the Xcode system. One of my goals was to avoid the use of Interface Builder except for attaching items in the menu bar to various programs. The GitHub documentation for BRossTools is located at
https://bradleyross.github.io/ObjectiveC-Examples/Documentation/BRossTools
Files
- BRossTools.h and BRossTools.m contain a set of Objective-C classes that are under development that will be used as a library to assist programmers.
- LocalClasses.h and BRossTools.m contain Objective-C classes that are being used to understand the technologies used in the development of MacOS applications.
- The file AppDelegate.m has been modified to create a menu upon opening the application that can be used to call the other components contained in the application.
- The files MIKMIDIsamples.h and MIKMIDIsamples.m contain examples for using MIKMIDI from Andrew Marsden
Mapping to main menu
Apple Documentation
The following is a list of documentation from Apple that can be used to create, modify, and understand this code.
Apple Objective-C Classes
The following list provides links the Apple documentation that describe some of the various classes used in the program..
- Audio Toolbox I need more information on this.
- AVAudioEngine (AVFAudio -> Audio Engine -> AVAudioEngine) The methods for this class include a number of methods having the format connectMIDI... and disconnectMIDI...
- AVAudioSequencer (AVFAudio -> Audio Engine -> AVAudioSequencer)
- AVAudioUnitMIDIInstrument (AVFAudio -> Audio Engine -> AVAudioUnitMIDIInstrument) It appears that sendProgramChange:onChannel sends a program (instrument change) while sendProgramChange:bankMSB:bankLSB:onChannel changes both program and sound bank. This would imply a need to change the instrument choice whenever you change the sound bank.
- AVAudioUnitSampler (AVFAudio -> Audio Engine -> AVAudioUnitSampler)
- NSBundle (Foundation -> Resources -> NSBundle)
- NSError (Foundation -> Errors and Exceptions -> NSError) (EEZY Tutorials) (Error Handling Programming Guide: Using and Creating Error Objects)
- NSException (Foundation -> Errors and Exceptions -> NSException)
- NSThread (Foundation -> Processes and Threads -> NSThread)
- NSTimer (Foundation -> TaskManagement -> NSTimer)
MIDI programming using CoreMIDI
* MIKMIDI uses the following packages
* LibXML2
* Audio Unit
* Audio Toolbox
* AppKit
* CoreData
* CoreMIDI
* Cocoa
* Foundation
Audio Toolbox
MIDI documentation
- Details about MIDI 2.0™, MIDI-CI, Profiles and Property Exchange", MIDI – Although this article describes the MIDI 2.0 standard, the full set of specifications has not yet been released to the general public, but only to corporate members of the Association.
- "Official MIDI Specifications", MIDI™ Association, https://www.midi.org/specifications/midi1-specifications – You will need to join the MIDI™ Association before you can download the files. However, there is a free membership level.
- "Discover MIDI", imitone – This appears to be the best laid-out guide to MIDI that I have seen to this date. The amount of information on programming is limited, but should help to explain the Apple documentation for CoreMidi.
- "MIDI Tutorial For Programmers", Carnegie Mellon University https://www.cs.cmu.edu/~music/cmsip/readings/MIDI%20tutorial%20for%20programmers.html – Warning: Files with URL's like this have a habit of vanishing without warning.
- "Working With MIDI", Audiobus
- https://stackoverflow.com/questions/8795749/coremidi-logging-received-midi-messages-to-an-nstextfield
- GitHub project AVFoundationMIDIPlay
Electronic Music
The following are some sources of files for electronic music.