forked from 05bit/cocos2d-TalkingPet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
HelloWorldLayer.mm
130 lines (102 loc) · 3.39 KB
/
HelloWorldLayer.mm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
//
// HelloWorldLayer.m
// TalkingPet
//
// Created by Alexey Kinyov on 10/4/11.
// Copyright 05Bit 2011. All rights reserved.
//
#import "OALAudioSession.h"
#import "OALTools.h"
#import "HelloWorldLayer.h"
enum HelloWorldObjects {
kPressTag = 1,
kSaySomethingTag,
kPlayingTag,
};
// HelloWorldLayer implementation
@implementation HelloWorldLayer
+(CCScene *) scene
{
// 'scene' is an autorelease object.
CCScene *scene = [CCScene node];
// 'layer' is an autorelease object.
HelloWorldLayer *layer = [HelloWorldLayer node];
// add layer as a child to scene
[scene addChild: layer];
// return the scene
return scene;
}
// on "init" you need to initialize your instance
-(id) init
{
// always call "super" init
// Apple recommends to re-assign "self" with the "super" return value
if( (self=[super init])) {
CCLabelTTF *labelPress = [CCLabelTTF
labelWithString:@"Touch to start recording"
fontName:@"Marker Felt" fontSize:64];
CCLabelTTF *labelRecording = [CCLabelTTF
labelWithString:@"Recording... Say something"
fontName:@"Marker Felt" fontSize:64];
CCLabelTTF *labelPlaying = [CCLabelTTF
labelWithString:@"Playing..."
fontName:@"Marker Felt" fontSize:64];
CGSize size = [[CCDirector sharedDirector] winSize];
labelPress.position = ccp( size.width /2 , size.height/2 );
labelRecording.position = ccp( size.width /2 , size.height/2 );
labelRecording.visible = NO;
labelPlaying.position = ccp( size.width /2 , size.height/2 );
labelPlaying.visible = NO;
[self addChild: labelPress z:0 tag:kPressTag];
[self addChild: labelRecording z:0 tag:kSaySomethingTag];
[self addChild: labelPlaying z:0 tag:kPlayingTag];
isRecording = NO;
currentLabel = labelPress;
self.isTouchEnabled = YES;
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self
priority:0 swallowsTouches:YES];
audioController = [[AudioController alloc] init];
[audioController initAudioController];
// Aural
[OALAudioSession sharedInstance];
environment = manager.newEnvironment();
environment->setSampleRate(44100);
emitter = environment->newEmitter();
}
return self;
}
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
NSLog(@"Touch!");
if (!isRecording) {
isRecording = YES;
[self switchLabel:kSaySomethingTag];
[audioController record];
} else {
isRecording = NO;
[self switchLabel:kPlayingTag];
//[audioController stopRecording];
// if (buffer) {
// emitter->stop();
// delete buffer;
// }
buffer = [KSAudioFile audioDataWithUrl:audioController.recordedTmpFile stereo:NO];
emitter->setAudioData(buffer);
emitter->setPitch(0.6);
emitter->play();
}
return NO;
}
- (void)switchLabel:(NSUInteger)tag
{
currentLabel.visible = NO;
currentLabel = [self getChildByTag:tag];
currentLabel.visible = YES;
}
- (void) dealloc
{
[audioController unloadAudioController];
[audioController release];
[super dealloc];
}
@end