我想在iphone上编写一个简单的音频音序器,但我无法获得准确的时序.最后几天我在iphone上尝试了所有可能的音频技术,从AudioServicesPlaySystemSound和AVAudioPlayer以及OpenAL到AudioQueues.
在我的最后一次尝试中,我尝试了使用openAL的CocosDenshion声音引擎,并允许将声音加载到多个缓冲区中,然后在需要时播放它们.这是基本代码:
在里面:
int channelGroups[1];
channelGroups[0] = 8;
soundEngine = [[CDSoundEngine alloc] init:channelGroups channelGroupTotal:1];
int i=0;
for(NSString *soundName in [NSArray arrayWithObjects:@"base1", @"snare1", @"hihat1", @"dit", @"snare", nil])
{
[soundEngine loadBuffer:i fileName:soundName fileType:@"wav"];
i++;
}
[NSTimer scheduledTimerWithTimeInterval:0.14 target:self selector:@selector(drumLoop:) userInfo:nil repeats:YES];
Run Code Online (Sandbox Code Playgroud)
在初始化中,我创建声音引擎,将一些声音加载到不同的缓冲区,然后使用NSTimer建立音序器循环.
音频循环:
- (void)drumLoop:(NSTimer *)timer
{
for(int track=0; track<4; track++)
{
unsigned char note=pattern[track][step];
if(note)
[soundEngine playSound:note-1 channelGroupId:0 pitch:1.0f pan:.5 gain:1.0 loop:NO];
}
if(++step>=16)
step=0;
}
Run Code Online (Sandbox Code Playgroud)
这就是它,它应该工作,但它的时机是不稳定和不稳定的.一旦发生其他事情(在视图中绘制),它就会失去同步.
据我所知,声音引擎和openAL缓冲区已加载(在初始化代码中),然后准备立即启动alSourcePlay(source);- 所以问题可能出在NSTimer?
现在appstore中有几十个声音序列器应用程序,它们具有准确的计时.当变焦和绘图完成时,Ig"idrum"在180 bpm时具有完美的稳定节拍.所以必须有一个解决方案.
有人有什么想法吗?
在此先感谢您的帮助!
最好的祝福,
Walchy
感谢您的回答.它让我更进一步,但不幸的是没有达到目的.这是我做的:
nextBeat=[[NSDate alloc] initWithTimeIntervalSinceNow:0.1]; …Run Code Online (Sandbox Code Playgroud) 在提交到存储库时,我应该告诉Tortoise SVN忽略哪些文件?
特别是我对实用信息感兴趣,例如是否包含*.dproj.2007似乎出现但可能不需要的等文件.
如何获得通常看起来的路径 %SystemDrive%\inetpub\wwwroot?
我想这与Microsoft.Web.Administration.ServerManager课堂有关,但我找不到办法.
更新:我正试图从独立应用程序获取路径.不是ASP.NET Web应用程序.
我抛出以下异常:
在创建窗口句柄之前,无法在控件上调用Invoke或BeginInvoke.
这是我的代码:
if (InvokeRequired)
{
BeginInvoke(new UpdateTextFieldDelegate(WriteToForm), finished, numCount);
}
else
Invoke(new UpdateTextFieldDelegate(WriteToForm), finished, numCount);
Run Code Online (Sandbox Code Playgroud)
我在这个网站上找到了关于这个主题的网页,但我不知道出了什么问题.
我在基于导航的应用程序的详细视图中有一个UITabBar.我将文本和图像存储在tableview中,并希望用户能够点击单元格以隐藏导航控制器和标签栏以全屏查看内容.
我发现这个代码用于隐藏顶部条形图,但隐藏标签栏似乎并不容易.
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
[self.navigationController setNavigationBarHidden:YES animated:YES];
Run Code Online (Sandbox Code Playgroud)
有谁知道如何做到这一点?
一旦视图已加载,此代码无法隐藏tabBar.
yourTabViewController.hidesBottomBarWhenPushed = YES;
Run Code Online (Sandbox Code Playgroud)
这是我找到的代码.似乎仅在加载视图时才起作用,因此一旦它出现,它就不能用于隐藏标签栏.我仍然在努力做这项工作.请帮忙!!!
self.tabBarController.tabBar.hidden = YES;
Run Code Online (Sandbox Code Playgroud) 在用例图中,有什么区别<<includes>>,<<extends>>和<<uses>>?是<<includes>>和<<uses>>是一回事吗?
有在SQL Server中的许多条款,例如SELECT,WHERE,GROUP BY,ORDER BY,HAVING
编写查询时这些子句的正确顺序是什么?
这是Javascript中有效的XPath:
id("priceInfo")/div[@class="standardProdPricingGroup"]/span[1]
Run Code Online (Sandbox Code Playgroud)
这变成了有效的PHP XPath,可以与DOMXPath-> query()一起使用
//*[@id="priceInfo"]//div[@class="standardProdPricingGroup"]//span[1]
Run Code Online (Sandbox Code Playgroud)
我主要担心的是可能存在很多差异,我希望找出这些差异,并且我有问题来识别这些差异.
问题也可能以不同的方式提出:由于Javascript可以有不同的有效XPath格式,如何规范化它们以使用PHP.
其中一个更新还提到如果存在包含此定义的有效DTD,则id()函数是有效的XPath.我对输入DTD没有权力,如果有办法找到一个没有任何特定DTD的解决方案,那就太棒了.
更新:
我想用算法将第一种格式转换为第二种格式.我的输入是第一个而不是第二个.无法改变这一点.
正如@NisonMaël指出的那样,第二种格式是有效的Javascript XPath,如下所示:http://jsbin.com/elatum/2/edit这不幸只是增加了Javascript XPath"碎片化"的问题.
@salathe指出,如果记录的输入具有有效的DTD,则有效的Javascript XPath查询在PHP中可以正常工作(@Dimitre Novatchev在评论中提到了这一点,但忽略了重要性).不幸的是我无法控制输入DTD,所以现在我必须研究一种方法来克服这个问题,或者找到一种即使没有有效的DTD也可以工作的解决方案.
我在C aptitude论文中发现了这个难题.
void change()
{
//write something in this function so that output of printf in main function
//should always give 5.you can't change the main function
}
int main()
{
int i = 5;
change();
i = 10;
printf("%d", i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
任何解决方案.?
我正在编写一个Android应用程序,应该使用数据库来存储数据并从中读取数据.使用本教程(在archive.org上)我得到了创建数据库的应用程序,我可以创建新条目,但是,我不知道,如何读取数据库以获取ListView中存储的数据.我知道这个网站上有很多类似的问题,但似乎没有一个适用于这种方式,教程中的数据库也适用.
码:
import java.util.Calendar;
import maturarbeit.nicola_pfister.studenttools.database.DBAdapter;
import android.app.AlertDialog.Builder;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.ListView;
public class Marks extends ListActivity {
DBAdapter db = new DBAdapter(this);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.marks);
}
@Override
protected void onPause() {
super.onPause();
db.close();
}
@Override
protected void onResume() {
super.onResume();
db.open();
getData();
}
@SuppressWarnings("deprecation")
private void getData() {
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1,
db.getAllMarks(),
new …Run Code Online (Sandbox Code Playgroud)