The document discusses creating music instruments on iOS. It covers various music and instrument apps for iOS, including those that have won Apple Design Awards. It also discusses Core Audio frameworks for audio and MIDI support, introducing computer music concepts like notes, signals, and audio graphs. The document provides an overview of creating music players and sequences in iOS and demonstrates audio graph APIs.
1 of 27
More Related Content
iOS as a Music Instrument
1. Creating Music
Instruments on iOS
Greg Cerveny
@gmcerveny
greg.cerveny@gmail.com
Tuesday, September 11, 12
2. Music on iOS
? Apple Design Award Apps
? DM 1, Djay, Tab Toolkit
? Companies: Smule, Tonara, Khush
? Great Apps: Figure, Lemur, Animoog, ...
? Apple Store
Tuesday, September 11, 12
5. Max Mathews Radio Baton Video Demo:
http://www.youtube.com/watch?
v=3ZOzUVD4oLg#t=4m46s
Tuesday, September 11, 12
6. Core Audio
? Audio and MIDI support
? Low Latency & Dynamic
? Objective C and C
? Proxy Objects
? Audio Toolbox, Audio Unit, Core MIDI
Frameworks
Tuesday, September 11, 12
8. Introduction to
Computer Music
? Notes
Tuesday, September 11, 12
9. Introduction to
Computer Music
? Notes
? Signals
Tuesday, September 11, 12
10. Sonata No. 14, 'Moonlight'
Ludwig van Beethoven
Adagio sostenuto Op. 27, No. 2
Si deve suonare tutto questo pezzo delicatissimamente e senza sordini
3 5 2 4 3 5
1 3 1
sempre pianissimo e senza sordini 5
4 pp
5
2 3 5 4 5 3 5
4 3
1
4 5
4
5
7 5 4 3
Tuesday, September 11, 12
12. 2. Set Up Music Sequence
? Create a new music sequence
NewMusicSequence(MusicSequence *outSequence)
? Load a music ?le
MusicSequenceFileLoad(
MusicSequence inSequence,
CFURLRef inFileRef,
MusicSequenceFileTypeID inFileTypeHint,
MusicSequenceLoadFlags inFlags)
Tuesday, September 11, 12
13. 3. Load Into Music Player
? Create a new music player
NewMusicPlayer(MusicPlayer *outPlayer)
? Load sequence into player
MusicPlayerSetSequence(MusicPlayer inPlayer,
MusicSequence inSequence)
? Play
MusicPlayerStart(myMusicPlayer)
Tuesday, September 11, 12
18. 8 Steps to an Audio Graph
1. Con?gure an Audio Session
2. Create an Audio Processing Graph
3. Create and Describe Audio Nodes for Each Unit
4. Open the Audio Processing Graph to Instantiate the Audio Units
5. Obtain Pointers and Con?gure Each Unit
6. Connect the Nodes
7. Initialize the Graph
8. Start the Audio
Tuesday, September 11, 12
19. 8 Steps to an Audio Graph
? Create an Audio Processing Graph
NewAUGraph(AUGraph *outGraph)
? Describe Audio Node
AudioComponentDescription {
componentType;
componentSubType;
componentManufacturer;
componentFlags;
componentFlagsMask;
}
Tuesday, September 11, 12
20. 8 Steps to an Audio Graph
? Add Node to Graph
AUGraphAddNode(
AUGraph inGraph,
AudioComponentDescription *inDescription,
AUNode *outNode )
? Open the graph
AUGraphOpen(AUGraph inGraph)
Tuesday, September 11, 12
21. 8 Steps to an Audio Graph
? Pointers to Nodes
AUGraphNodeInfo(
AUGraph inGraph,
AUNode inNode,
AudioComponentDescription *outDescription,
AudioUnit *outAudioUnit)
? Connect Nodes
AUGraphConnectNodeInput(
AUGraph inGraph,
AUNode inSourceNode,
UInt32 inSourceOutputNumber,
AUNode inDestNode,
UInt32 inDestInputNumber)
Tuesday, September 11, 12
22. 8 Steps to an Audio Graph
? Initialize Graph
AUGraphInitialize(!
AUGraph inGraph)
? Start Audio
AUGraphStart(AUGraph inGrap)
Tuesday, September 11, 12
24. Audio Graph
? Audio Graph
? Creation, Opening, and Starting
? Nodes and Descriptions
? Audio Units
Tuesday, September 11, 12
25. Resources
? Learning Core Audio by Adamson
? WWDC
? 2011: Music in iOS and Lion
? 2010: Audio Development for iOS1/2
? Core Audio Programming Guide
? Audio Unit Hosting/Programming Guide
Tuesday, September 11, 12
26. Other Libraries
? C Sound
? LibPD - Pure Data
Tuesday, September 11, 12
27. Creating Music
Instruments on iOS
Greg Cerveny
@gmcerveny
greg.cerveny@gmail.com
Tuesday, September 11, 12