Mercurial > hg > Game > Cerium
view example/synthesizer/main.cc @ 2023:8c3c826ba4d5 draft
add make command "make test"
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 21 Jul 2014 18:49:17 +0900 |
parents | fac44ad2867d |
children | 472528b62bbf |
line wrap: on
line source
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/mman.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <sys/time.h> #include "TaskManager.h" #include "SchedTask.h" #include "Func.h" #include "AudioData.h" #include <sdl.h> #include <SDL_audio.h> #include <math.h> /* * PS3でCPU数が2以上の時に、あまりが計算されてない */ extern void task_init(); CPU_TYPE spe_cpu = SPE_ANY; int volume = 3000; double frequency = 440; char *waveform_name = "tri"; const char *usr_help_str = "Usage: ./synthesizer [-freq freqency] [-wave \"sqr\" or \"tri\"] [-vol volume]\n"; static void run_start(TaskManager *manager) { AudioDataPtr au = (AudioDataPtr)manager->allocate(sizeof(AudioData)); au->self = au; au->volume = volume; au->frequency = frequency; au->waveform_name = waveform_name; printf("Freq:%f\n",frequency); au->sampling_rate= 44100; /* Sampling rate: 44100Hz */ au->format= AUDIO_S16LSB; /* 16-bit signed audio */ au->channels= 1; /* Mono */ au->samples= 8192; /* Buffer size: 8K = 0.37 sec. */ au->userdata= NULL; HTaskPtr osc = manager->create_task(OSC_TASK); osc->set_inData(0,au,sizeof(AudioDataPtr)); osc->spawn(); } void init(int argc, char **argv) { for (int i = 1; argv[i]; ++i) { if (strcmp(argv[i], "-freq") == 0) { frequency = atof(argv[i+1]); } else if (strcmp(argv[i], "-wave") == 0) { waveform_name = argv[i+1]; } else if (strcmp(argv[i], "-vol") == 0) { volume = atof(argv[i+1]); } } } int TMmain(TaskManager *manager, int argc, char *argv[]) { init(argc, argv); if(argc == 1) { printf("%s",usr_help_str); printf("Default settings\n"); printf("frequency :%fHz(A)\n",frequency); printf("wave :%s\n",waveform_name); printf("Volume :%d\n",volume); } task_init(); run_start(manager); return 0; } /* end */