Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Timer сбивается 
:(
    Опции темы
Muerto
  Дата 16.12.2006, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



мой таймер не воспроизводит звук равнамерно(((

Код

    Play(int delay,int period)
        {
            timer = new Timer();
            timer.scheduleAtFixedRate(new TimerTask() {
            public void run() {
             
    try {
        // From file
        AudioInputStream stream = AudioSystem.getAudioInputStream(new File("C:/Documents and Settings/kostantin/Desktop/Metronome Project/Perfect JDBC/Samples/Bass Drum.wav"));
    
        // At present, ALAW and ULAW encodings must be converted
        // to PCM_SIGNED before it can be played
        AudioFormat format = stream.getFormat();
        if (format.getEncoding() != AudioFormat.Encoding.PCM_SIGNED) {
            format = new AudioFormat(
                    AudioFormat.Encoding.PCM_SIGNED,
                    format.getSampleRate(),
                    format.getSampleSizeInBits()*2,
                    format.getChannels(),
                    format.getFrameSize()*2,
                    format.getFrameRate(),
                    true);        // big endian
            stream = AudioSystem.getAudioInputStream(format, stream);
        }
    
        // Create the clip
        DataLine.Info info = new DataLine.Info(
            Clip.class, stream.getFormat(), ((int)stream.getFrameLength()*format.getFrameSize()));
        Clip clip = (Clip) AudioSystem.getLine(info);
    
        // This method does not return until the audio file is completely loaded
        clip.open(stream);
    
        // Start playing
        clip.start();
    } catch (IOException e) {
    } catch (LineUnavailableException e) {
    } catch (UnsupportedAudioFileException e) {
    }
    
    }
       }, delay, period);
      }


не понимаю почему он сбивается  smile 

Я просто метроном делаю,а метроном должен очень четко ритм держать!
может не через теймер это делать??? помогите пожалуйста.

Это сообщение отредактировал(а) Muerto - 16.12.2006, 15:16


--------------------
user posted image
PM MAIL   Вверх
powerOn
Дата 16.12.2006, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 31
Всего: 159



Вероятно таймер просто не успевает... Может следует несколько оптимизировать код? Например: зачем каждый раз  загружать звуковой файл в память? Было бы неплохо делать это один раз, вне метода run(). В самом же run() оставить только операции  запуска и остановки звука. 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Muerto
Дата 17.12.2006, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



мне в моей программе надо что бы он играл заного когда таймер скажет...
выташив хотябы вот так -
Код

public class Play 
{
    Timer timer;
    Clip clip;
    AudioInputStream stream;
    AudioFormat format;
    File file=new File("Samples/Click1.wav");
    
    Play(int delay,int period)
        {
            try {
            stream = AudioSystem.getAudioInputStream(file);
            format = stream.getFormat();
        } catch (IOException e) {
    }catch (UnsupportedAudioFileException e) {
    }
    
            timer = new Timer();
            timer.scheduleAtFixedRate(new TimerTask() {
            public void run() {
             
    try {
       
        stream = AudioSystem.getAudioInputStream(format, stream);
        // Create the clip
        DataLine.Info info = new DataLine.Info(
            Clip.class, stream.getFormat(), ((int)stream.getFrameLength()*format.getFrameSize()));
        clip = (Clip) AudioSystem.getLine(info);
    
        // This method does not return until the audio file is completely loaded
        clip.open(stream);
    
        // Start playing
        clip.start();
    } catch (IOException e) {
    } catch (LineUnavailableException e) {
    } 
    }
       }, delay, period);
      }
       

 public void stop()
 {
    timer.cancel();  
 }
 
}


он уже не начинает играть заного.... а играет один раз и все.
собственно как заставить его играть заного?



--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.