0 / 0 / 0
Регистрация: 28.12.2015
Сообщений: 3
1

Play/Pause в программе которая играет мелодию

28.12.2015, 23:48. Показов 1214. Ответов 4
Метки tasm (Все метки)

Author24 — интернет-сервис помощи студентам
Я уже написала музыкальные ноты и захендлила на кнопку 'M' мелодию.
Сейчас пытаюсь реализовать другую кнопку при нажатии которой мелодия приостановится, а при повторном нажатии музыка опять начнёт играть с того же места. Не понимаю как сделать что то вроде "метки", чтобы музыка играла именно с того места где и была остановка. Какие нибудь идеи?
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
TITLE   MUSIC.EXE
STACKSG SEGMENT PARA    STACK   'Stack'
    DW  128 DUP(?)
STACKSG ENDS
DATASG  SEGMENT PARA    'Data'
 
DATASG  ENDS
CODESG  SEGMENT PARA    'Code'
ASSUME  CS:CODESG, DS:DATASG, SS:STACKSG, ES:NOTHING
SOUND   PROC
    PUSH    AX
    PUSH    BX
    PUSH    CX
    PUSH    DX
    PUSH    DI
    MOV AL, 0B6H
    OUT 43H, AL
    MOV DX, 14H
    MOV AX, 4F38H
    DIV DI
    OUT 42H, AL
    MOV AL, AH
    OUT 42H, AL
    IN  AL, 61H
    MOV AH, AL
    OR  AL, 3
    OUT 61H, AL
L1: MOV CX, 6801
L2: LOOP    L2
    DEC BX
    JNZ L1
    MOV AL, AH
    OUT 61H, AL
    POP DI
    POP DX
    POP CX
    POP BX
    POP AX
    RET
SOUND   ENDP
MAIN    PROC
    MOV BX, 50
L3: MOV AH, 0
    INT 16H
    CMP AL, 'x'
    JE  EXIT
    CMP AL, 'q'
    JE  DO 
    CMP AL, 'w'
    JE  RE
    CMP AL, 'e'
    JE  MI
    CMP AL, 'r'
    JE  FA
    CMP AL, 't'
    JE  SOL
    CMP AL, 'y'
    JE  LA
    CMP AL, 'u'
    JE  CI
    CMP AL, 'm'
    JE  MEL
    JNZ L3
DO: MOV DI, 131
    CALL    SOUND
    JMP L3
RE: MOV DI, 147
    CALL    SOUND
    JMP L3
MI: MOV DI, 165
    CALL    SOUND
    JMP L3
FA: MOV DI, 175
    CALL    SOUND
    JMP L3
SOL:    MOV DI, 196
    CALL    SOUND
    JMP L3
LA: MOV DI, 220
    CALL    SOUND
    JMP L3
CI: MOV DI, 247
    CALL    SOUND
    JMP L3
EXIT:   MOV AH, 00H
    MOV AL, 03H
    INT 10H
    MOV AX, 4C00H
    INT 21H
    RET
MEL:    
 
L4: LOOP L4
    MOV DI, 147
    CALL    SOUND
    MOV DI, 147
    CALL    SOUND
    MOV DI, 147
    CALL    SOUND
    MOV DI, 196
    CALL    SOUND
    MOV DI, 196
    CALL    SOUND
    MOV DI, 175
    CALL    SOUND
    MOV DI, 165
    CALL    SOUND
    MOV DI, 220
    CALL    SOUND
    MOV DI, 220
    CALL    SOUND
    MOV DI, 196
    CALL    SOUND
    MOV DI, 147
    CALL    SOUND
    MOV DI, 147
    CALL    SOUND
    MOV DI, 147
    CALL    SOUND
    MOV DI, 147
    CALL    SOUND
    JMP L4
MAIN    ENDP
CODESG  ENDS
END MAIN
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.12.2015, 23:48
Ответы с готовыми решениями:

Как изменить мелодию, которую играет MediaPlayer?
Подскажите плз, как менять музыку? Там есть кнопка next, но она не работает, пробовал каждый раз...

кнопки play/pause ajax
Приветствую всех кто заглянул)) в общем суть проблемы, пишу плеер на html5 и ajax и нужно чтобы...

Имитация нажатий медиаклавиш Play Pause Stop и тд
Приветствую всех. Не могу реализовать имитацию нажатия VK_VOLUME_MUTE VK_VOLUME_DOWN...

Медиаплеер - не работают кнопки Stop, Play и Pause
Помогите пожалуйста с медиаплеером. Не работают кнопки Stop, Play и Pause, вернее они работают...

4
Модератор
Эксперт по электронике
8472 / 4331 / 1642
Регистрация: 01.02.2015
Сообщений: 13,440
Записей в блоге: 8
30.12.2015, 20:59 2
Вот если бы вы делали это на ЯВУ (Pascal, Basic, C), то мелодию (нота+длительность) хранили бы в массиве. А после паузы продолжили бы с того же индекса, на котором прервалось воспроизведение.
0
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
30.12.2015, 21:11 3
Цитата Сообщение от Annie Square Посмотреть сообщение
Какие нибудь идеи?
Ну только файл... И в файле в определенном поле запоминать позицию, с которой потом нужно продолжить.
Т.е. файл, в нем заголовок из байтов, которые описывают... Ну ту же позицию ноты, с которой нужно проигрыш начать (изначально она равна 0), а затем массив этих самых считываемых нот.
0
Эксперт быдлокодинга
2091 / 525 / 69
Регистрация: 04.11.2010
Сообщений: 1,310
30.12.2015, 22:22 4
Мне видится это дело так.
ПП SOUND начинается с проверки нажата ли клавиша
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
proc SOUND
 
        MOV AH,0BH
        INT 21H 
        CMP AL,0FFh
        JNE music       ; не нажата - музицировать
        MOV AH,1
        INT 21H
        CMP AL,'p'
        JNE music       ; нажата, но не пауза  музицировать
@@:
        MOV AH,1
        INT 21H
        CMP AL,'p'          
        JNE @R          ; не та нажата, ждать
 
music:  
    PUSH    AX
    PUSH    BX
    PUSH    CX
    PUSH    DX
    PUSH    DI
и т.д.
0
3406 / 1825 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
06.01.2016, 16:26 5
Цитата Сообщение от Annie Square Посмотреть сообщение
Я уже написала музыкальные ноты
Нескольно неправильно написали строки после:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
L4:
mov cx,countMas
xor si,si
L5: 
push    cx
mov di,dwMas[si]
    CALL    SOUND
add si,2
;
;тут обработка была ли нажата клавиша и какая
;если пауза, то цикл ожидания нужной клавиши
;
xor cx,cx
L6: loop    L6
    pop cx
    loop    L5
    JMP L4
В массиве dwMas хранится всё то, что Вы записывали в DI после метки L4.
Как-то так.

Добавлено через 3 минуты
Более правильный вариант:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
L4: loop L4
mov cx,countMas
xor si,si
L5: 
push    cx
mov di,dwMas[si]
    CALL    SOUND
add si,2
;
;тут обработка была ли нажата клавиша и какая
;если пауза, то цикл ожидания нужной клавиши
;
pop cx
    loop    L5
    JMP L4
0
06.01.2016, 16:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.01.2016, 16:26
Помогаю со студенческими работами здесь

Play, Stop, Pause, Resume, Reverse для Gif анимации на кнопке или в других объектах
Собственно в теме все указано. Не подскажете как это реализовать? Хочу сделать красивый...

Как сделать так чтобы в процедурах понимался этот массив- (s: Array[0.2] of string = ('Play','Stop','Pause');)
Вот даны процедуры: procedure TVideoRecorder.play; begin if (v_power = True) and (v_title =...

Как поменять мелодию по умолчанию на таймере в программе часы ?
В программе часы есть таймер, как поменять мелодию которая по умолчанию установлена ?

Составить программу с процедурами, которая исполнит мелодию “Два веселых гуся”
Составьте программу с процедурами, которая исполнит мелодию “Два веселых гуся”...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru