Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Таймер сбивается


Автор: Muerto 28.3.2007, 12:38
он грузит звуковой файл каждый раз,а мне хотелось бы что бы он загрузил гдето один раз,а патом уже файл был загружен все время.

а вот и сама программа http://www.guitarplayer.ru/forum/index.php?action=dlattach;topic=49270.0;attach=33447
работает но сбиваеться =-( из за того что каждый раз грузит файл заного,а они большие =-(

Автор: AntonSaburov 28.3.2007, 13:59
Чего-то не очень понятно - разве нельзя закачать в память файлик целиком (в какой-нибудь ByteStream) и читать уже из него ?

Автор: Muerto 28.3.2007, 23:10
Я не знаком с закачиванием фалов в память =-(
Если есть где FAQ ...

Автор: Muerto 29.3.2007, 20:54
Вот так 
Код

stream = AudioSystem.getAudioInputStream(file);
(файл звукавой )

каждый раз грузит файл заного, как сделать что бы с памяти грузил не знаю...

и ещё я понимаю что эта строка делает но не до конца, она переводит с флоат в децибелы, я нашел эту формулу и пользуюсь ей.
Код

dB = (float) 
                  (Math.log(value==0.0?0.0001:value)/Math.log(10.0)*20.0);


(но первое мне более важно)


Заранее спасибо за помощь

Автор: powerOn 29.3.2007, 23:44
А вот так нельзя:

Код

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;

public class Main
{
    public static void main(String[] args)
    {
        try
        {
            FileInputStream fis = new FileInputStream(new File("C:\\snd.wav"));
            AudioInputStream ais = AudioSystem.getAudioInputStream(fis);
            
            // Получаем экземпляр Clip и инициализируем его.
            Clip clip = AudioSystem.getClip();
            clip.open(ais);
            
            // получаем время клипа в миллисекундах.
            long length = clip.getMicrosecondLength() / 1000;
            
            // Проигрываем клип.
            clip.start();
            delay(length);
            clip.stop();
            
            // проматываем на начало.
            clip.setFramePosition(0);
            
            // Проигрываем еще раз.
            clip.start();
            delay(length);
            clip.stop();
            
            // закрываем клип (и файл на всякий случай).
            clip.close();
            fis.close();
        }
        catch (FileNotFoundException ex)
        {
            ex.printStackTrace();
        }
        catch (IOException ex)
        {
            ex.printStackTrace();
        }
        catch (UnsupportedAudioFileException ex)
        {
            ex.printStackTrace();
        }
        catch (LineUnavailableException ex)
        {
            ex.printStackTrace();
        }
    }
    
    public static void delay(long ms)
    {
        try
        {
            Thread.sleep(ms);
        }
        catch (InterruptedException ex)
        {
            ex.printStackTrace();
        }
    }
}


Автор: Muerto 30.3.2007, 00:11
Обязательно попробую  !!! СПАСИБО ОГРОМНОЕ!!!

Автор: Muerto 30.3.2007, 00:30
Супер!!! вышло  smile  и теперь не заедает !!!
Я если честно и не знал про промотку назад =-( 
Начинал работать низная ничего о работе со звуком... и книг нету, чисто по примерам смог построить =-)
Ща ещё чуток доработаю и выложу на заценку...

Автор: Muerto 2.4.2007, 19:14
Скачать мой метроном: http://www.rapidshare.ru/232375

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)