SELECT data_key, data_value
FROM xf_data_registry
WHERE data_key IN ('options', 'languages', 'contentTypes', 'codeEventListeners', 'deferredRun', 'simpleCache', 'addOns', 'defaultStyleProperties', 'routeFiltersIn', 'routeFiltersOut', 'routesPublic', 'nodeTypes', 'bannedIps', 'discouragedIps', 'styles', 'displayStyles', 'userBanners', 'smilies', 'bbCode', 'threadPrefixes', 'userTitleLadder', 'reportCounts', 'moderationCounts', 'userModerationCounts', 'notices', 'userFieldsInfo')
Run Time: 0.002216
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_data_registry | range | PRIMARY | PRIMARY | 27 | | 26 | Using where |
SELECT data_key, data_value
FROM xf_data_registry
WHERE data_key IN ('brListenerClasses', 'brBriviumAddOns')
Run Time: 0.000159
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_data_registry | range | PRIMARY | PRIMARY | 27 | | 2 | Using where |
SELECT *
FROM xf_brivium_addon
ORDER BY addon_id
Run Time: 0.000143
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_brivium_addon | index | | PRIMARY | 77 | | 1 | |
INSERT INTO xf_data_registry
(data_key, data_value)
VALUES
(?, ?)
ON DUPLICATE KEY UPDATE
data_value = VALUES(data_value)
Params: brBriviumAddOns, a:0:{}
Run Time: 0.000140
SELECT cache_value
FROM xf_permission_combination
WHERE permission_combination_id = ?
Params: 1
Run Time: 0.000142
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_permission_combination | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SELECT thread.*
,
user.gender, user.avatar_date, user.gravatar,
NULL AS thread_read_date,
0 AS thread_reply_banned,
0 AS thread_is_watched,
'' AS draft_message, NULL AS draft_extra
FROM xf_thread AS thread
LEFT JOIN xf_user AS user ON
(user.user_id = thread.user_id)
WHERE thread.thread_id = ?
Params: 358041
Run Time: 0.000456
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | thread | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | user | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SELECT node.*, forum.*
,
permission.cache_value AS node_permission_cache,
NULL AS forum_read_date
FROM xf_forum AS forum
INNER JOIN xf_node AS node ON (node.node_id = forum.node_id)
LEFT JOIN xf_permission_cache_content AS permission
ON (permission.permission_combination_id = 1
AND permission.content_type = 'node'
AND permission.content_id = forum.node_id)
WHERE node.node_id = ?
Params: 38
Run Time: 0.000351
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | forum | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | node | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | permission | const | PRIMARY | PRIMARY | 35 | const,const,const | 1 | |
SELECT post.*
,
thread.*, thread.user_id AS thread_user_id, thread.username AS thread_username,
thread.post_date AS thread_post_date,
post.user_id, post.username, post.post_date,
bb_code_parse_cache.parse_tree AS message_parsed, bb_code_parse_cache.cache_version AS message_cache_version,
user.*, IF(user.username IS NULL, post.username, user.username) AS username,
user_profile.*,
user_privacy.*,
signature_parse_cache.parse_tree AS signature_parsed, bb_code_parse_cache.cache_version AS signature_cache_version,
session_activity.view_date AS last_view_date,
0 AS like_date
FROM xf_post AS post
INNER JOIN xf_thread AS thread ON
(thread.thread_id = post.thread_id)
LEFT JOIN xf_bb_code_parse_cache AS bb_code_parse_cache ON
(bb_code_parse_cache.content_type = 'post' AND bb_code_parse_cache.content_id = post.post_id)
LEFT JOIN xf_user AS user ON
(user.user_id = post.user_id)
LEFT JOIN xf_user_profile AS user_profile ON
(user_profile.user_id = post.user_id)
LEFT JOIN xf_user_privacy AS user_privacy ON
(user_privacy.user_id = post.user_id)
LEFT JOIN xf_bb_code_parse_cache AS signature_parse_cache ON
(signature_parse_cache.content_type = 'signature' AND signature_parse_cache.content_id = post.user_id)
LEFT JOIN xf_session_activity AS session_activity ON
(post.user_id > 0 AND session_activity.user_id = post.user_id AND session_activity.unique_key = CAST(post.user_id AS BINARY))
WHERE (
(post.thread_id = ? AND (post.position >= 0 AND post.position < 10) )
)
AND (post.message_state IN ('visible'))
ORDER BY post.position ASC, post.post_date ASC
Params: 358041
Run Time: 0.003377
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | thread | const | PRIMARY | PRIMARY | 4 | const | 1 | Using filesort |
SIMPLE | post | ref | thread_id_post_date,thread_id_position | thread_id_post_date | 4 | const | 1 | Using index condition; Using where |
SIMPLE | bb_code_parse_cache | eq_ref | content_type_id | content_type_id | 31 | const,xenforo.cc.post.post_id | 1 | Using where |
SIMPLE | user | eq_ref | PRIMARY | PRIMARY | 4 | xenforo.cc.post.user_id | 1 | |
SIMPLE | user_profile | eq_ref | PRIMARY | PRIMARY | 4 | xenforo.cc.post.user_id | 1 | |
SIMPLE | user_privacy | eq_ref | PRIMARY | PRIMARY | 4 | xenforo.cc.post.user_id | 1 | |
SIMPLE | signature_parse_cache | eq_ref | content_type_id | content_type_id | 31 | const,xenforo.cc.post.user_id | 1 | Using where |
SIMPLE | session_activity | eq_ref | PRIMARY | PRIMARY | 22 | xenforo.cc.post.user_id,func | 1 | Using where |
INSERT INTO xf_thread_view
(thread_id)
VALUES
(?)
Params: 358041
Run Time: 0.000087
INSERT INTO `xf_session` (`session_id`, `session_data`, `expiry_date`) VALUES (?, ?, ?)
Params: ae772aac514c8277a64d84afd29b49db, , 1714905938
Run Time: 0.000869
INSERT INTO xf_session_activity
(user_id, unique_key, ip, controller_name, controller_action, view_state, params, view_date, robot_key)
VALUES
(?, ?, ?, ?, ?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE
ip = VALUES(ip),
controller_name = VALUES(controller_name),
controller_action = VALUES(controller_action),
view_state = VALUES(view_state),
params = VALUES(params),
view_date = VALUES(view_date),
robot_key = VALUES(robot_key)
Params: 0, , , XenForo_ControllerPublic_Thread, Index, valid, thread_id=358041, 1714902338,
Run Time: 0.000127
INSERT INTO xf_bb_code_parse_cache
(content_type, content_id, parse_tree, cache_version, cache_date)
VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE parse_tree = VALUES(parse_tree),
cache_version = VALUES(cache_version),
cache_date = VALUES(cache_date)
Params: post, 364676, a:7:{i:0;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:80:"https://pic1.zhimg.com/v2-906f237f0b6e684bb0db78e7a81b7e08_l.jpg?source=8673f162";}}i:1;s:91:" 沙雕调音师,现场调音/音乐混录/编曲/指弹吉他/不会唱歌/菜鸡一个 ";i:2;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:57:"https://www.zhihu.com/question/22696366/answer/1597160519";s:8:"original";a:2:{i:0;s:65:"[URL='https://www.zhihu.com/question/22696366/answer/1597160519']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:12:"阅读原文";}}i:3;s:5068:"
你可以做一个小游戏,你在地上画一个圈或者一条直线,然后沿着圈 / 线走,你是不会偏离轨道的,对吧?那现在我把你眼睛蒙上,你还能沿着圈 / 线走吗?你还能不偏离轨迹吗?你做不到,对吧?你只有眼睛看得见的时候才能沿着轨迹走,对吧?
我现在请你帮我画一幅简笔画,你是可以画出来的,最起码你能给我画个红色的太阳、绿色的小草,对吧?那现在我给你戴上墨镜,全方位无死角的,你没有办法用眼角的余光嫖到,你放眼望去全是黑白的,一点儿色彩都看不见,你还能画出简笔画来吗?你说不定能给我画一个绿色的太阳和红色的小草,对吧?
你只有在能看见的时候才能用眼睛完成事情,对吧?
音乐也是一样,你只有能听清伴奏和自己的声音的时候,你才能唱准、跟对节奏,如果你听不清自己的声音、听着是糊的,那你会跑调、跑节奏的。
而你现在不明白的就是,为什么你在台下可以听清楚声音,而歌手在台上听着是糊的,关于这个问题,我需要先向你科普一个知识。
啸叫,是现场演出中音响组面临的最大的敌人之一,如果你在现场演出中听到了一声尖锐的声音或者低沉的轰鸣,那就是啸叫了,不过当然,一个成熟的演出是不会让你听到啸叫的,一般在彩排的时候就已经解决了,如果你不知道啸叫是什么声音的话,去看一看现场演出的彩排,你就可以听到了。
啸叫,也叫声反馈,是指信号冲破了扩声系统的传声增益而引发的或尖锐或低沉的声音,众所周知,传声器,俗称话筒,是一种将声信号拾取并转换为电信号的换能装置;功率放大器,俗称功放,是一种将电信号放大的放大器;扬声器,俗称音箱,是一种将电信号转换为声信号并还放出去的装置,也就是说,从话筒拾取进来的信号,经由扩声系统的处理和放大之后,再由音箱还放出去,就已经被放大了,如果这个时候已经被放大的信号再次被话筒拾取进去,就又被放大了,然后还放出去之后再拾取,再放大,再拾取,再放大......如此不断往复,信号越来越大越来越大,每一套扩声系统都是有着自己的最大传声增益的,一旦这个信号的大小超过了这套扩声系统的传声增益,扩声系统难以承受这个信号的大小,就会引发啸叫。
理论上讲,声反馈是不可避免的,只要有话筒和音箱的存在,就一定会有声反馈,但并不是每一个声反馈都一定会触发啸叫,而调音师的职责之一就是尽量避免声反馈,并且将不可避免的声反馈控制在不会触发啸叫的地步。
那你想象一下,如果音箱在歌手后面会怎么样?话筒的振膜正对着音箱的纸盆,音箱的纸盆还放出来的信号 der 一下子就被话筒的振膜拾取了,der 一下子就啸叫了,那你就不用听什么现场演出了,你全程听啸叫就行了。
所以说,一般来说,为了让观众更好地听到声音,观众席都在音箱纸盆的正面;而为了避免啸叫,舞台一般在音箱的背面,而众所周知,高频有方向性,低频没有,所以高频是没有办法直接到歌手的耳朵里的,歌手在音箱背面听到了全是低频的嗡嗡声,而墙壁反射也是引起啸叫的原因之一,所以一般的厅堂墙壁都不会太光滑、形状都不会太规则,从音箱出去的声音经由墙壁的漫反射,且不说漫反射那么多次本身音量就小了,经过那么多次漫反射再回到舞台上的全是浑浊的声音,你耳朵里听到的不是低频的嗡嗡声就是浑浊的声音,既听不清自己唱的也听不清伴奏的声音,我把你放到台上,你能唱得来吗?
所以说,现场扩声系统中,除了服务于现场观众的主扩声(PA)系统(一般在观众席后面)之外,还有服务于演员的监听(Monitor)系统(一般在台侧)。
(PS:还有服务于电视机前的观众的转播(OB)系统,不过和题意无关,也就不做过多赘述)
Monitor 系统需要为歌手服务,让歌手在舞台上清晰地听到自己的声音和伴奏的声音,才能保证演出的成功。
而监听方式一般分为如下两种:
1.音箱监听:为舞台上的每一个乐手单独提供一个或一对监听音箱,并根据每个乐手的需求为每个乐手提供不同的监听信号,一般专门针对于个人监听而设计的音箱大多有着很强的指向性,只有正在正轴向才可以听清其发出的声音,一旦离开监听音响的覆盖范围就无法听到,并且对易啸叫的点都做了衰减处理,相较耳机监听而言,啸叫的风险更大一些,也没有耳机监听那么清晰,但可以获得很强的现场感,并且方便与观众互动,所以一般是音乐节用的比较多。
";i:4;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:83:"https://pic2.zhimg.com/v2-104ebd0c2474d3e735747df018f06d79_720w.jpg?source=8673f162";}}i:5;s:1953:"
2.耳机监听:为舞台上的歌手单独提供一个或一对监听耳机,根据歌手的需求为其提供监听信号,为防止歌手在舞台演出中监听耳机脱落,因此都做的比较牢固,相较于音箱监听而言,不益获得现场感,也不益于现场互动,但是啸叫的风险更低,听到的声音更清晰,所以一般是演唱会用的比较多。
所以说
为什么要用耳返?因为歌手在现场没有办法听清楚自己的声音和伴奏的声音,需要监听系统为自己提供清晰的监听信号;
耳返里都放的是什么?看歌手的需求,歌手想要什么,Monitor 调音师就给他发什么,不同的歌手对监听信号有着不同的要求;
为什么那么重要?就好像你蒙上眼镜无法走直线、戴上墨镜无法作画一样,你听不清楚自己的声音和伴奏的声音,你就会跑调、跑节奏,但是很不好意思,如果没有监听系统,歌手在台上就是听不清自己的声音。
之前《我是歌手》第三季的时候,郑淳元在舞台上不戴监听耳机,所有歌手都露出了震惊的表情,为什么?这就相当于一个人蒙上眼睛走直线、作画一样,他已经有了一个相当高的熟练度了,这是一件很值得人震惊的事情。
至于说为什么还总能看到有歌手唱到一半把耳返摘了还继续表演呢?有两种可能:
1.就好像调音师再戴着监听耳机调音的时候也会偶尔把耳机摘了听,为了听现场的真实声音,毕竟观众不可能和调音师一样戴着监听耳机看演出,调音师想要获得现场观众听到的声音,就要摘下耳机听一下现场声音;而歌手监听耳机戴久了,也需要摘下来听一下现场的声音。
2.监听耳机出故障,无法通过监听耳机获取监听信号,只能摘下监听耳机,退而求其次,通过监听音箱获取监听信号。
以上。
";i:6;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:39:"https://www.zhihu.com/question/22696366";s:8:"original";a:2:{i:0;s:47:"[URL='https://www.zhihu.com/question/22696366']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:12:"阅读原文";}}}, 1621686945, 1714902338
Run Time: 0.003991