1 /* GSequencer - Advanced GTK Sequencer
2  * Copyright (C) 2005-2021 Joël Krähemann
3  *
4  * This file is part of GSequencer.
5  *
6  * GSequencer is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * GSequencer is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with GSequencer.  If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #include <ags/vst3-capi/public.sdk/source/vst/ags_vst_bus.h>
21 
22 #include <public.sdk/source/vst/vstbus.h>
23 
24 extern "C" {
25 
26 #if 0
27   AgsVstBus* ags_vst_bus_new(AgsVstTChar *name, AgsVstBusType bus_type, gint32 flags)
28   {
29     return((AgsVstBus* ) new Steinberg::Vst::Bus());
30   }
31 #endif
32 
ags_vst_bus_delete(AgsVstBus * bus)33   void ags_vst_bus_delete(AgsVstBus *bus)
34   {
35     delete bus;
36   }
37 
ags_vst_bus_is_active(AgsVstBus * bus)38   gboolean ags_vst_bus_is_active(AgsVstBus *bus)
39   {
40     return(static_cast<gboolean>(static_cast<Steinberg::Vst::Bus*>((void *) bus)->isActive()));
41   }
42 
ags_vst_bus_set_active(AgsVstBus * bus,gboolean state)43   void ags_vst_bus_set_active(AgsVstBus *bus, gboolean state)
44   {
45     static_cast<Steinberg::Vst::Bus*>((void *) bus)->setActive(static_cast<Steinberg::TBool>(state));
46   }
47 
ags_vst_bus_set_name(AgsVstBus * bus,AgsVstString new_name)48   void ags_vst_bus_set_name(AgsVstBus *bus, AgsVstString new_name)
49   {
50     static_cast<Steinberg::Vst::Bus*>((void *) bus)->setName(static_cast<Steinberg::String>((gchar *) new_name));
51   }
52 
ags_vst_bus_set_bus_type(AgsVstBus * bus,AgsVstBusType new_bus_type)53   void ags_vst_bus_set_bus_type(AgsVstBus *bus, AgsVstBusType new_bus_type)
54   {
55     static_cast<Steinberg::Vst::Bus*>((void *) bus)->setBusType(static_cast<Steinberg::Vst::BusType>(new_bus_type));
56   }
57 
ags_vst_bus_set_flags(AgsVstBus * bus,guint32 new_flags)58   void ags_vst_bus_set_flags(AgsVstBus *bus, guint32 new_flags)
59   {
60     static_cast<Steinberg::Vst::Bus*>((void *) bus)->setFlags(new_flags);
61   }
62 
ags_vst_bus_get_info(AgsVstBus * bus,AgsVstBusInfo * info)63   gboolean ags_vst_bus_get_info(AgsVstBus *bus, AgsVstBusInfo *info)
64   {
65     Steinberg::Vst::BusInfo *tmp_info_0 = static_cast<Steinberg::Vst::BusInfo*>((void *) info);
66     const Steinberg::Vst::BusInfo& tmp_info_1 = const_cast<Steinberg::Vst::BusInfo&>(tmp_info_0[0]);
67 
68     return(static_cast<gboolean>(static_cast<Steinberg::Vst::Bus*>((void *) bus)->getInfo(const_cast<Steinberg::Vst::BusInfo&>(tmp_info_1))));
69   }
70 
ags_vst_event_bus_new(AgsVstTChar * name,AgsVstBusType bus_type,gint32 flags,gint32 channel_count)71   AgsVstEventBus* ags_vst_event_bus_new(AgsVstTChar *name, AgsVstBusType bus_type, gint32 flags, gint32 channel_count)
72   {
73     return((AgsVstEventBus *) new Steinberg::Vst::EventBus((char16_t *) name, static_cast<Steinberg::Vst::BusType>(bus_type), flags, channel_count));
74   }
75 
ags_vst_event_bus_delete(AgsVstEventBus * event_bus)76   void ags_vst_event_bus_delete(AgsVstEventBus *event_bus)
77   {
78     delete event_bus;
79   }
80 
ags_vst_event_bus_get_info(AgsVstEventBus * event_bus,AgsVstBusInfo * info)81   gboolean ags_vst_event_bus_get_info(AgsVstEventBus *event_bus, AgsVstBusInfo *info)
82   {
83     Steinberg::Vst::BusInfo *tmp_info_0 = static_cast<Steinberg::Vst::BusInfo*>((void *) info);
84     const Steinberg::Vst::BusInfo& tmp_info_1 = const_cast<Steinberg::Vst::BusInfo&>(tmp_info_0[0]);
85 
86     return(static_cast<gboolean>(static_cast<Steinberg::Vst::EventBus*>((void *) event_bus)->getInfo(const_cast<Steinberg::Vst::BusInfo&>(tmp_info_1))));
87   }
88 
ags_vst_audio_bus_new(AgsVstTChar * name,AgsVstBusType bus_type,gint32 flags,AgsVstSpeakerArrangement arr)89   AgsVstAudioBus* ags_vst_audio_bus_new(AgsVstTChar *name, AgsVstBusType bus_type, gint32 flags, AgsVstSpeakerArrangement arr)
90   {
91     return((AgsVstAudioBus *) new Steinberg::Vst::AudioBus((char16_t *) name, static_cast<Steinberg::Vst::BusType>(bus_type), flags, arr));
92   }
93 
ags_vst_audio_bus_delete(AgsVstAudioBus * audio_bus)94   void ags_vst_audio_bus_delete(AgsVstAudioBus *audio_bus)
95   {
96     delete audio_bus;
97   }
98 
ags_vst_audio_bus_get_arrangement(AgsVstAudioBus * audio_bus)99   AgsVstSpeakerArrangement ags_vst_audio_bus_get_arrangement(AgsVstAudioBus *audio_bus)
100   {
101     return((AgsVstSpeakerArrangement) static_cast<Steinberg::Vst::AudioBus*>((void *) audio_bus)->getArrangement());
102   }
103 
ags_vst_audio_bus_set_arrangement(AgsVstAudioBus * audio_bus,AgsVstSpeakerArrangement arr)104   void ags_vst_audio_bus_set_arrangement(AgsVstAudioBus *audio_bus, AgsVstSpeakerArrangement arr)
105   {
106     static_cast<Steinberg::Vst::AudioBus*>((void *) audio_bus)->setArrangement(static_cast<Steinberg::Vst::SpeakerArrangement>(arr));
107   }
108 
ags_vst_audio_bus_get_info(AgsVstAudioBus * audio_bus,AgsVstBusInfo * info)109   gboolean ags_vst_audio_bus_get_info(AgsVstAudioBus *audio_bus, AgsVstBusInfo *info)
110   {
111     Steinberg::Vst::BusInfo *tmp_info_0 = static_cast<Steinberg::Vst::BusInfo*>((void *) info);
112     const Steinberg::Vst::BusInfo& tmp_info_1 = const_cast<Steinberg::Vst::BusInfo&>(tmp_info_0[0]);
113 
114     return(static_cast<gboolean>(static_cast<Steinberg::Vst::AudioBus*>((void *) audio_bus)->getInfo(const_cast<Steinberg::Vst::BusInfo&>(tmp_info_1))));
115   }
116 
ags_vst_bus_list_new(AgsVstMediaType type,AgsVstBusDirection dir)117   AgsVstBusList* ags_vst_bus_list_new(AgsVstMediaType type, AgsVstBusDirection dir)
118   {
119     return((AgsVstBusList *) new Steinberg::Vst::BusList(type, dir));
120   }
121 
ags_vst_bus_list_delete(AgsVstBusList * bus_list)122   void ags_vst_bus_list_delete(AgsVstBusList *bus_list)
123   {
124     delete bus_list;
125   }
126 
ags_vst_bus_list_get_type(AgsVstBusList * bus_list)127   AgsVstMediaType ags_vst_bus_list_get_type(AgsVstBusList *bus_list)
128   {
129     return(static_cast<Steinberg::Vst::BusList*>((void *) bus_list)->getType());
130   }
131 
ags_vst_bus_list_get_direction(AgsVstBusList * bus_list)132   AgsVstBusDirection ags_vst_bus_list_get_direction(AgsVstBusList *bus_list)
133   {
134     return(static_cast<Steinberg::Vst::BusList*>((void *) bus_list)->getDirection());
135   }
136 
137 }
138