- •Обробка виключних ситуацій
- •6.0804 “Комп’ютерні науки”
- •1. Мета роботи
- •2.Основні теоретичні відомості
- •2.1. Оператори мови java
- •15.1. Модель обробки "поставщик-споживач"
- •15.2. Класи-фільтри
- •15.6. Модель обробки прямим доступом
- •15.8. Афінне перетворення зображення
- •15.7. Перетворення зображення в Java 2d
- •15.9. Зміна інтенсивности зображення
- •Import java.Awt.*;
- •Import java.Awt.Image.*;
- •Import java.Awt.Event.*;
- •15.10. Зміна складових кольору
- •15.11. Створення різних эфектів
- •Import java.Awt.*;
- •Import java.Awt.Event.*;
- •15.13. Покращення зображення подвійною буферизацією
- •50, 50, 0, 360, Arc2d.Open));
- •15.14. Звук
- •Import java.Applet.* ;
- •Import java.Net.*;
- •15.15. Програвання звуку в Java 2
- •Import javax.Sound.Sampled.*;
- •Import java.Io.*;
- •If (!AudioSystem.IsLineSupported(info)){
- •Import javax.Sound.Sampled.*;
- •Import java.Io.*;
- •If (!AudioSystem.IsLineSupported(info)){
- •Import javax.Sound.Midi.*;
- •Import java.Io.*;
- •15.16. Синтез і запис звуку в Java 2
- •Import javax.Sound.Midi.*;
- •Import java.Io.*;
- •3.Контрольні запитання
- •4.Лабораторне завдання
- •Мета роботи.
- •Список рекомендованої літератури
Import javax.Sound.Midi.*;
Import java.Io.*;
class SynMIDI {
SynMIDI() {
play(synth());
}
public Sequence synth(){
Sequence seq = null;
try{
// Послідовність буде відраховувати по 10 MIDI-подій на звук довжиною в чверть
seq = new Sequence(Sequence.PPQ, 10);
// Створюємо в послідовністю одну дорожку
Track tr = seq.createTrack();
for (int k = 0; k < 100; k++){
ShortMessage msg = new ShortMessage();
// Пробігаємо MIDI-ноти від номера 10 до 109
msg.setMessage(ShortMessage.NOTE_ON, 10+k, 93);
// Будемо програвати ноти через кожні 5 відрахунків
tr.add(new MidiEvent(msg, 5*k));
msg = null;
}
} catch (Exception e) {
System. err.println("From synth(): "+e);
System.exit (0);
}
return seq;
}
public void play (Sequence seq) {
try{
Sequencer sequencer = MidiSystem.getSequencer();
if (sequencer == null){
System.err.println("Sequencer is not supported");
System.exit(0);
}
sequencer.open();
sequencer.setSequence(seq);
sequencer.startRecording();
int[] type = MidiSystem.getMidiFileTypes(seq);
MidiSystem.write(seq, type[0], new File("gammas.mid"));
}catch(Exception e) {
System.err.println("From play(): " + e);
}
}
public static void main(String[] args){
new SynMIDI();
}
}
На жаль, із-за обмалі часу ми не можемо торкнутися теми про роботу з синтезатором (synthesizer), мікшування звуку, роботи з декільками інструментами і інших можливостей Java Sound API. В документації SUN J2SDK, в каталозі docs\guide\sound\prog_guide, єсть детальне керівництво програміста, а в каталозі demo\sound\src лежать вихідні тексти синтезатора, використовуваного в Java Sound API.
3.Контрольні запитання
Що називається алгоритмом?
4.Лабораторне завдання
1. Ви вже розібрали програми лістингів 10.7 і 10.8 і випробували їх. Це перші програми, які реагують на кліки мишкою по кнопках. Заставте цю програму робити щось інше, при натисканні на кнопки. Наприклад, змінювати колір компонентів, виводити текст у вікно чи в компонент, додавати нові компоненти і т. п. Переробіть круглу кнопку в овальну. Будьте готові при здачі лабораторної роботи до того, що викладач заставить вас замість овальної кнопки зробити трикутну, пятикутну, шестикутну. А також скаже, що повинна зробити програма при натисканні на кнопку.
Візьміть за основу програму лістингу 11.4. Додайте в форму текстове вікно і запрограмуйте повноцінний калькулятор.
Додайте у форму ще декілька кнопок і запрограмуйте обчислення тригонометричних, обернених тригонометричних і інших елементарних функцій. Будьте готові до того, що викладач при прийомі роботи запропонує додати ще якусь кнопку - функцію.
5. ЗМІСТ ЗВІТУ
Мета роботи.
Короткі теоретичні відомості.
Файли проекту.
Аналіз результатів та висновки.
Список рекомендованої літератури
Bruce Eckel, Thinking in Java, 2nd Edition, 2000.
Christopher Batty and David Scuse, Installing Eclipse. Department of Computer Science, University of Manitoba, Winnipeg, Manitoba, Canada, 2003.
