purebasic.info
http://purebasic.info/phpBB3ex/

BitBox
http://purebasic.info/phpBB3ex/viewtopic.php?f=10&t=3711
Страница 1 из 5

Автор:  cherri123 [ Вт мар 04, 2014 10:39 am ]
Заголовок сообщения:  BitBox

Программка немного сырая 8) . Похожая на ФрутиЛуповскую бит панель. :twisted:
Из того что не работает как должно, так это проигрывание. Т.е. если запустил остановить невозможно )). Все GUI элементы кликабельны. ПМ -увеличить на 1 и ЛМ соответственно уменьшить
"+" - добавить
"120" - непосредственно темп в BPM
"1" - количество четвертей
А в остальном я думаю сообразите.
Выкладываю только исходник.
Нужны Wave ваншоты!!!

Вложения:
Комментарий к файлу: Нужны Wave файлы
BitBox2_.pb [37.77 KiB]
Скачиваний: 470

Автор:  MrF [ Вт мар 04, 2014 7:52 pm ]
Заголовок сообщения:  Re: BitBox

Поправь, чтобы индикатор сверху бегал всегда, а не только на нечетном темпе, ибо так не реагирует на выставленный паттерн, а только долбит по первой ноте.
И еще, выбираем сэмпл для первой дорожки, потом для второй, добавляем еще несколько пустых дорожек, потом пробуем заменить сэмпл на первой дорожке - а он меняется на последней.
Ну и громкость для каждой дорожки не помешает.

Автор:  cherri123 [ Ср мар 05, 2014 9:37 am ]
Заголовок сообщения:  Re: BitBox

MrF писал(а):
Поправь, чтобы индикатор сверху бегал всегда, а не только на нечетном темпе, ибо так не реагирует на выставленный паттерн, а только долбит по первой ноте.
И еще, выбираем сэмпл для первой дорожки, потом для второй, добавляем еще несколько пустых дорожек, потом пробуем заменить сэмпл на первой дорожке - а он меняется на последней.
Ну и громкость для каждой дорожки не помешает.


Спс за тест.
Фишки громкость и панораму добавлю, плюс баг с заменой семплов и индикатором исправлю. :wink:

Я вот немного не догоняю по поводу потоков. В коде присутствует 2 цикла: один основной который управляет непосредственно GUI, а другой запускается через поток, который в свою очередь как бы является таймером (делает приращение через определенный промежуток времени).
Может у кого есть идеи как реализовать функцию PLAY, по скольку если удалять поток то новый не работает или если поток таймера ставить на паузу то вся прога останавливается и ждет...
Что делать? :(

Автор:  MrF [ Ср мар 05, 2014 11:07 am ]
Заголовок сообщения:  Re: BitBox

cherri123 писал(а):
Что делать?

Можно так
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Select GadgetBox()\on
                Case 0
                 Debug "STOP"
                  If IsThread(TTImer)
                    ;KillThread(TTImer)
                    ;QuitThread()
                    PlayStatus=0
                    PauseThread(TTImer)
 
                    Redraw()
                  EndIf
                 
                Case 1
                  If IsThread(TTImer)
                  ResumeThread(TTImer)
                  EndIf
                 
                  Debug "PLAY"
                 ; PlayStatus=1
                  Redraw()
                  TTImer=CreateThread(@Thread_Timer_Start(),0)
                  Debug "TTImer >"+Str(TTImer)
              EndSelect



А midi еще не доделаны?

Кстати, посмотри вот эти темы
Выбор ASIO девайса - http://www.purebasic.fr/english/viewtop ... 40&t=56135
А тут есть какая-то программа тоже с ASIO, но у меня почему-то не захотела работать http://www.purebasic.fr/english/viewtop ... 40&t=56584

Автор:  cherri123 [ Ср мар 05, 2014 1:03 pm ]
Заголовок сообщения:  Re: BitBox

спс за подсказку допилил теперь работает корректно :wink:
Код:
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
Debug "[press buton]"
              GadgetBox()\on=GadgetBox()\on!1
              Select GadgetBox()\on
                Case 0
                 Debug "STOP"
                  If IsThread(TTImer)
                    ;KillThread(TTImer)
                    ;QuitThread()
                    PlayStatus=0
                    PauseThread(TTImer)
 
                    Redraw()
                  EndIf
                 
                Case 1
                  CopyList(Track(),PlayTrack())
                  If IsThread(TTImer)
                    ResumeThread(TTImer)
                  Else
                    TTImer=CreateThread(@Thread_Timer_Start(),0)
                    Debug "TTImer >"+Str(TTImer)
                  EndIf
                 
                  Debug "PLAY"
                 ; PlayStatus=1
                  Redraw()
                 
              EndSelect


с миди тоже код есть :twisted: допилю и выложу здесь
спс за ссылки.

Автор:  cherri123 [ Чт мар 06, 2014 7:17 am ]
Заголовок сообщения:  Re: BitBox

добавил миди

При выборе вида выбрать миди
Чтобы открыть миди редактор щелкаем на поле
ЛКМ добавить ноту согласно масштабу
ПКМ удалить
Колесико изменение масштаба

Не могу реализовать закрытие редактора без закрытия основного окна :(

Вложения:
BitBox2.pb [65.5 KiB]
Скачиваний: 438

Автор:  MrF [ Чт мар 06, 2014 8:57 am ]
Заголовок сообщения:  Re: BitBox

Прикольно :)
Только со скоростью какой-то косяк - ставлю одну четверть, выставляю ноты - нормальная скорость, добавляю еще одну четверть, добавляю ноты - уже медленнее.

Автор:  cherri123 [ Чт мар 06, 2014 9:04 am ]
Заголовок сообщения:  Re: BitBox

MrF писал(а):
Прикольно :)
Только со скоростью какой-то косяк - ставлю одну четверть, выставляю ноты - нормальная скорость, добавляю еще одну четверть, добавляю ноты - уже медленнее.


Сам не знаю в чем причина. Но скорость становить нормальной если основное окно не поверх других, т.е. визуально спрятано :wink: . Как выявить что косячит пока не могу :(

Автор:  MrF [ Чт мар 06, 2014 12:00 pm ]
Заголовок сообщения:  Re: BitBox

cherri123 писал(а):
Не могу реализовать закрытие редактора без закрытия основного окна

Ты как-то не так там закрытие обрабатываешь. Вместо этого
Код:
1
Until GetActiveWindow()=#Window_0 And Event = #PB_Event_CloseWindow 


И то что выше этого, лучше так сделать
Код:
1
2
3
4
5
6
7
8
9
10
 Select Event
  Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        Break
      ElseIf  EventWindow = #Window_midi
      CloseWindow(#Window_midi)
  EndIf
   EndSelect
 ForEver



И CreateGadgetList можно удалить, он уже не используется пуриком.

И да, логичнее было бы сделать размер сетки пианорола, который стоит по умолчанию, не для 4 четвертей, а для одной. Ну еще можно сетку раскрасить - каждый четвертый столбик в немного другой цвет, так же и для wav.

Автор:  cherri123 [ Пн мар 10, 2014 5:26 pm ]
Заголовок сообщения:  Re: BitBox

cherri123 писал(а):
MrF писал(а):
Прикольно :)
Только со скоростью какой-то косяк - ставлю одну четверть, выставляю ноты - нормальная скорость, добавляю еще одну четверть, добавляю ноты - уже медленнее.


Сам не знаю в чем причина. Но скорость становить нормальной если основное окно не поверх других, т.е. визуально спрятано :wink: . Как выявить что косячит пока не могу :(


Нашел причину. Связано это с отрисовкой указателя положения проигрывания. Если убрать то все раборает как нужно.

Автор:  cherri123 [ Пт авг 22, 2014 1:25 pm ]
Заголовок сообщения:  Re: BitBox

Можно считать что это последняя версия... :(

Вложения:
Комментарий к файлу: новая версия Wave + Midi
BitBox2_1.pb [120.17 KiB]
Скачиваний: 430

Автор:  MrF [ Пт авг 22, 2014 11:57 pm ]
Заголовок сообщения:  Re: BitBox

cherri123 писал(а):
Можно считать что это последняя версия

А что так?
Конечно, писать полноценную DAW одному это слишком долго, тут лучше командой. Но если совсем решил забросить, то выложи у буржуев, может там кто-нибудь захочет развить.

Автор:  Сергейчик [ Сб авг 23, 2014 12:10 am ]
Заголовок сообщения:  Re: BitBox

Этот код
Код:
1
2
3
  If g_event=#Frame3D_0
    CanvasCallBack(EventType)
  EndIf


Замени этим
Чтобы колёсико работало на скорость и прочее.
Код:
1
2
3
4
5
6
7
If Event=13100;#PB_Event_Gadget;если событие кнопок
   Gadget=EventGadget()
      Select Gadget
        Case #Frame3D_0;0
         CanvasCallBack(EventType)
      EndSelect
  EndIf


Автор:  cherri123 [ Пн авг 25, 2014 9:17 am ]
Заголовок сообщения:  Re: BitBox

MrF писал(а):
cherri123 писал(а):
Можно считать что это последняя версия

А что так?
Конечно, писать полноценную DAW одному это слишком долго, тут лучше командой. Но если совсем решил забросить, то выложи у буржуев, может там кто-нибудь захочет развить.

Полноценная и ненужна, а так для старта практически все есть...Дело в том, что пределываю GUI и принципы обращения к элементам. На данный момент все работает достаточно быстро (т.е. определения элементов и объектов)...
Правда есть загвоздка никак не разберусь с DirectSound и ASIO :( ...Без этих вещей дальше не будет смысла что либо делать.

Автор:  cherri123 [ Пн авг 25, 2014 10:32 am ]
Заголовок сообщения:  Re: BitBox

Сергейчик писал(а):
Этот код
Код:
1
2
3
  If g_event=#Frame3D_0
    CanvasCallBack(EventType)
  EndIf


Замени этим
Чтобы колёсико работало на скорость и прочее.
Код:
1
2
3
4
5
6
7
If Event=13100;#PB_Event_Gadget;если событие кнопок
   Gadget=EventGadget()
      Select Gadget
        Case #Frame3D_0;0
         CanvasCallBack(EventType)
      EndSelect
  EndIf



Не вижу смысла...все ненужное отсекается в CanvasCallBack(EventType)

Страница 1 из 5 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/